シングルインスタンスのデータベースとは手順の異なるRACのパッチ適用についていろいろ実験してみる。
前提条件
19c の Grid Infrastructure(GI)環境を想定。DBソフトウェアもインストール済み。
パッチ適用の準備
DBのパッチ適用と同様、OPatchユーティリティをReadmeに記載されている以上のバージョンに置き換えておく。使用するOPatchはDBのものと同じ。
ちなみに、GI側はORACLE_HOMEがrootの所有になっているので、gridユーザでは置き換えができない。rootで置き換えた後に所有者をgrid:oinstallに変更する。
/tmp に OPatchがあると想定した場合の例は以下。
GI側(rootで実行)
# mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_org
# unzip -d $ORACLE_HOME /tmp/p6880880_190000_Linux-x86-64.zip
# chown -R grid:oinstall $ORACLE_HOME/OPatch
DB側(oracleユーザで実行)
$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_org
$ unzip -d $ORACLE_HOME /tmp/p6880880_190000_Linux-x86-64.zip
適用対象のパッチも任意のディレクトリに展開しておく。
$ unzip p34130714_190000_Linux-x86-64.zip
ローリング適用
普通はこの方法で行う。RACを構成するすべてのノードを起動したままパッチ適用を開始する。
パッチ適用中のノード以外は通常通り稼働したまま(ダウンタイム無しで)パッチの適用が可能。適用の過程でノードごとにパッチレベルが異なる状態が発生するが問題ない。
普通過ぎて面白みがないので省略。
非ローリング適用
片ノードずつパッチを適用する方法。適用対象のノード以外はCRSを停止させておく必要がある。
opatchauto コマンドに -nonrolling オプションを指定する。
適用手順
パッチを適用したいノード以外のCRSを停止する。
# crsctl stop crs
opatchauto でパッチを適用。
# export PATH=$PATH:$ORACLE_HOME/OPatch
# $ORACLE_HOME/OPatch/opatchauto apply -nonrolling /tmp/34130714
適用が成功すると自動的にCRSが起動するので、一旦停止する。
# crsctl stop crs
次にパッチを適用したいノードでCRSを起動する。
# crsctl start crs
こちらも同様にパッチを適用する。
# export PATH=$PATH:$ORACLE_HOME/OPatch
# $ORACLE_HOME/OPatch/opatchauto apply -nonrolling /tmp/34130714
すべてのノードで同様の作業を行ったら、最後にすべてのノードをCRSが正常に起動することを確認する。
ほかのノードでCRSを起動したまま実行するとどうなるか
以下のエラーで失敗する。
OPATCHAUTO-72087: グリッドはリモート・ホストで実行されています。
OPATCHAUTO-72087: 一部のリモート・ホストでグリッド・サービスが実行されているため、非ローリング・モードでは実行できません。
OPATCHAUTO-72087: リモート・ホストのグリッド・サービスを停止して、非ローリング・モードで続行してください。
OPatchAutoが失敗しました。
適用するノードでCRSを停止したまま実行するとどうなるか
以下のエラーで失敗する。
Clusterware is either not running or not configured. You have the following 2 options:
1. Configure and start the Clusterware on this node and re-run the tool
2. Run the tool with '-oh <GI_HOME>' to first patch the Grid Home, then invoke tool with '-database <oracle database name>' or '-oh <RAC_HOME>' to patch the RAC home
OPATCHAUTO-72029: クラスタウェア・ホームが構成されていません。
OPATCHAUTO-72029: クラスタウェアが実行されていないか、構成されていないか、クラスタがソフトウェアのみのGIです
OPATCHAUTO-72029: グリッド・インフラストラクチャ・ソフトウェアがインストールされている場合、opatchautoを'-oh'オプション付きで実行してくださ い。または、opatchautoを実行する前にクラスタウェアを構成して起動してください。
一部のノードだけパッチを適用済みの状態の挙動
1ノードだけパッチを適用済みの状態で、ほかのノードのCRSを起動させたらどうなるのか。
結論としては起動しない。非ローリングモードではどちらか片方のCRSしか起動できない。パッチ適用済みのCRSを先に起動した場合はそちらのみ起動するし、パッチ未適用のCRSを先に起動した場合はそちらのみ起動する。
パッチ適用済みのCRSが起動している場合
パッチ未適用のCRSを起動しようとするとこうなる。
[root@rac19n2 grid]# crsctl start crs -wait
CRS-4123: Oracle高可用性サービス管理下のリソースを起動しています
:
CRS-2672: 'ora.crsd'('rac19n2')の起動を試行しています
CRS-2676: 'ora.crsd'('rac19n2')の起動が成功しました
CRS-2883: Clusterwareスタックの起動中にリソース'ora.crsd'が失敗しました。
CRS-4406: Oracle高可用性サービスの同期起動に失敗しました。
CRS-41053: ファイルの権限の問題についてOracle Grid Infrastructureをチェックしています
PRVH-0116 : Path "/u01/app/19.0.0/grid/lib/acfsreplcrs.pl" with permissions "rw-r--r--" does not have execute permissions for the owner, file's group, and others on node "rac19n2".
PRVH-0111 : Path "/u01/app/19.0.0/grid/lib/acfstoolsdriver.sh" with permissions "rwxr-x---" does not have read permissions for others on node "rac19n2".
PRVH-0113 : Path "/u01/app/19.0.0/grid/lib/acfstoolsdriver.sh" with permissions "rwxr-x---" does not have execute permissions for others on node "rac19n2".
PRVH-0109 : Path "/u01/app/19.0.0/grid/lib/libacfs19.so" with permissions "rw-r--r--" does not have write permissions for the file's group on node "rac19n2".
PRVH-0113 : Path "/u01/app/19.0.0/grid/lib/acfstoolsdriver.sh" with permissions "rwxr-x---" does not have execute permissions for others on node "rac19n2".
CRS-4000: コマンドStartは失敗したか、またはエラーのある状態で完了しました。
この時、crsd.trc には以下のログが出る。
2022-12-03 19:24:10.746 : OCRMAS:2036389632: th_hub_verify_master_pubdata: Shutdown CacheLocal. Patch Levels don't match. Local Patch Level [3331580692] != Cache Writer Patch Level [896235792]
パッチ未適用のCRSが起動している場合
パッチ適用済みのCRSを起動しようとするとこうなる。
[root@rac19n1 trace]# crsctl start crs -wait
CRS-4123: Oracle高可用性サービス管理下のリソースを起動しています
:
CRS-2672: 'ora.crsd'('rac19n1')の起動を試行しています
CRS-2676: 'ora.crsd'('rac19n1')の起動が成功しました
CRS-2883: Clusterwareスタックの起動中にリソース'ora.crsd'が失敗しました。
CRS-4406: Oracle高可用性サービスの同期起動に失敗しました。
CRS-41053: ファイルの権限の問題についてOracle Grid Infrastructureをチェックしています
CRS-4000: コマンドStartは失敗したか、またはエラーのある状態で完了しました。
この時も、crsd.trc には同じエラーが出る。
個別パッチとRU
例えば、19.16 RUが適用済みの環境に、個別パッチ(33606850)が当たっていたとする。
(DB側)
$ $ORACLE_HOME/OPatch/opatch lspatches
33606850;AIM ORA-600 [KCBBXSV_7] - KCBBXSV AND INSTANCE CRASHED AFTER DATA FILE RESIZING
34086870;OJVM RELEASE UPDATE: 19.16.0.0.220719 (34086870)
34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)
OPatch succeeded.
(GI側)
$ $ORACLE_HOME/OPatch/opatch lspatches
33606850;AIM ORA-600 [KCBBXSV_7] - KCBBXSV AND INSTANCE CRASHED AFTER DATA FILE RESIZING
34318175;TOMCAT RELEASE UPDATE 19.0.0.0.0 (34318175)
34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635)
34139601;ACFS RELEASE UPDATE 19.16.0.0.0 (34139601)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)
33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)
OPatch succeeded.
この 33606850 は上位のRU(19.18)に修正が含まれているのだが、このようなケースで上位のRU(19.18)を当てる場合、33606850を事前にロールバックする必要はない。おもむろに19.18を当てると以下のように自動的にロールバックされて適用済みパッチの一覧からは消える。
(DB側)
$ $ORACLE_HOME/OPatch/opatch lspatches
34768559;OCW RELEASE UPDATE 19.18.0.0.0 (34768559)
34765931;DATABASE RELEASE UPDATE : 19.18.0.0.230117 (REL-JAN230131) (34765931)
34086870;OJVM RELEASE UPDATE: 19.16.0.0.220719 (34086870)
OPatch succeeded.
(GI側)
$ $ORACLE_HOME/OPatch/opatch lspatches
34863894;TOMCAT RELEASE UPDATE 19.0.0.0.0 (34863894)
34768569;ACFS RELEASE UPDATE 19.18.0.0.0 (34768569)
34768559;OCW RELEASE UPDATE 19.18.0.0.0 (34768559)
34765931;DATABASE RELEASE UPDATE : 19.18.0.0.230117 (REL-JAN230131) (34765931)
33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)
OPatch succeeded.
ではこの状態で適用したRU(19.18)をロールバックするとどうなるかというと、個別パッチの再適用まではやってくれないようだ。元のRU(19.16)には戻る。
(DB側)
$ $ORACLE_HOME/OPatch/opatch lspatches
34086870;OJVM RELEASE UPDATE: 19.16.0.0.220719 (34086870)
34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)
OPatch succeeded.
(GI側)
$ $ORACLE_HOME/OPatch/opatch lspatches
34318175;TOMCAT RELEASE UPDATE 19.0.0.0.0 (34318175)
34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635)
34139601;ACFS RELEASE UPDATE 19.16.0.0.0 (34139601)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)
33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)
OPatch succeeded.
コメント