14 июл. 2011 г.

Combo patches

Начиная с версии 11.2.0.2.0 Oracle начал предоставлять так называемые combo-патчи, которые содержат как online-патч, так и offline-патч для исправления определённого бага.

Online патч - это патч, который устанавливается, пока экземпляр БД находится в запущенном состоянии. Таким образом online-патч, модифицирует образ Oracle в памяти (т.е. экземпляр), при этом сами бинарные файлы не модифицируются!

Установка патча в online рекомендуется для того, чтобы избежать лишней остановки работы пользователей БД (тем самым уменьшая unplanned downtime).

Устанавливаетя combo-патч в online c помощью следующего вызова утилиты opatch:
opatch apply online -connectString SID:USERNAME:PASSWORD
или в случае c RAC:
opatch apply online -connectString SID:USERNAME:PASSWORD:NODE1,SID2:USERNAME:PASSWORD:NODE2,...


Обрати внимание что при установке патча в online нужно указывать экземпляр, так в
общем случае нужно знать на какой из них накатывать патч !

Как обычно, команда
opatch lsinventory
отображает информацию о установленных патчах в том числе и об online-патчах.

После установки online-патча файлы .pch (это бинарный файл online патча - представляет из себя специальную разделяемую библиотеку) находятся в каталоге $ORACLE_HOME/hpatch/ .
Информация о том, какие online патчи установлены для экземпляра, содержится в файле
$ORACLE_HOME/hpatch/orapatch$ORACLE_SID.cfg
После перезагрузки экземпляра все online-патчи, описанные в этом файле, снова применяются к экземпляру.

Откатывается online-патч также на лету (без останова экземпляра):
opatch rollback -id PATCHID -connectString SID:USERNAME:PASSWORD 
или в случае c RAC:
opatch rollback -id PATCHID -connectString SID:USERNAME:PASSWORD:NODE1,SID2:USERNAME:PASSWORD:NODE2, ... 

Online-патчи увеличивают объём используемой памяти PGA, что в конечном счёте также влияет и на скорость запуска процессов.
Расчитать требуемый дополнительный объём оперативной памяти можно по этой формуле:
memory overhead = ( # of processes +1) x size of ( .pch file)

Offline-патчи - это обычные, хорошо знакомые вам патчи, которые требует останова экземплыра и пересборки (relink) RDBMS.

Поскольку Online-патчи имеют накладные расходы на использования памяти, следует в ближайшее удобное для downtime время, откатить-online патч и накатить offline-патч.

Ещё одно из применение online патчей - когда администратору БД необходимо быстро выполнить на тестовом окружении проверку, решает ли данный патч возникшую проблему или нет. Быстро, без перезагрузки тестового экземпляра и без долгого ожидания перелинковки бинарников, как это происходит при накате обычных offline-патчей.

Демонстрацию установки патчей в online можно посмотреть здесь.
Демонстрация выполнена на примере патча 9620994 (это combo-патч), необходимого для установки 1С на 11.2.0.2

Обновление бинарного приложения на лету - феноменально сложная задача. И то что это было сделано для такого сложного приложения как Oracle RDBMS, по-моему просто фантастика !

2 комментария:

  1. А если у меня в ORACLE_HOME две базы, одну я пропатчил в онлайн, а вторую не трогал, то при перезагрузке второй, у меня патч применится?

    ОтветитьУдалить
  2. Вы невнимательно читали пост
    При накате патча вы указываете к какому именно экземпляру он применяется:

    opatch apply online -connectString SID:USERNAME:PASSWORD

    Соответственно в файле orapatch$ORACLE_SID.cfg будет содеражатся список online-патчей примененных к конкрентному экземпляру!

    ОтветитьУдалить