はじめに
DBaaSで作成した直後のデータベースには最新のパッチがあたってない(場合がある)ので、パッチをあてる。
今回のケースでは、初期構成されるDBが19.5なので19.6にあげる (ちなみに、今回検証したエディションはStandard Edition2です)
初期状態では、以下のようなパッチ適用状態でした。これに対してパッチを適用します。
(grid)$ $ORACLE_HOME/OPatch/opatch lspatches
30269395;ACFS Interim patch for 30269395
30125133;Database Release Update : 19.5.0.0.191015 (30125133)
30122149;OCW RELEASE UPDATE 19.5.0.0.0 (30122149)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)
OPatch succeeded.
(oracle)$ $ORACLE_HOME/OPatch/opatch lspatches
30423135;REINSTATE IS FAILING POST APPLYING 19C OCT19 PATCHES
30128191;OJVM RELEASE UPDATE: 19.5.0.0.191015 (30128191)
30125133;Database Release Update : 19.5.0.0.191015 (30125133)
30122149;OCW RELEASE UPDATE 19.5.0.0.0 (30122149)
OPatch succeeded.
SQL> select PATCH_ID,PATCH_TYPE,ACTION,STATUS,DESCRIPTION from dba_registry_sqlpatch;
PATCH_ID PATCH_TYPE ACTION STATUS DESCRIPTION
---------- ---------- --------------- ------------------------- ----------------------------------------------------------------------------------------------------
30128191 INTERIM APPLY SUCCESS OJVM RELEASE UPDATE: 19.5.0.0.191015 (30128191)
30125133 RU APPLY SUCCESS Database Release Update : 19.5.0.0.191015 (30125133)
#パッチを適用してみる
DBaaSのパッチには2種類あるようで、GIのパッチとDBのパッチをそれぞれあてるようです。
・システムパッチ (GIパッチ) OSを含むかも OS Updateは、Updating a DB Systemをみる限り、yumコマンドで実施する手順のようです
ベア・メタル、VMおよびExadata > DBシステム > DBシステムの詳細 > パッチ
・DBパッチ
ベア・メタル、VMおよびExadata > DBシステム > DBシステムの詳細 >データベース詳細 > パッチ
事前チェック (System Patch)
コンソールからポチポチするだけでパッチをあてることができます。
適用前に事前チェックができるようなので、やってみます。
しばらくチェック中となりますが、裏で何が実行されているかわからないと不安になるので、確認する方法がないか調べてみました。
コンソールからのパッチ適用は、おおむね以下の図のようになっていると思われます。
これは、dcs-agentのログと、コマンドが実行されているときのpstreeを見た結果からの推測です。
dcs-agentのログは主に以下の3つです。(ローテートされます)
・/opt/oracle/dcs/log/dcs-agent.log - メインのログ
・/opt/oracle/dcs/log/dcs-agent-requests.log - アクセスログみたいなの
・/opt/oracle/dcs/log/dcs-agent-debug.log - 実行されているコマンドとか出力される
コンソールから、パッチ関連の操作をすると、dcs-agent-requests.logに以下のようなエントリが出力されます
169.254.169.254 - - [08/Feb/2020:08:12:16 +0900] "GET /ping HTTP/1.1" 200 186 "-" "Jersey/2.25 (HttpUrlConnection 1.8.0_232)" 12
169.254.169.254 - - [08/Feb/2020:08:12:16 +0900] "GET /ping HTTP/1.1" 200 186 "-" "Jersey/2.25 (HttpUrlConnection 1.8.0_232)" 8
169.254.169.254 - - [08/Feb/2020:08:12:40 +0900] "PUT /server HTTP/1.1" 200 215 "-" "Jersey/2.25 (HttpUrlConnection 1.8.0_232)" 21377
169.254.169.254 - - [08/Feb/2020:08:13:49 +0900] "GET /ping HTTP/1.1" 200 186 "-" "Jersey/2.25 (HttpUrlConnection 1.8.0_232)" 201
また、dcs-agent-debug.logをtailしながら、時間のかかってそうなコマンドが実行されているときにpstreeをしてみると以下のようにdcs-agentの子プロセスとしてコマンドが実行されていることがわかります。
# pstree -p 5499 |head
java(5499)-+-opatchauto(68542)---perl(68547)---java(68592)-+-{java}(68593)
| |-{java}(68594)
| |-{java}(68595)
※5499はdcs-agentのjavaプロセス
zookeeperのところは、ODA(Oracle Database Appliance)のHA構成の場合、そのような連携の仕方をするので、そうなるのだろうという予想です。(プロセスの存在は確認していますが、DBaaSのRAC環境でそのように動作するのかは未確認です)
実行中のジョブを確認するには、dbcliを使います。dcs-agentにリクエストを飛ばし、現在のジョブ実行状態を表示してくれます。
以下は、パッチのプレチェック時に実行されているジョブを確認した結果です。
# dbcli list-jobs
ID Description Created Status
---------------------------------------- --------------------------------------------------------------------------- ----------------------------------- ----------
1def8fb7-c8bd-497e-aa73-562524dfd3f8 Provisioning service creation February 6, 2020 12:49:07 PM JST Success
b8a7cafc-9dc1-4ed8-acc2-7627b30efd52 SSH keys update February 6, 2020 1:43:34 PM JST Success
9d56ab83-bb17-4d73-8fbe-30872f7fb084 SSH key delete February 6, 2020 1:45:26 PM JST Success
6ecb041c-a702-45c8-ae1c-214d00d81070 Authentication key update for DCS_ADMIN February 6, 2020 2:11:48 PM JST Success
★ f3521372-ce56-4af6-811c-83e720079121 Server Patching Prechecks February 7, 2020 11:20:17 AM JST Running
# dbcli describe-job -i f3521372-ce56-4af6-811c-83e720079121
※ -i の後ろにジョブのIDを指定する
Job details
----------------------------------------------------------------
ID: f3521372-ce56-4af6-811c-83e720079121
Description: Server Patching Prechecks
Status: Running
Created: February 7, 2020 11:20:17 AM JST
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Create Patching Repository Directories[db19c] February 7, 2020 11:20:17 AM JST February 7, 2020 11:20:17 AM JST Success
Download latest patch metadata[db19c] February 7, 2020 11:20:17 AM JST February 7, 2020 11:20:38 AM JST Success
Update Patching Repository[db19c] February 7, 2020 11:20:38 AM JST February 7, 2020 11:23:10 AM JST Success
Opatch updation[db19c] February 7, 2020 11:23:11 AM JST February 7, 2020 11:23:21 AM JST Success
Patch conflict check[db19c] February 7, 2020 11:23:22 AM JST February 7, 2020 11:23:22 AM JST Running
それぞれのtaskで実際にどんなコマンドが実行されているかは、dcs-agent-debug.logを見るとだいたいわかります。事前チェックの場合は以下のようなことを裏で行っているようです。
-
以下のパスにパッチをダウンロード
/opt/oracle/oak/pkgrepos/db/19.6.0.0.200114/p30501910_190000_Linux-x86-64_1912251219.zip
/opt/oracle/oak/pkgrepos/db/19.6.0.0.200114/p30700030_196000ACFSRU_Linux-x86-64.zip
/opt/oracle/oak/pkgrepos/opatch/19.5.0.0.0/p6880880_190000_Linux-x86-64.zip -
grid・oracleユーザで鍵認証設定 (この環境はシングルですが、RAC構成の場合もあるため、実行されていると思われる)
-
OPatchのupdate
-
パッチ(RU)を/u01/odaPatchingTempDirに展開
-
opatchautoで、analyzeを実行
※ただ、このopatchautoのanalyzeでは、以下のようなエラーが出力されていました。コンソール上では成功になっているので、単純に戻り値だけで判断しているのではないのだろうと推測しています。
OPatchauto session is initiated at Fri Feb 7 11:26:29 2020
OPATCHAUTO-72083: Performing bootstrap operations failed.
OPATCHAUTO-72083: The bootstrap execution failed because OPATCHAUTO-72082: Multiple system patch supplied.
OPATCHAUTO-72082: opatchauto cannot process multiple system patches as part of same session.
OPATCHAUTO-72082: Please remove one system patch from the patch location..
OPATCHAUTO-72083: Fix the reported problem and re-run opatchauto.
OPatchauto session completed at Fri Feb 7 11:26:36 2020
Time taken to complete the session 0 minute,
8 seconds
opatchauto bootstrapping failed with error code 255.
6. 後片付け (作った鍵とかその他一時ファイルの削除とか)
##パッチの適用 (systemパッチ)
事前チェックが成功したら、実際にパッチをあててみます。
コンソールをぽちっと押した後、サーバにログインして、dbcliでジョブの状態を確認すると、
"Server Patching"ジョブが実行されます。
# dbcli list-jobs
ID Description Created Status
---------------------------------------- --------------------------------------------------------------------------- ----------------------------------- ----------
1def8fb7-c8bd-497e-aa73-562524dfd3f8 Provisioning service creation February 6, 2020 3:49:07 AM JST Success
b8a7cafc-9dc1-4ed8-acc2-7627b30efd52 SSH keys update February 6, 2020 4:43:34 AM JST Success
9d56ab83-bb17-4d73-8fbe-30872f7fb084 SSH key delete February 6, 2020 4:45:26 AM JST Success
6ecb041c-a702-45c8-ae1c-214d00d81070 Authentication key update for DCS_ADMIN February 6, 2020 5:11:48 AM JST Success
f3521372-ce56-4af6-811c-83e720079121 Server Patching Prechecks February 7, 2020 2:20:17 AM JST Success
★ b2a0b254-6846-430a-be4a-d0c8937c234a Server Patching February 8, 2020 8:49:43 AM JST Running
# dbcli describe-job -i b2a0b254-6846-430a-be4a-d0c8937c234a
Job details
----------------------------------------------------------------
ID: b2a0b254-6846-430a-be4a-d0c8937c234a
Description: Server Patching
Status: Success
Created: February 8, 2020 8:49:43 AM JST
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Create Patching Repository Directories[db19c] February 8, 2020 8:49:44 AM JST February 8, 2020 8:49:44 AM JST Success
Download latest patch metadata[db19c] February 8, 2020 8:49:44 AM JST February 8, 2020 8:50:04 AM JST Success
Update Patching Repository[db19c] February 8, 2020 8:50:04 AM JST February 8, 2020 8:53:00 AM JST Success
Opatch updation[db19c] February 8, 2020 8:53:03 AM JST February 8, 2020 8:53:08 AM JST Success
Patch conflict check[db19c] February 8, 2020 8:53:08 AM JST February 8, 2020 8:55:52 AM JST Success
apply clusterware patch[db19c] February 8, 2020 8:55:52 AM JST February 8, 2020 9:38:25 AM JST Success
Updating GiHome version[db19c] February 8, 2020 9:38:25 AM JST February 8, 2020 9:39:18 AM JST Success
Update System version[db19c] February 8, 2020 9:39:37 AM JST February 8, 2020 9:39:37 AM JST Success
事前チェック (DB Patch)
Systemパッチがあたったら、DBパッチをあてます。まずは事前チェックから
チェック方法はSystemパッチと同じですが、以下の場所にあるパッチに対して行います。
ベア・メタル、VMおよびExadata > DBシステム > DBシステムの詳細 > データベース詳細 > パッチ
実行中にサーバにログインして、dbcliでジョブの状態を確認します。"DB Home Prechecks"ジョブが実行されるようです。
# dbcli list-jobs
ID Description Created Status
---------------------------------------- --------------------------------------------------------------------------- ----------------------------------- ----------
1def8fb7-c8bd-497e-aa73-562524dfd3f8 Provisioning service creation February 6, 2020 3:49:07 AM JST Success
b8a7cafc-9dc1-4ed8-acc2-7627b30efd52 SSH keys update February 6, 2020 4:43:34 AM JST Success
9d56ab83-bb17-4d73-8fbe-30872f7fb084 SSH key delete February 6, 2020 4:45:26 AM JST Success
6ecb041c-a702-45c8-ae1c-214d00d81070 Authentication key update for DCS_ADMIN February 6, 2020 5:11:48 AM JST Success
f3521372-ce56-4af6-811c-83e720079121 Server Patching Prechecks February 7, 2020 2:20:17 AM JST Success
b2a0b254-6846-430a-be4a-d0c8937c234a Server Patching February 8, 2020 8:49:43 AM JST Success
★ 48537e1b-5de2-49fc-8755-093054986f6a DB Home Prechecks February 8, 2020 10:13:36 AM JST Running
# dbcli describe-job -i 48537e1b-5de2-49fc-8755-093054986f6a
Job details
----------------------------------------------------------------
ID: 48537e1b-5de2-49fc-8755-093054986f6a
Description: DB Home Prechecks
Status: Success
Created: February 8, 2020 10:13:36 AM JST
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Create Patching Repository Directories[db19c] February 8, 2020 10:13:37 AM JST February 8, 2020 10:13:37 AM JST Success
Download latest patch metadata[db19c] February 8, 2020 10:13:37 AM JST February 8, 2020 10:13:57 AM JST Success
checking GiHome version[db19c] February 8, 2020 10:13:57 AM JST February 8, 2020 10:15:51 AM JST Success
Update System version[db19c] February 8, 2020 10:15:51 AM JST February 8, 2020 10:15:51 AM JST Success
Update Patching Repository[db19c] February 8, 2020 10:15:51 AM JST February 8, 2020 10:18:24 AM JST Success
Validating dbHome available space[db19c] February 8, 2020 10:18:24 AM JST February 8, 2020 10:18:24 AM JST Success
Opatch updation[db19c] February 8, 2020 10:18:25 AM JST February 8, 2020 10:18:31 AM JST Success
Patch conflict check[db19c] February 8, 2020 10:18:31 AM JST February 8, 2020 10:24:12 AM JST Success
パッチ適用 (DB Patch)
事前チェックが問題なく完了したら、実際に適用します。
実行中にサーバにログインして、dbcliでジョブの状態を確認します。"DB Home Patching"が実行されるようです。
# dbcli list-jobs
ID Description Created Status
---------------------------------------- --------------------------------------------------------------------------- ----------------------------------- ----------
1def8fb7-c8bd-497e-aa73-562524dfd3f8 Provisioning service creation February 6, 2020 3:49:07 AM JST Success
b8a7cafc-9dc1-4ed8-acc2-7627b30efd52 SSH keys update February 6, 2020 4:43:34 AM JST Success
9d56ab83-bb17-4d73-8fbe-30872f7fb084 SSH key delete February 6, 2020 4:45:26 AM JST Success
6ecb041c-a702-45c8-ae1c-214d00d81070 Authentication key update for DCS_ADMIN February 6, 2020 5:11:48 AM JST Success
f3521372-ce56-4af6-811c-83e720079121 Server Patching Prechecks February 7, 2020 2:20:17 AM JST Success
b2a0b254-6846-430a-be4a-d0c8937c234a Server Patching February 8, 2020 8:49:43 AM JST Success
48537e1b-5de2-49fc-8755-093054986f6a DB Home Prechecks February 8, 2020 10:13:36 AM JST Success
★ 2963c7d0-bfa0-4535-bd74-7a32c8a5f31d DB Home Patching: Home Id is e2019f7a-9010-4037-a02e-e35800e17297 February 8, 2020 10:27:11 AM JST Running
# dbcli describe-job -i 2963c7d0-bfa0-4535-bd74-7a32c8a5f31d
Job details
----------------------------------------------------------------
ID: 2963c7d0-bfa0-4535-bd74-7a32c8a5f31d
Description: DB Home Patching: Home Id is e2019f7a-9010-4037-a02e-e35800e17297
Status: Success
Created: February 8, 2020 10:27:11 AM JST
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Create Patching Repository Directories[db19c] February 8, 2020 10:27:12 AM JST February 8, 2020 10:27:12 AM JST Success
Download latest patch metadata[db19c] February 8, 2020 10:27:12 AM JST February 8, 2020 10:27:34 AM JST Success
checking GiHome version[db19c] February 8, 2020 10:27:34 AM JST February 8, 2020 10:29:16 AM JST Success
Update System version[db19c] February 8, 2020 10:29:16 AM JST February 8, 2020 10:29:16 AM JST Success
Update Patching Repository[db19c] February 8, 2020 10:29:16 AM JST February 8, 2020 10:31:28 AM JST Success
Validating dbHome available space[db19c] February 8, 2020 10:31:28 AM JST February 8, 2020 10:31:28 AM JST Success
Opatch updation[db19c] February 8, 2020 10:31:29 AM JST February 8, 2020 10:31:34 AM JST Success
Patch conflict check[db19c] February 8, 2020 10:31:34 AM JST February 8, 2020 10:37:59 AM JST Success
db upgrade to version [db19c] February 8, 2020 10:37:59 AM JST February 8, 2020 11:34:17 AM JST Success
SqlPatch upgrade February 8, 2020 11:34:18 AM JST February 8, 2020 11:38:59 AM JST Success
updating the Database version February 8, 2020 11:40:01 AM JST February 8, 2020 11:41:47 AM JST Success
パッチの適用結果
以下のようにパッチがあたりました。
(grid)$ $ORACLE_HOME/OPatch/opatch lspatches
30700030;ACFS Interim patch for 30700030
30655595;TOMCAT RELEASE UPDATE 19.0.0.0.0 (30655595)
30557433;Database Release Update : 19.6.0.0.200114 (30557433)
30489227;OCW RELEASE UPDATE 19.6.0.0.0 (30489227)
OPatch succeeded.
(oracle)$ $ORACLE_HOME/OPatch/opatch lspatches
30423135;REINSTATE IS FAILING POST APPLYING 19C OCT19 PATCHES
30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 29997937
30413137;ORA-00600 INTERNAL ERROR CODE, ARGUMENTS [2006]
30557433;Database Release Update : 19.6.0.0.200114 (30557433)
30489227;OCW RELEASE UPDATE 19.6.0.0.0 (30489227)
30128191;OJVM RELEASE UPDATE: 19.5.0.0.191015 (30128191)
OPatch succeeded.
SQL> select PATCH_ID,PATCH_TYPE,ACTION,STATUS,DESCRIPTION from dba_registry_sqlpatch;
PATCH_ID PATCH_TYPE ACTION STATUS DESCRIPTION
---------- ---------- --------------- ------------------------- ----------------------------------------------------------------------------------------------------
30128191 INTERIM APPLY SUCCESS OJVM RELEASE UPDATE: 19.5.0.0.191015 (30128191)
30125133 RU APPLY SUCCESS Database Release Update : 19.5.0.0.191015 (30125133)
30557433 RU APPLY SUCCESS Database Release Update : 19.6.0.0.200114 (30557433)
まとめ
パッチ適用はまぁまぁ時間がかかる(今回の場合、systemパッチで50分くらい、DBパッチが1時間20分くらい)ので、裏でなにが実行されているか不安になったりします。その場合は、サーバにログインして以下を見てみるとよいと思います。
・ dbcli list-jobs & dbcli describe-job
→ Running状態かどうか、実行中のTASKは何か
・ pstreeでdcs-agentの子プロセスとして実行されているコマンドの確認
→ 実行されているコマンド自身のログを見る (OPatchとか)
・dcs-agent-debug.logで実行されているコマンドの詳細(引数とか)を確認する
※dbcliで確認できる(サーバ側で実行されている)ジョブ以外にも、クラウド管理側でも何かしら処理しているようで、dbcliで見るとジョブが完了しているようでも、コンソール上で成功になるまで10~20分くらい時間がかかることもありました