DBAtlas · データベース運用アトラス

バイナリパッチ後にdatapatch -verboseでSQLレイヤーを更新

Oracleパッチ適用とライフサイクル

コマンド

# 1) After the binary patch (opatch apply), start the DB; all PDBs must be open:
sqlplus / as sysdba <<EOF
STARTUP;
ALTER PLUGGABLE DATABASE ALL OPEN;
EXIT;
EOF

# 2) Check only first, then apply:
cd $ORACLE_HOME/OPatch
./datapatch -prereq
./datapatch -verbose
# For specific PDBs: ./datapatch -verbose -pdbs PDB1,PDB2

# 3) Recompile invalid objects:
sqlplus / as sysdba @?/rdbms/admin/utlrp.sql

# Logs: $ORACLE_BASE/cfgtoollogs/sqlpatch/

概要

datapatchは、Oracleホーム内のバイナリパッチのSQL/PL-SQLコンポーネント(ディクショナリ、パッケージ)をCDBルート、PDB$SEED、オープン中の全PDBに適用し、結果をDBA_REGISTRY_SQLPATCHに記録する。ロールバックされたパッチのSQL部分も元に戻す。

使用する場面

すべてのRU/RUR/個別バイナリパッチ適用またはロールバックの後。新しくパッチ適用したホームに移動またはアンプラグ/プラグインしたPDBに。DBA_REGISTRY_SQLPATCHがWITH ERRORSを示す場合の再実行に。

注意

クローズまたはMOUNTEDのPDBにはパッチが適用されず、RESTRICTEDモードでオープンする場合がある。先にすべてオープンする。高負荷時に実行しない(ディクショナリロック、パッケージの無効化)。RACでは1つのノードから1回だけ実行する。Data Guardではdatapatchはプライマリでのみ実行する。変更はREDOを通じてスタンバイに反映される(先にスタンバイのバイナリにパッチを適用する)。

DBAtlas で開く →

関連項目