RMAN⑤ リカバリ・アドバイザ

DBが起動しなくなった時に、Oracle自身にリカバリ方法のアドバイス&実行させる方法となります。全損などの障害には対応できませんが、調査の一環としても利用できるかと思います。

※12c R2 時点では、RAC環境ではリカバリアドバイザは利用できません。
RMAN-05533: Command LIST FAILURE is not supported on RAC database

主な流れとしては、以下となります。
・障害発覚
・RMAN起動
・list failure コマンドでOracleが認識している障害を表示
・advise failure コマンドで修復方法を表示。(手動と自動が表示される)
・自動修復可能な場合は、repair failure コマンドで修復。自動修復出来ない場合は、手動で修復

簡単な例:

1.rmanでバックアップしておく

backup database plus archivelog delete all input;

2.障害準備

DBを停止し、データファイル(USERS01.DBF)を削除

3.DBを起動し、障害を認識させる

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 2533359616 bytes
Fixed Size 8750016 bytes
Variable Size 687868992 bytes
Database Buffers 1828716544 bytes
Redo Buffers 8024064 bytes
データベースがマウントされました。
ORA-01157: データファイル4を識別/ロックできません –
DBWRトレース・ファイルを参照してください
ORA-01110: データファイル4: ‘C:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF’

4.rman 起動

5.障害一覧表示(list failure)
RMAN> list failure;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
データベース・ロール: PRIMARY

データベース障害のリスト
=========================

障害ID 優先度ステータス 検出時間 サマリー
—— ——– ——— ——– ——-
374 HIGH OPEN 17-09-01 SYSTEM以外のデータファイルの1つ以上でメディア・リカバリが必要です
202 HIGH OPEN 17-09-01 SYSTEM以外のデータファイルが1つ以上見つかりません

6. 修復方法を表示(advise failure)

RMAN> advise failure;

データベース・ロール: PRIMARY

データベース障害のリスト
=========================

障害ID 優先度ステータス 検出時間 サマリー
—— ——– ——— ——– ——-
374 HIGH OPEN 17-09-01 SYSTEM以外のデータファイルの1つ以上でメディア・リカバリが必要です
202 HIGH OPEN 17-09-01 SYSTEM以外のデータファイルが1つ以上見つかりません

自動修復オプションを分析中です。これには少し時間がかかる場合があります
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=11 デバイス・タイプ=DISK
自動修復オプションの分析が完了しました

必須の手動アクション
========================
使用可能な手動アクションがありません

オプションの手動アクション
=======================
1. 適切でないバージョンのデータファイルC:\APP\ORACLE\ORADATA\ORCL\USERS01.DBFをリストアした場合、適切なバージョンに置き換えます
2. 意図せずにファイルC:\APP\ORACLE\ORADATA\ORCL\USERS01.DBFの名前の変更または移動が行われていた場合リストアします

自動修復オプション
========================
オプション 修復 説明
—— ——————
1 データファイル4をリストアおよびリカバリします
計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます
修復スクリプト: C:\APP\ORACLE\diag\rdbms\orcl\orcl\hm\reco_3471312696.hm

7. 自動修復実行(repair failure)

RMAN> repair failure;

計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます
修復スクリプト: C:\APP\ORACLE\diag\rdbms\orcl\orcl\hm\reco_3471312696.hm

修復スクリプトの内容:
# restore and recover datafile
restore ( datafile 4 );
recover datafile 4;
sql ‘alter database datafile 4 online’;

この修復を実行しますか(YESまたはNOを入力してください)。 yes
修復スクリプトを実行しています

restoreを18-06-26で開始しています
チャネルORA_DISK_1の使用

チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルORA_DISK_1: データファイル00004をC:\APP\ORACLE\ORADATA\ORCL\USERS01.DBFにリストアしています
チャネルORA_DISK_1: バックアップ・ピースC:\APP\ORACLE\ORADATA\ORCL\BACK\ORCL_3KT6DP3E_1_1から読取り中です
チャネルORA_DISK_1: ピース・ハンドル=C:\APP\ORACLE\ORADATA\ORCL\BACK\ORCL_3KT6DP3E_1_1 タグ=TAG20180626T124118
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:01
restoreを18-06-26で終了しました

recoverを18-06-26で開始しています
チャネルORA_DISK_1の使用

メディア・リカバリを開始しています
メディア・リカバリが完了しました。経過時間: 00:00:00

recoverを18-06-26で終了しました

SQL文: alter database datafile 4 online
障害の修復が完了しました

データベースをオープンしますか(YESまたはNOを入力してください)。 yes
データベースがオープンしました。

以上となります。