前提条件と環境の確認
本手順は、Oracle 19c(19.3.0.0.0)を対象としたパッチ適用プロセスを解説します。作業前に、プライマリ・スタンバイ両サーバーの環境変数($ORACLE_HOME)が適切に設定されていることを確認してください。
1. OPatchツールの更新
最新のRU(Release Update)を適用するためには、所定のバージョン以上のOPatchツールが必要です。以下のコマンドで既存のディレクトリを退避し、新しいツールを配置します。
# 旧OPatchのバックアップと新ツールの展開
cd $ORACLE_HOME
mv OPatch OPatch_backup
unzip -q /tmp/p6880880_190000_linux64.zip -d $ORACLE_HOME
# 権限の適正化
chown -R oracle:oinstall $ORACLE_HOME/OPatch
chmod -R 755 $ORACLE_HOME/OPatch
# バージョン確認
opatch version
2. 事前バックアップの実施
万が一の事態に備え、Oracleホームディレクトリ全体をアーカイブします。
tar -czvf db_home_backup_$(date +%Y%m%d).tar.gz -C $ORACLE_HOME .
3. データベースおよびリスナーの停止
パッチ適用のため、稼働中のプロセスをすべて停止します。
# リスナー停止
lsnrctl stop
# データベースの停止
sqlplus / as sysdba <<EOF
shutdown immediate;
exit;
EOF
4. パッチの適用
パッチファイルを展開し、適用前の競合チェックを実行してからパッチを反映させます。
# パッチの展開
unzip /tmp/patch_35943157.zip -d /tmp/patches/
cd /tmp/patches/35943157
# 競合チェック
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
# パッチ適用 (スタンバイ、その後プライマリの順に実施)
opatch apply
5. データベースの更新処理(Post-patch)
SQL層の更新を行うため、データベースを起動しdatapatchを実行します。
# データベースの起動
lsnrctl start
sqlplus / as sysdba <<EOF
startup;
exit;
EOF
# SQL変更の反映
cd $ORACLE_HOME/OPatch
./datapatch -verbose
6. OS権限の設定
セキュリティのため、extjob実行ファイルの所有者と権限を修正します。
chown root $ORACLE_HOME/bin/extjob
chmod 4750 $ORACLE_HOME/bin/extjob
7. パッチ適用状況の確認
以下のクエリで、リポジトリにパッチ情報が正しく登録されているか確認します。
sqlplus / as sysdba <<EOF
SELECT version, version_full FROM dba_registry;
EXIT;
EOF
8. パッチのロールバック手順
適用したパッチを元に戻す必要がある場合は、以下の手順に従います。
# 1. データベース停止
lsnrctl stop
sqlplus / as sysdba <<EOF
shutdown immediate;
exit;
EOF
# 2. ロールバックの実行
cd $ORACLE_HOME/OPatch
opatch rollback -id 35943157
# 3. データベース再起動とSQLの整合性確保
lsnrctl start
sqlplus / as sysdba <<EOF
startup;
-- datapatchでロールバックが必要な場合のみ実行
-- ./datapatch -verbose
exit;
EOF