Установка промежуточного (interim) патча для Oracle 12c
Между выходами patch set регулярно выходят промежуточные (interim) патчи. Они не имеют графического инсталлятора и устанавливаются с помощью утилиты OPatch.
Инструкция по установке патча входит в дистрибутив самого патча, обычно это файл README.html.
ВНИМАТЕ! Эта документация описывает общий порядок установки промежуточных патчей. Но каждый патч может иметь свои особенности, поэтому нужно обязательно ознакомиться с README.html.
Порядок установки промежуточного патча для СУБД Oracle на примере установки патча 12.1.0.2.1 на базовый релиз 12.1.0.2.0:
1). Обновление утилиты OPatch
Для обновления рекомендуется использовать самую последнюю версию OPatch (patch 6880880). Версия OPatch не должна быть ниже 12.1.0.1.6. Чтобы обновить утилиту OPatch необходимо:
1. Скачать с My Oracle Support (MOS) патч 6880880 для OPatch.
2. Проверить какая версия OPatch уже установлена (обновление может и не потребоваться). Запустить CMD. Нажать сочетание Win-R, ввести cmd и нажать Enter. Выполнить следующие команды:
C:\> set ORACLE_HOME=c:\app\oracle\product\12.1.0\dbhome_1
C:\> cd %ORACLE_HOME%\OPatch
C:\app\admin\product\11.2.0\dbhome_1\OPatch> opatch lsinventory
C:\app\admin\product\11.2.0\dbhome_1\OPatch> cd ..
В результате будет выведена информация о версии OPatch. (В примере видно, что OPatch требует обновления).
3. Сохранить или удалить старую версию OPatch. Для сохранения достаточно переименовать папку на сервере:
c:\app\oracle\product\12.1.0\dbhome_1\OPatch
в папку:
c:\app\oracle\product\12.1.0\dbhome_1\OPatch_old.
4. Из скачанного архива, распаковать папку OPatch в папку %ORACLE_HOME%.
5. Ещё раз проверить версию OPatch (что она изменилась, т.е. обновление прошло).
2). Действия, выполняемые перед установкой патча
1. Сделать резервную копию БД (для случая когда БД уже есть). Если делается «горячее» резервирование , то оно делается до остановки сервисов (см.п.2). Если делается «холодное» резервирование, то оно делается после остановки сервисов (см.п.2).
2. Остановить все службы Oracle и службу Distributed Transaction Coordinator (Координатор распределенных транзакций).
3. Сделать резервную копию всего ПО Oracle.
— Все папки %ORACLE_HOME%
— Папку C:\Program Files\Oracle
— Папку C:\Program Files(x86)\Oracle
— Ветки реестра
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE
— Переменную окружения PATH
3). Установка патч с помощью Opatch
Версия OPatch не должна быть ниже 12.1.0.1.6.
1. Скачать архив промежуточного патча. Обычно внутри этого архива, содержится папка с номером патча, например для 12.1.0.2.1 это – 19720843. Эту папку нужно разархивировать куда-нибудь на диск. Например, c:\TEMP\ora\19720843.
2. Запустить CMD. Нажать сочетание Win-R, ввести cmd и нажать Enter. Выполнить следующие команды:
C:\> cd c:\TEMP\ora\19720843
c:\TEMP\ora\19720843> set ORACLE_HOME=c:\app\oracle\product\12.1.0\dbhome_1
c:\TEMP\ora\19720843> set path=c:\app\oracle\product\12.1.0\dbhome_1\OPatch;%path%
c:\TEMP\ora\19720843> opatch apply
3. Начнётся установка патча. В процессе установки последовательно будет задано три вопроса (ответить соответственно: Enter, Y, y). Последняя строка должна быть
OPatch succeeded.
4. Для проверки установленного патча выполнить следующую команду:
c:\TEMP\ora\19720843> opatch lsinventory
В выводе должны быть следующие строки:
Interim patches (1) :
Patch 19720843 : applied on Fri Feb 06 17:27:48 MSK 2015
Unique Patch ID: 18482343
Patch description: «WINDOWS DB BUNDLE PATCH 12.1.0.2.1(64bit):19720843»
4). Установка патча на базу данных
ВНИМАНИЕ! Обновление БД делается только если БД была создана ДО установки патча. Если БД будет создаваться после установки патча, то её обновлять не нужно.
Для того чтобы обновить БД нужно выполнить утилиту datapatch.
1. Запустить все службы Oracle.
2. Перевести все базы в состояние open. Запустить CMD. Нажать сочетание Win-R, ввести cmd и нажать Enter. Выполнить следующие команды:
2.1 Для Single Tenant (non-CDB/PDB) баз
C:\> sqlplus /nolog
SQL> CONNECT sys/sys@basa1 AS SYSDBA
SQL> STARTUP
SQL> QUIT
2.2 Для Multitenant (CDB/PDB) баз
C:\> sqlplus /nolog
SQL> CONNECT sys/sys@basa1 AS SYSDBA
SQL> STARTUP
SQL> alter pluggable database all open;
SQL> QUIT
3. Запустить утилиту datapatch. Для этого — Запустить CMD. Нажать сочетание Win-R, ввести cmd и нажать Enter. Выполнить следующие команды:
C:\> cd %ORACLE_HOME%/OPatch
c:\app\oracle\product\12.1.0\dbhome_1\OPatch>datapatch -verbose
————— СТАТЬЮ НУЖНО ДОПИСАТЬ. НУЖЕН СКРИНШОТ —————-
The datapatch utility will then run the necessary apply scripts to load the modified SQL files into the database. An entry will be added to the dba_registry_sqlpatch view reflecting the patch application.
3.Check the following log files in %ORACLE_HOME%/sqlpatch/19648840/ for errors:
19648840_apply_<database SID>_<CDB name>_<timestamp>.log
where database SID is the database SID, CDB name is the name of the multitenant container database, and timestamp is of the form YYYYMMMDD_HH_MM_SS.
In addition, you can check the log files for catbundle in %ORACLE_HOME%/cfgtoollogs/catbundle or %ORACLE_BASE%/cfgtoollogs/catbundle for any errors:
catbundle_PSU_<database SID>_APPLY_<TIMESTAMP>.log
catbundle_PSU_<database SID>_GENERATE_<TIMESTAMP>.log
where TIMESTAMP is of the form YYYYMMMDD_HH_MM_SS.
3. Выполнить в sqlplus:
SQL> CONNECT sys/sys@basa1 AS SYSDBA
SQL> STARTUP
SQL> @catwinbundle.sql
SQL> QUIT
4. После выполнения catwinbundle.sql нужно проверить лог-файлы на предмет наличия ошибок. Лог-файл находятся в папке %ORACLE_BASE%/cfgtoollogs/catbundle и обычно имеют вид
catbundle_WINBUNDLE_<database SID>_APPLY_<TIMESTAMP>.log catbundle_WINBUNDLE_<database SID>_GENERATE_<TIMESTAMP>.log
Можно просто поискать в этих файлах фразу «ora-«. Скорее всего, найдутся некоторые ошибки. Нужно проверить, можно ли проигнорировать их. В readme.html в Section 4, «Known Issues» есть список ошибок «ORA-» которые могут возникнуть при выполнении обновления БД, но которые можно проигнорировать. Если ошибка есть в этом списке — то её просто игнорируем и ничего с ней не делаем.
5. После выполнения catwinbundle.sql базу нужно проверить на инвалидные объекты. Нужно выполнить запрос:
SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = ‘INVALID’;
6. Для перекомпиляции инвалидных объектов — запустить CMD (команда «Пуск – Выполнить» – набрать в командной строке cmd и нажать «Enter») и выполнить следующие команды:
C:\> cd %ORACLE_HOME%\RDBMS\ADMIN
C:\app\admin\product\11.2.0\dbhome_1\RDBMS\ADMIN> sqlplus.exe /nolog
7. Выполнить в sqlplus:
SQL> conn sys/sys@basa1 as sysdba
SQL> @utlrp.sql
Патч установлен.