RMANのデータリカバリアドバイザによるリカバリ

この記事ではRMANのデータリカバリアドバイザによるリストアについて解説します。

 データリカバリアドバイザとは

データリカバリアドバイザとはデータベースの障害を診断し、必要に応じて修復を行うツールです。

RMANによるコマンド操作のほか、GUIによる使用も可能です。

コマンド一つで障害の診断や自動修復が行えるので、障害復旧が手早く行えます。

今回はPDBのSYSTEM表領域のデータファイルを削除して、障害を発生させた状態からデータリカバリアドバイザによるリカバリを行います。


 障害の診断

最初にLIST FAILUREコマンドで障害を診断します。

RMANに接続し、コマンドを実行します。

RMAN> LIST FAILURE;
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
データベース・ロール: PRIMARY
List of Database Failures
=========================
障害ID 優先度ステータス    検出時間 サマリー
------ -------- --------- -------- -------
1222   CRITICAL OPEN      24-10-16 システム・データファイル9: 'C:\APP\XXXXX\SYSTEM01.DBF'が見つかりません

表示結果からSYSTEM表領域のデータファイルが消えていることが確認できます。


 修復操作の確認

ADVISE FAILUREコマンドで修復操作を確認します。

RMAN> ADVISE FAILURE;
データベース・ロール: PRIMARY
List of Database Failures
=========================
障害ID 優先度ステータス    検出時間 サマリー
------ -------- --------- -------- -------
1222   CRITICAL OPEN      24-10-16 システム・データファイル9: 'C:\APP\XXXXX\SYSTEM01.DBF'が見つかりません
自動修復オプションを分析中です。これには少し時間がかかる場合があります
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=617 デバイス・タイプ=DISK
自動修復オプションの分析が完了しました
必須の手動アクション
========================
no manual actions available
Optional Manual Actions
=======================
1. 意図せずにファイルC:\APP\XXXXX\SYSTEM01.DBFの名前の変更または移動が行われていた場合 リストアします
2. データベースをシャットダウンし、マウント・モードで再起動すると、自動修復が可能になります
自動修復オプション
========================
オプション 修復 説明
------ ------------------
1      データファイル9をリストアおよびリカバリします
  計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます
  Repair script: C:\APP\XXXXX\reco_802058231.hm

自動修復オプションにてデータファイルのリストアとリカバリが必要なことがわかります。


 自動修復の実行

REPAIR FAILUREコマンドで自動修復を実行します。

コマンド実行後に処理内容の確認があり、問題なければyesを入力すると処理が実行されます。

RMAN> REPAIR FAILURE;
計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます
Repair script: C:\APP\XXXXX\reco_802058231.hm
修復スクリプトの内容:
   # restore and recover datafile
   sql 'XEPDB1' 'alter database datafile 9 offline';
   restore ( datafile 9 );
   recover datafile 9;
   sql 'XEPDB1' 'alter database datafile 9 online';
この修復を実行しますか(YESまたはNOを入力してください)。 yes
修復スクリプトを実行しています
SQL文: alter database datafile 9 offline
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: repairコマンドが10/16/2024 17:24:39で失敗しました
RMAN-03015: ストアド・スクリプトRepair Scriptにエラーが発生しました
RMAN-03009: sqlコマンド(defaultチャネル上)が10/16/2024 17:24:39で失敗しました
RMAN-11003: SQL文: alter database datafile 9 offlineの解析/実行中に障害が発生しました。
ORA-01541: SYSTEM表領域はオフラインにできません。必要な場合はシャットダウンしてください

データファイルの復旧で表領域をオフラインにしようとしましたが、SYSTEM表領域はオフラインにできないためエラーが発生しました。

そのため手動でデータベースをシャットダウンし、再度実行します。

RMAN> ALTER PLUGGABLE DATABASE xepdb1 CLOSE ABORT;
文が処理されました
RMAN> REPAIR FAILURE;
計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます
Repair script: C:\APP\IWI33326\PRODUCT\21C\diag\rdbms\xe\xe\hm\reco_802058231.hm
修復スクリプトの内容:
   # restore and recover datafile
   sql 'XEPDB1' 'alter database datafile 9 offline';
   restore ( datafile 9 );
   recover datafile 9;
   sql 'XEPDB1' 'alter database datafile 9 online';
この修復を実行しますか(YESまたはNOを入力してください)。 yes
修復スクリプトを実行しています
SQL文: alter database datafile 9 offline
restoreを24-10-16で開始しています
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルORA_DISK_1: データファイル00009をC:\APP\XXXXX\SYSTEM01.DBFにリストアしています
チャネルORA_DISK_1: バックアップ・ピースC:\APP\XXXXX\DATABASE\1P37O0IT_57_1_1から読取り中です
チャネルORA_DISK_1: ピース・ハンドル=C:\APP\XXXXX\DATABASE\1P37O0IT_57_1_1 タグ=TAG20241016T170945
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:01
restoreを24-10-16で終了しました
recoverを24-10-16で開始しています
チャネルORA_DISK_1の使用
メディア・リカバリを開始しています
メディア・リカバリが完了しました。経過時間: 00:00:00
recoverを24-10-16で終了しました
SQL文: alter database datafile 9 online
障害の修復が完了しました

自動でリカバリが完了しました。

PDBをオープンして対応が完了となります。