Oracle DB: Установка патчей

Материал из sysadm
Перейти к навигации Перейти к поиску

Обзор

Ссылки по теме:

Листинг патчей

Старая модель обновления

  • Critical Patch Udate (CPU) - выпускается ежеквартально, содержит только исправления безопасности
  • Patch Set Updates (PSU) - выпускается ежеквартально, содержит исправления безопасности и регрессивные исправления, например BUG фиксы
  • Proactive Bundle Patches (BP) - выпускается ежеквартально, включает PSU, а также исправления оптимизации, функциональные исправления и иногда функциональные расширения
https://www.codetd.com/en/article/12739657
11.2.0.4
p31537677_112040_Linux-x86-64_DB  (PSU 2020-10)
Opatch_11.2.0.3.27

Схема обновления

   Base Release       Base Releas         Base Release    
       |                  |                       |
      BP1               PSU1                     PSU1
       |                  |                       |
      BP2               PSU2               BP2 ---+
       |                  |                 |
      ...                ...               ...

В любой момент можно переключиться с BP на PSU или наоборот.

PSU и BP - являются комулятивными, т.е. включают все исправления предыдущих выпусков своего типа.

Новая модель обновления (начиная с 12.2.0.1), для платформы Windows сохраняется старая модель обновления с использованием BP

  • Release Updates (RU) - выпускается ежеквартально, включает исправления всех типов, исправления безопасности, регрессивные исправления, исправления оптимизации, функциональные исправления и расширения
  • Release Update Revisions (RUR) - выпускается ежеквартально, содержит все исправления базового RU, плюс все новые исправления двух типов: исправления безопасности и регрессивные исправления. От базового RU выходит не более двух RUR.

RU очень похож на BP и также является комулятивным.

RUR2(на базе RU1) будет содержать тот же набор исправлений безопасности и регрессивных исправлений, что и RU3.

Схема обновления

Base Releas
    |
   RU1 - (RU1)RUR1 - (RU1)RUR2
    |
   RU2 - (RU2)RUR1 - (RU2)RUR2
    |
   ...

Возможные последовательности обновлений

  • RU1, RU2, RU3, ...
  • RU1, RUR1(RU1), RU3, RUR1(RU3), ...
  • RU1, RUR1(RU1), RUR2(RU1), RU4, RUR1(RU4), RUR2(RU4), RU7, ...

Таким образом, новая модель обновления не позволяет отложить функциональные исправления больше чем на полгода.

Установка патча

Каждый патч содержит файл README.html в котором даны подробные инструкции по установке данного патча.

Обычно процесс установки выглядит так:

Шаг 1, проверка версии opatch

opatch version

Если версия opatch ниже той что указана в требованиях патча (файл readme), то обновляем opatch.

Обновление OPatch это распаковка архива новой версии в каталог содержащий подкаталог OPatch, по умолчанию это $ORACLE_HOME.

unzip -o p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME

Шаг 2, предварительные проверки

В переменной $PATH должен быть путь к утилитам make, ar, ld, nm, для Oracle Linux это /usr/bin

echo $PATH

Проверка на конфликты патчей

unzip <файл_архива_патча.zip>
cd <каталог_номер_патча>
opatch prereq CheckConflictAgainstOHWithDetail -ph ./

# ожидаемый результат
 Prereq "checkConflictAgainstOHWithDetail" passed.
 OPatch succeeded.

Если обнаружены конфликты, то необходимо откатить проблемные патчи до установки данного патча.

Шаг 3, установка патча

# остановите инстанцию, если она запущена
# из каталога патча выполните
opatch apply

Шаг 4, обновление базы

# запустите базу
sqlplus / as sysdba
startup
-- убедитесь что база открыта
select instance_name,status,logins from v$instance;

-- если база контейнерная, то откройте все контейнеры
alter pluggable database all open;

-- убедитесь что все рабочие контейнеры открыты в режиме READ/WRITE
show pdbs;

quit

# обновите базу
cd $ORACLE_HOME/OPatch
./datapatch -verbose

# последнем этапе выполняется автоматическая проверка логов
# Validating logfiles...done
# убедитесь, что напротив каждого лог-файла есть метка (no errors)
# если есть ошибки, то смотрите соответствующий лог-файл.

# перекомпилируйте инвалидные объекты
cd $ORACLE_HOME/rdbms/admin
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql

Шаг 5, обновление rman каталога

Если каталог (репозиторий) rman находится в специальной базе (не в локальных контрольных файлах), то необходимо обновить этот каталог.

rman catalog username/password@alias
UPGRADE CATALOG;
# выполнить повторно, необходимо для подтверждения
UPGRADE CATALOG;
EXIT;

Откат патча

  1. остановите все инстанции Oracle
  2. откатите патчи
cd $ORACLE_HOME/OPatch
opatch rollback -id <patch_number>