はじめに
Oracle Database にパッチ適用経験がなかったので、手探りながら当ててみた。
途中でエラーを解決しながらパッチ適用しているので、トラブルシューティングも参考にしてみてください
また、以下の記事も併せて読んでみてください!
1. 環境準備
まずは、パッチ適用するための検証環境の準備。
1-1. 環境構築
・Oracle Cloud Infrastructure
・Oracle Database 19.1.0.0
・Oracle Linux
上記、環境構築には、以下の検証環境を利用しました!
Pluggables, Clones and Containers: Oracle Multitenant Fundamentals の Lab 4 > Task 2 まで
(↑ SSHキーの生成は、こちらのマニュアルを参考にしました。)
→ 上記URLの検証環境の構築手順をとりあえず確認したい場合、以下で確認可能です
1-2. 現行環境情報の確認
1-2-1. テナント情報の確認
SQL> connect sys/Ora_DB4U@localhost:1521/cdb1 as sysdba
Connected.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB2 READ WRITE NO
5 PDB3 READ WRITE NO
1-2-2. DBバージョンの確認
SYSDBAでSQL*Plusにログインすると、DBバージョンが19.11.0.0と表示されている。
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1/bin]$ sqlplus / AS SYSDBA
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 28 03:03:21 2023
Version 19.11.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
SQL> select PATCH_TYPE,ACTION, STATUS,DESCRIPTION, TARGET_VERSION, TARGET_BUILD_DESCRIPTION from DBA_REGISTRY_SQLPATCH;
PATCH_TYPE ACTION STATUS DESCRIPTION TARGET_VERSION TARGET_BUILD_DESCRIPTION
---------- --------- ---------- ------------------------------------------------------- --------------- ----------------
INTERIM APPLY SUCCESS OJVM RELEASE UPDATE: 19.11.0.0.210420 (32399816) 19.1.0.0.0 Feature Release
PATCH_TYPE ACTION STATUS DESCRIPTION TARGET_VERSION TARGET_BUILD_DESCRIPTION
---------- --------- ---------- ------------------------------------------------------- --------------- ----------------
RU APPLY SUCCESS Database Release Update : 19.11.0.0.210420 (32545013) 19.11.0.0.0 Release_Update
2. パッチ情報 / パッチダウンロード先
【パッチ情報】
Oracle Database 19.1.0.0 → Oracle Database 19.19.0.0.230418
【パッチダウンロード先】
My Oracle Support(MOS) より以下のドキュメントからダウンロード
Oracle データベース 19c プロアクテイブ・パッチ情報 (Doc ID 2521164.1)
パッチ番号:35042068
3. パッチ適用手順
3-1. まずはパッチ適用に必要なファイルをダウンロード
- 上記、パッチダウンロード先から、パッチをダウンロード
- DB (パッチ 35042068) の Readme を確認
- 2.のReadmeに従い、OPatch 19.0.0.0.0をダウンロード
- OPatch の Readme も確認
3-2. パッチ適用前準備
3-2-1. OPatchの実行に必要なPATHを通す
export PATH=$PATH:/opt/oracle/product/19c/dbhome_1/OPatch
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
3-2-2. OPatch ユーティリティをバージョンアップ
- 既存OPatchディレクトリを新規OPatchディレクトリに丸ごと入れ替える作業
以下の通り、既存OPatchユーティリティのバージョンは 12.2.0.1.24 である。
今回、パッチ適用を進めていくには、「OPatchユーティリティのバージョン 12.2.0.1.36 以降を使用する必要がある(と、readmeに記載あり)。」
なので、まずは、OPatchのバージョンアップ (OPatch 12.2.0.1.37) を実施する。
既にOPatchバージョンの条件を満たしている場合はスキップOK
----------------------
既存OPatchバージョン確認
----------------------
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1/OPatch]$ opatch version
OPatch Version: 12.2.0.1.24
OPatch succeeded.
下記1~8の手順は、簡単にまとめると以下のコマンドでOPatchディレクトリの入れ替え作業を行っているだけ
$ cd $ORACLE_HOME
$ mv OPatch <既存OPatchディレクトリをアーカイブしておけるディレクトリ名>
$ unzip p6880880_190000_LINUX.zip
$ cd OPatch
$ opatch version または、$ORACLE_HOME/OPatch/opatch version -jdk $ORACLE_HOME/jdk
以下、詳細な手順書
- ORACLE_HOME 配下に既存OPatchディレクトリが存在するか確認
- 存在した場合は、1のファイルをどこか適当なアーカイブ可能なディレクトリに移動させる
- ダウンロードしたOPatchのzipファイルを解凍するディレクトリの作成
$ mkdir <ディレクトリ名>
- 3.で作成したディレクトリにOPatchのzipファイルを配置。以下のコマンドでUnzipする。
$ unzip p6880880_190000_LINUX.zip
- unzip後、OPatchディレクトリが展開される。
- 5.を、ORACLE_HOME配下に移動する
$ mv -i OPatch /opt/oracle/product/19c/dbhome_1
-i (--interactive) オプション:上書き前に確認する - 最後に、インストールしたOpatchバージョンを確認する。
$ cd OPatch
$ opatch version
トラブルシューティング
本来であれば上記だけでバージョン確認ができるはずなのだが、以下のようなエラーが表示された場合は、
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1/OPatch]$ opatch version
/opt/oracle/product/19c/dbhome_1/OPatch/opatch: line 839: [: too many arguments
/opt/oracle/product/19c/dbhome_1/OPatch/opatch: line 839: [: too many arguments
Java (1.7) could not be located. OPatch cannot proceed!
OPatch returns with error code = 1
jdkを引数に指定して、明示的にjavaホームを指定する必要がある。
(ここで結構つまずいてしまった)
$ORACLE_HOME/OPatch/opatch version -jdk $ORACLE_HOME/jdk
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1]$ $ORACLE_HOME/OPatch/opatch version -jdk $ORACLE_HOME/jdk
OPatch Version: 12.2.0.1.37
OPatch succeeded.
8. これで、ORACLE_HOME配下に新規OPatch (12.2.0.1.37) のインストール完了
3-2-3. 暫定パッチとの競合確認
- 続いて、今回パッチ適用対象のp35042068_190000_Linux-x86-64.zipをunzipする。
$ unzip p35042068_190000_Linux-x86-64.zip
- 既にインストール済みの個別パッチが35042068と競合するかを確認する。
$ cd 35042068
$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
トラブルシューティング
本来であれば上記だけでバージョン確認ができるはずなのだが、以下のようなエラーが表示された場合は、
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
/opt/oracle/product/19c/dbhome_1/OPatch/opatch: line 839: [: too many arguments
/opt/oracle/product/19c/dbhome_1/OPatch/opatch: line 839: [: too many arguments
Java (1.7) could not be located. OPatch cannot proceed!
OPatch returns with error code = 1
ここでも、先ほどと同様に、jdkを引数に指定して、明示的にjavaホームを指定する必要がある。
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./ -jdk $ORACLE_HOME/jdk
--------------------------------
暫定パッチとの競合チェックの結果
--------------------------------
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./ -jdk $ORACLE_HOME/jdk
Oracle Interim Patch Installer version 12.2.0.1.37
Copyright (c) 2023, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventory
from : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.37
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2023-04-27_07-50-54AM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
今回は、検証結果を利用しているということもあり、既に適用されている個別パッチなども存在しておりらず、問題なく完了した。
3-2-4. DBインスタンスとリスナーの停止
Readme 記載通り、今回はRAC環境ではないので、インスタンスとリスナーの停止を実施する。
3-2-4-1. リスナーの停止
- listener.oraファイルを確認すると、listener_name はデフォルトの「LISTENER」で登録されていた。
- oracleユーザで
$ORACLE_HOME/bin
配下に移動し、以下コマンドでリスナーを停止する。
$ lsnrctl STOP [listener_name]
上記コマンドを実行した結果が、以下。
--------------------
リスナー停止_実行結果
--------------------
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1/bin]$ lsnrctl STOP LISTENER
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 28-APR-2023 02:50:22
Copyright (c) 1991, 2021, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbhol.livelabs.oraclevcn.com)(PORT=1521)))
The command completed successfully
3-2-4-2. インスタンスの停止
- sysユーザでSQL*Plus (または Oracle Restart でも可) にログイン
※ SQL*PlusでSYSOPER、SYSDBA、SYSBACKUPまたはSYSDGとして接続した場合に、インスタンス停止が可能 - 以下コマンドを実行
$ sqlplus / AS SYSDBA
sql> SHUTDOWN IMMEDIATE
上記コマンドを実行した結果が、以下。
------------------------
インスタンス停止_実行結果
------------------------
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1/bin]$ sqlplus / AS SYSDBA
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 28 03:03:21 2023
Version 19.11.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
3-3. OPatchの適用
3-3-1. OPatchの適用
-
3-2-3. 暫定パッチとの競合確認 で回答した今回のパッチファイルが存在するディレクトリに移動する。
cd /opt/oracle/OPatch_new/35042068
- OPatchを適用する。
opatch apply
トラブルシューティング
本来であれば上記だけでバージョン確認ができるはずなのだが、以下のようなエラーが表示された場合は、
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ opatch apply
/opt/oracle/product/19c/dbhome_1/OPatch/opatch: line 839: [: too many arguments
/opt/oracle/product/19c/dbhome_1/OPatch/opatch: line 839: [: too many arguments
Java (1.7) could not be located. OPatch cannot proceed!
OPatch returns with error code = 1
ここでも、先ほどと同様に、jdkを引数に指定して、明示的にjavaホームを指定する必要がある。
$ $ORACLE_HOME/OPatch/opatch apply -jdk $ORACLE_HOME/jdk
-----------------------
OPatch適用するも失敗
-----------------------
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ $ORACLE_HOME/OPatch/opatch apply -jdk $ORACLE_HOME/jdk
Oracle Interim Patch Installer version 12.2.0.1.37
Copyright (c) 2023, Oracle Corporation. All rights reserved.
Oracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventory
from : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.37
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2023-04-28_04-22-32AM_1.log
Verifying environment and performing prerequisite checks...
Prerequisite check "CheckActiveFilesAndExecutables" failed.
The details are:
Following active files/executables/libs are used by ORACLE_HOME :/opt/oracle/product/19c/dbhome_1
/opt/oracle/product/19c/dbhome_1/bin/oracle
/opt/oracle/product/19c/dbhome_1/bin/tnslsnr
/opt/oracle/product/19c/dbhome_1/lib/libclntsh.so.19.1
/opt/oracle/product/19c/dbhome_1/lib/libasmclntsh19.so
UtilSession failed: Prerequisite check "CheckActiveFilesAndExecutables" failed.
Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2023-04-28_04-22-32AM_1.log
OPatch failed with error code 73
なんてことだ・・・・なぜ、エラーが、、、、
3-3-2. OPatch適用に失敗したのでトラブルシューティング
トラブルシューティングだけでも、相当な量になりそうだったので、下記の記事に詳細を記載。
OPatch適用時のトラブルシューティング
要点:ORACLE_HOMEを利用しているアクティブなプロセスが残っていたので、全てkill
3-3-3. OPatch適用 <リベンジ編!!>
上記、プロセスを全てkillしてから再度OPatch適用したところ、遂に実行できた!!!
$ $ORACLE_HOME/OPatch/opatch apply -jdk $ORACLE_HOME/jdk
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ $ORACLE_HOME/OPatch/opatch apply -jdk $ORACLE_HOME/jdk
Oracle Interim Patch Installer version 12.2.0.1.37
Copyright (c) 2023, Oracle Corporation. All rights reserved.
Oracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventory
from : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.37
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2023-04-28_07-27-40AM_1.log
Verifying environment and performing prerequisite checks...
--------------------------------------------------------------------------------
Start OOP by Prereq process.
Launch OOP...
Oracle Interim Patch Installer version 12.2.0.1.37
Copyright (c) 2023, Oracle Corporation. All rights reserved.
Oracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventory
from : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.37
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2023-04-28_07-28-14AM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 35042068
Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/opt/oracle/product/19c/dbhome_1')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '35042068' to OH '/opt/oracle/product/19c/dbhome_1'
ApplySession: Optional component(s) [ oracle.network.gsm, 19.0.0.0.0 ] , [ oracle.rdbms.ic, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.ons.cclient, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.sdo.companion, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.options.olap.api, 19.0.0.0.0 ] , [ oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.oid.client, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [ oracle.ons.eons.bwcompat, 19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.net.cman, 19.0.0.0.0 ] , [ oracle.xdk.companion, 19.0.0.0.0 ] , [ oracle.jdk, 1.8.0.191.0 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.rsf, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf.core, 19.0.0.0.0...
Patching component oracle.slax.rsf, 19.0.0.0.0...
Patching component oracle.ordim.jai, 19.0.0.0.0...
Patching component oracle.bali.jewt, 11.1.1.6.0...
Patching component oracle.bali.ewt, 11.1.1.6.0...
Patching component oracle.help.ohj, 11.1.1.7.0...
Patching component oracle.rdbms.locator, 19.0.0.0.0...
Patching component oracle.perlint.expat, 2.0.1.0.4...
Patching component oracle.rdbms.util, 19.0.0.0.0...
Patching component oracle.rdbms.rsf, 19.0.0.0.0...
Patching component oracle.rdbms, 19.0.0.0.0...
Patching component oracle.assistants.acf, 19.0.0.0.0...
Patching component oracle.assistants.deconfig, 19.0.0.0.0...
Patching component oracle.assistants.server, 19.0.0.0.0...
Patching component oracle.blaslapack, 19.0.0.0.0...
Patching component oracle.buildtools.rsf, 19.0.0.0.0...
Patching component oracle.ctx, 19.0.0.0.0...
Patching component oracle.dbdev, 19.0.0.0.0...
Patching component oracle.dbjava.ic, 19.0.0.0.0...
Patching component oracle.dbjava.jdbc, 19.0.0.0.0...
Patching component oracle.dbjava.ucp, 19.0.0.0.0...
Patching component oracle.duma, 19.0.0.0.0...
Patching component oracle.javavm.client, 19.0.0.0.0...
Patching component oracle.ldap.owm, 19.0.0.0.0...
Patching component oracle.ldap.rsf, 19.0.0.0.0...
Patching component oracle.ldap.security.osdt, 19.0.0.0.0...
Patching component oracle.marvel, 19.0.0.0.0...
Patching component oracle.network.rsf, 19.0.0.0.0...
Patching component oracle.odbc.ic, 19.0.0.0.0...
Patching component oracle.ons, 19.0.0.0.0...
Patching component oracle.ons.ic, 19.0.0.0.0...
Patching component oracle.oracore.rsf, 19.0.0.0.0...
Patching component oracle.perlint, 5.28.1.0.0...
Patching component oracle.precomp.common.core, 19.0.0.0.0...
Patching component oracle.precomp.rsf, 19.0.0.0.0...
Patching component oracle.rdbms.crs, 19.0.0.0.0...
Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...
Patching component oracle.rdbms.deconfig, 19.0.0.0.0...
Patching component oracle.rdbms.oci, 19.0.0.0.0...
Patching component oracle.rdbms.rsf.ic, 19.0.0.0.0...
Patching component oracle.rdbms.scheduler, 19.0.0.0.0...
Patching component oracle.rhp.db, 19.0.0.0.0...
Patching component oracle.sdo, 19.0.0.0.0...
Patching component oracle.sdo.locator.jrf, 19.0.0.0.0...
Patching component oracle.sqlplus, 19.0.0.0.0...
Patching component oracle.sqlplus.ic, 19.0.0.0.0...
Patching component oracle.wwg.plsql, 19.0.0.0.0...
Patching component oracle.xdk.xquery, 19.0.0.0.0...
Patching component oracle.javavm.server, 19.0.0.0.0...
Patching component oracle.xdk.parser.java, 19.0.0.0.0...
Patching component oracle.odbc, 19.0.0.0.0...
Patching component oracle.ctx.rsf, 19.0.0.0.0...
Patching component oracle.oraolap, 19.0.0.0.0...
Patching component oracle.rdbms.hsodbc, 19.0.0.0.0...
Patching component oracle.network.client, 19.0.0.0.0...
Patching component oracle.ctx.atg, 19.0.0.0.0...
Patching component oracle.rdbms.install.common, 19.0.0.0.0...
Patching component oracle.oraolap.dbscripts, 19.0.0.0.0...
Patching component oracle.ldap.rsf.ic, 19.0.0.0.0...
Patching component oracle.install.deinstalltool, 19.0.0.0.0...
Patching component oracle.ldap.client, 19.0.0.0.0...
Patching component oracle.rdbms.rman, 19.0.0.0.0...
Patching component oracle.ovm, 19.0.0.0.0...
Patching component oracle.rdbms.drdaas, 19.0.0.0.0...
Patching component oracle.rdbms.hs_common, 19.0.0.0.0...
Patching component oracle.oraolap.api, 19.0.0.0.0...
Patching component oracle.network.listener, 19.0.0.0.0...
Patching component oracle.rdbms.dv, 19.0.0.0.0...
Patching component oracle.sdo.locator, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf, 19.0.0.0.0...
Patching component oracle.xdk.rsf, 19.0.0.0.0...
Patching component oracle.xdk, 19.0.0.0.0...
Patching component oracle.dbtoolslistener, 19.0.0.0.0...
Patching component oracle.rdbms.install.plugins, 19.0.0.0.0...
Patching component oracle.ldap.ssl, 19.0.0.0.0...
Patching component oracle.rdbms.lbac, 19.0.0.0.0...
Patching component oracle.mgw.common, 19.0.0.0.0...
Patching component oracle.precomp.lang, 19.0.0.0.0...
Patching component oracle.precomp.common, 19.0.0.0.0...
Patching component oracle.jdk, 1.8.0.201.0...
Patch 35042068 successfully applied.
Sub-set patch [32545013] has become inactive due to the application of a super-set patch [35042068].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2023-04-28_07-28-14AM_1.log
OPatch succeeded.
ようやく出会えた OPatch succeeded.!!!!!!!
3-3-4. 適用されたパッチバージョンの確認
次のコマンドで、適用済みパッチ情報を確認する。
本当ならこっち($ opatch lspatches
)
今回の私はこっち($ $ORACLE_HOME/OPatch/opatch lspatches -jdk $ORACLE_HOME/jdk
)
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ $ORACLE_HOME/OPatch/opatch lspatches -jdk $ORACLE_HOME/jdk
35042068;Database Release Update : 19.19.0.0.230418 (35042068)
32399816;OJVM RELEASE UPDATE: 19.11.0.0.210420 (32399816)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.
OPatch適用、成功!!!!!!
3-4. Patch Post-Installation (datapatch) 適用
上記までで、ORACLE_HOMEに新規パッチの適用が完了したので、続いてdatapatchを適用する。
- SQL*Plusにログイン。
$ sqlplus /nolog
- sysdbaユーザで入る。
SQL> Connect / as sysdba
- DBを起動する。
SQL> startup
- 全てのpdbをオープンする。
SQL> alter pluggable database all open;
- pdbの状態確認。
SQL> show pdbs
- oracleユーザに戻る。
SQL> quit
- OPatchディレクトリに移動。
% cd $ORACLE_HOME/OPatch
- リスナーオープン。
$ lsnrctl START [listener_name]
- datapatch実行。
% ./datapatch -verbose
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 28 08:10:19 2023
Version 19.19.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 3221223168 bytes
Fixed Size 9168640 bytes
Variable Size 1677721600 bytes
Database Buffers 1526726656 bytes
Redo Buffers 7606272 bytes
Database mounted.
Database opened.
SQL> alter pluggable database all open;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB2 READ WRITE NO
5 PDB3 READ WRITE NO
SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
[CDB1:oracle@dbhol:/opt/oracle/OPatch_new/35042068]$ cd $ORACLE_HOME/OPatch
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1/OPatch]$ lsnrctl START LISTENER
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 28-APR-2023 08:27:23
Copyright (c) 1991, 2023, Oracle. All rights reserved.
Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/dbhol/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbhol.livelabs.oraclevcn.com)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbhol.livelabs.oraclevcn.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 28-APR-2023 08:27:23
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/dbhol/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbhol.livelabs.oraclevcn.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
datapatchを実行したら、エラーが発生!?
[CDB1:oracle@dbhol:/opt/oracle/product/19c/dbhome_1/OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.19.0.0.0 Production on Fri Apr 28 08:17:14 2023
Copyright (c) 2012, 2023, Oracle. All rights reserved.
Log file for this invocation: /opt/oracle/cfgtoollogs/sqlpatch/sqlpatch_20665_2023_04_28_08_17_14/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)
Bootstrapping registry and package to current versions...done
Error: prereq checks failed!
verify_queryable_inventory returned ORA-20001: Latest xml inventory is not loaded into table
Prereq check failed, exiting without installing any patches.
Please refer to MOS Note 1609718.1 and/or the invocation log
/opt/oracle/cfgtoollogs/sqlpatch/sqlpatch_20665_2023_04_28_08_17_14/sqlpatch_invocation.log
for information on how to resolve the above errors.
SQL Patching tool complete on Fri Apr 28 08:17:21 2023
エラー記載の通り Datapatch: データベース 12c パッチ適用後の SQL 自動化 (Doc ID 1585822.1) を確認してみると、OPatchAutoの場合は自動的にSQLのパッチが適用されるみたいだ。
しかし、今回はOPatchを利用しているので、自動的にはSQLパッチは適用されないハズ・・・。
なぜだ・・・?
この後、1-2-2. DBバージョンの確認と同じように、DBバージョンが19.19になっていることを確認したが、更新されていなかった。
3-5. Patch Post-Installation (datapatch) 適用(再)
エラーを色々調査・試行錯誤を繰り返してみたが、エラー解消できず、検証環境を構築し直しリベンジ。(検証環境依存の何かがあったのか・・?)
3-5-1. datapatch適用(リベンジ)
手順は、3-4. Patch Post-Installation (datapatch) 適用 と同様!
-----------------------
datapatchリベンジ
-----------------------
[oracle@demodbsystem 35042068]$ cd $ORACLE_HOME/OPatch
[oracle@demodbsystem OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.19.0.0.0 Production on Tue May 16 06:22:14 2023
Copyright (c) 2012, 2023, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_37810_2023_05_16_06_22_14/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)
Bootstrapping registry and package to current versions...done
Determining current state...done
Current state of interim SQL patches:
Interim patch 34786990 (OJVM RELEASE UPDATE: 19.18.0.0.230117 (34786990)):
Binary registry: Installed
PDB CDB$ROOT: Applied successfully on 03-FEB-23 12.21.48.790862 PM
PDB DEMODB_PDB1: Applied successfully on 03-FEB-23 12.21.58.028065 PM
PDB PDB$SEED: Applied successfully on 03-FEB-23 12.21.58.028065 PM
PDB PDB1: Applied successfully on 03-FEB-23 12.21.58.028065 PM
Current state of release update SQL patches:
Binary registry:
19.19.0.0.0 Release_Update 230322020406: Installed
PDB CDB$ROOT:
Applied 19.18.0.0.0 Release_Update 230127005551 successfully on 03-FEB-23 12.21.48.785253 PM
PDB DEMODB_PDB1:
Applied 19.18.0.0.0 Release_Update 230127005551 successfully on 03-FEB-23 12.21.58.023420 PM
PDB PDB$SEED:
Applied 19.18.0.0.0 Release_Update 230127005551 successfully on 03-FEB-23 12.21.58.023420 PM
PDB PDB1:
Applied 19.18.0.0.0 Release_Update 230127005551 successfully on 03-FEB-23 12.21.58.023420 PM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED DEMODB_PDB1 PDB1
No interim patches need to be rolled back
Patch 35042068 (Database Release Update : 19.19.0.0.230418 (35042068)):
Apply from 19.18.0.0.0 Release_Update 230127005551 to 19.19.0.0.0 Release_Update 230322020406
No interim patches need to be applied
Installing patches...
Patch installation complete. Total patches installed: 4
Validating logfiles...done
Patch 35042068 apply (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/35042068/25183678/35042068_apply_DEMODB_CDBROOT_2023May16_06_23_37.log (no errors)
Patch 35042068 apply (pdb PDB$SEED): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/35042068/25183678/35042068_apply_DEMODB_PDBSEED_2023May16_06_25_44.log (no errors)
Patch 35042068 apply (pdb DEMODB_PDB1): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/35042068/25183678/35042068_apply_DEMODB_DEMODB_PDB1_2023May16_06_25_44.log (no errors)
Patch 35042068 apply (pdb PDB1): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/35042068/25183678/35042068_apply_DEMODB_PDB1_2023May16_06_25_44.log (no errors)
SQL Patching tool complete on Tue May 16 06:29:48 2023
3-5-2. バージョン確認 (パッチ適用後)
ちゃんとDBのパッチバージョンが RU19.19 に更新されていることを確認!
やはり、OPatch利用の場合は、datapatch適用も手動で必要なことを確認でき、モヤが晴れた
[oracle@demodbsystem OPatch]$ sqlplus / AS SYSDBA
SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 16 06:32:02 2023
Version 19.19.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
SQL> select PATCH_TYPE,ACTION, STATUS,DESCRIPTION, TARGET_VERSION, TARGET_BUILD_DESCRIPTION from DBA_REGISTRY_SQLPATCH;
PATCH_TYPE ACTION STATUS DESCRIPTION TARGET_VERSION TARGET_BUILD_DESCRIPTION
---------- --------- ---------- ------------------------------------------------------- --------------- ----------------
INTERIM APPLY SUCCESS OJVM RELEASE UPDATE: 19.18.0.0.230117 (34786990) 19.1.0.0.0 Feature Release
PATCH_TYPE ACTION STATUS DESCRIPTION TARGET_VERSION TARGET_BUILD_DESCRIPTION
---------- --------- ---------- ------------------------------------------------------- --------------- ----------------
RU APPLY SUCCESS DATABASE RELEASE UPDATE : 19.18.0.0.230117 (REL-JAN230131) (34765931) 19.18.0.0.0 Release_Update
PATCH_TYPE ACTION STATUS DESCRIPTION TARGET_VERSION TARGET_BUILD_DESCRIPTION
---------- --------- ---------- ------------------------------------------------------- --------------- ----------------
RU APPLY SUCCESS Database Release Update : 19.19.0.0.230418 (35042068) 19.19.0.0.0 Release_Update
完!
ログファイルも確認したが特に問題なさそうだった。
終わりに
今回、初めてのパッチ適用ということもあり、つまずきまくりましたが、何とか最後まで完了できうれしいです・・・
再掲:こちらもよければ是非!