※本記事はDaniel Overby Hansenから許可をもらい彼の記事である、
(How To Roll Back After Patching)を翻訳した内容となります。
元記事はこちらをご参照ください。
お客様から次のような質問を受けました。
“AutoUpgrade とアウトオブプレース・パッチ適用を使用してデータベースを 19.25 にパッチしました。ロールバックするにはどうすれば良いですか?”
基本的に、ロールバックはデータベースのパッチ適用と同じ手順になります。
上位のOracleホームから下位のOracleホームに適用するだけです。詳細を見ていきましょう。
AutoUpgrade
お客様がパッチ適用にAutoUpgradeを使用していると聞いて嬉しく思います。
これは私が推奨する方法で、多くの利点があります。
AutoUpgradeを使用してOracleデータベースにパッチを適用する場合は、
ロールバックも可能ですが、本番稼働前にのみ実行できます。
java -jar autoupgrade.jar -restore -jobs <n>
- nはパッチ適用ジョブのジョブIDです。
- AutoUpgradeは -restoreによって全ての操作を元に戻します。
AutoUpgradeは、ロールバック時にはFlashback Databaseのみ利用可能です。
そのため、ユーザがすでにデータベースに接続してデータを追加または変更している場合、
そのデータは消えてしまいます。
繰り返しますが、AutoUpgradeは本番稼働開始前のロールバックにのみ使用してください。
稼働開始後は手動でロールバックする必要があります。
手動でのロールバック
本番稼働開始後でも、手動であればロールバックできます。
19.25から19.24にロールバックする例は次の通りです。
- まずは環境設定をします。
export OLD_ORACLE_HOME=/u01/app/oracle/product/dbhome_19_24
export NEW_ORACLE_HOME=/u01/app/oracle/product/dbhome_19_25
export ORACLE_HOME=$NEW_ORACLE_HOME
export PATH=$ORACLE_HOME/bin:$PATH
- オプションとして、新しいOracleホームでDatapatchの健全性チェックを実行します。
$ORACLE_HOME/OPatch/datapatch -sanity_checks
- 新しいOracleホームで実行されているデータベースをシャットダウンします。
sqlplus / as sysdba<<EOF
shutdown immediate
EOF
- 次のファイルを古いOracleホームに戻します。
- PFILE
- SPFILE
- パスワードファイル
- ネットワークファイル(tnsnames.oraやsqlnet.oraなど)
- 一部のファイルは存在しないか、Oracleホーム外に配置されている可能性があります。
- Oracleホームに保存される可能性のある他のファイルについてはこのブログ投稿を参照してください。
mv $NEW_ORACLE_HOME/dbs/init$ORACLE_SID.ora $OLD_ORACLE_HOME/dbs
mv $NEW_ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $OLD_ORACLE_HOME/dbs
mv $NEW_ORACLE_HOME/dbs/orapw$ORACLE_SID $OLD_ORACLE_HOME/dbs
mv $NEW_ORACLE_HOME/network/admin/sqlnet.ora $OLD_ORACLE_HOME/network/admin
mv $NEW_ORACLE_HOME/network/admin/tnsnames.ora $OLD_ORACLE_HOME/network/admin
- Oracleホームを更新して/etc/oratabを古いホームに設定します。
- .bashrcプロファイルを更新して、古いOracleホームを反映します。
- 古いOracleホームでデータベースを起動します。
export ORACLE_HOME=$OLD_ORACLE_HOME
export PATH=$ORACLE_HOME/bin:$PATH
sqlplus / as sysdba<<EOF
startup
- Datapatchを実行します。
$ORACLE_HOME/OPatch/datapatchあ
- 最後にOracleホームのパスを指す内部ディレクトリを修正します。
@?/rdbms/admin/utlfixdirs.sql
Datapatch
ロールバックする場合は、Datapatcを実行する必要あります。ロールバックしていることが自動的に検出され、必要なアクションが実行されます。
各パッチにはデータベースに変更を加える適用スクリプトがあります。Datapatchは、パッチ適用中に適用スクリプトを実行します。
このビデオで、Datapatchについてさらに詳しく知ることができます。
通常は、元のOracleホームにロールバックしますが、これは必須ではありません。
次のようなシナリオがサポートされています。
- 19.23から19.25へのパッチ
- 19.24にロールバック
ロールバックを学ぶためには?
AutoUpgrade、手動でのロールバックを試すことができるハンズオンラボがあります。
- 全て無償で実行できます。
- ブラウザだけで実行できます。
パッチ適用を楽しんでください!
さらに読む
- Blog post, Files to Move During Oracle Database Out-Of-Place Patching
- Blog post, Can I Run Datapatch When Users Are Connected
- Virtual Classroom, Oracle Database Release and Patching Strategy for 19c and 23ai
- Virtual Classroom, One-Button Patching with AutoUpgrade – Making every DBA’s life easier
- Hands-on lab, instructions for roll back
- Mike Dietrich, blog post, Rolling back or removing all patch SQL changes
- Mike Dietrich, blog post, datapatch stores rollback patching files in the database
コメントを残す