3.4 REPAIR FAILURE
目的
REPAIR FAILURE
コマンドを使用すると、データ・リカバリ・アドバイザで識別されたデータベース障害を修復できます。
推奨手順として、まずLIST
FAILURE
を実行して障害を表示し、次にADVISE FAILURE
を実行して修復オプションを表示し、REPAIR FAILURE
を実行して障害を修復します。
前提条件
ターゲット・データベース・インスタンスが起動されている必要があります。データベースは単一インスタンス・データベースであり、フィジカル・スタンバイ・データベース以外である必要があります。
1つのRMANセッションのみがREPAIR FAILURE
コマンドを実行していることを確認します。REPAIR FAILURE ...PREVIEW
だけは例外で、RMANの同時セッションで使用できます。
自動修復を実行するには、データ・リカバリ・アドバイザで特定のバックアップおよびアーカイブREDOログ・ファイルが必要になる場合があります。リカバリに必要なファイルが利用できない場合、リカバリを行うことはできません。
使用上の注意
修復は、可能な場合は常に統合されるため、1回の修復で複数の障害を修復することができます。ただし、REPAIR FAILURE
で、識別された各障害を正常に修復するには、現在のセッションで明示的にADVISE FAILURE
を実行する必要があります。通常、REPAIR
セッションでは、次のコマンドが繰り返し使用されます。
-
REPAIR FAILURE;
-
LIST FAILURE;
-
ADVISE FAILURE;
-
REPAIR FAILURE;
RMANは、まだ障害が関連しているかどうかを常に検証し、修復済の障害を自動的にクローズします。修復済の障害、およびADVISE FAILURE
の実行後に新しい障害が報告がされたために不要となった障害をRMANが修復しようとすることはありません。
デフォルトでは、REPAIR FAILURE
の実行を開始する前に確認を求められます。修復を実行した後で、既存の障害もすでに修復されている可能性があるため、RMANは既存のすべての障害を再評価します。
関連項目:
データ・リカバリ・アドバイザを使用して、障害を診断および修復する方法の詳細な例については、例3-17を参照してください。
Oracle RACおよびデータ・リカバリ・アドバイザ
Oracle RACデータベースのすべてのインスタンスでデータ障害が発生した場合に、単一インスタンス・モードでデータベースをマウントしてデータ・リカバリ・アドバイザを使用すると、制御ファイル、SYSTEM
データファイルおよびディクショナリの障害を検出して修復できます。また、ヘルス・チェックを開始して、他のデータベース・コンポーネントにデータ障害がないかをテストすることもできます。この方法では、データファイルにアクセスできないなど、他のクラスタ・インスタンスのローカルのデータ障害を検出することはできません。
セマンティクス
repair
構文要素 | 説明 |
---|---|
|
自動診断リポジトリに記録された障害を修復します。
|
USING ADVISE OPTION integer |
修復オプションは、オプション番号で指定します(障害番号では指定しません)。修復オプション番号は |
|
確認のプロンプトを抑止します。 コマンド・ファイルの |
|
修復は行わず、すべての修復アクションとコメントが記述されたスクリプトを生成します。デフォルトでは、スクリプトは標準出力に表示されます。 |
|
選択したデータベースのデータ・ファイルをすべて修復します。CDBのすべてのデータファイルを修復するには、rootに接続した状態でREPAIR DATABASE コマンドを実行します。
また、可能な場合、 |
PLUGGABLE DATABASE pdb_name |
カンマ区切りのリストで指定された1つ以上のPDBのデータ・ファイルをすべて修復します。 |
|
CDBルートのデータファイルを修復します。 |
|
修復する1つ以上のデータファイルのリストを指定します。データ・ファイルをリストする方法の詳細は、datafileSpecを参照してください。 |
|
修復する1つ以上の表領域の名前を指定します。表領域の修復中、RMANは表領域名をデータファイルのリストに内部的に変換します。 CDBでは、rootの表領域を修復します。PDBでは、選択されたPDBの表領域を修復します。 |
|
修復するデータ・ファイルに対する上限としてリストア・ポイントを指定します。指定した値は含まれます。 |
|
修復の終了時刻、SCNまたはログ順序番号を指定します。この句の使用方法の詳細は、untilClauseを参照してください。 |
例
例3-17 障害の修復
この例では、データ・リカバリ・アドバイザが認識できるすべての障害を修復します。この例では、2つの障害(データファイルの欠落、および破損ブロックのあるデータファイル)を修復します。リカバリ後、RMANでは、データベースをオープンするかどうかを確認するメッセージが表示されます(ユーザー入力のテキストは太字で示しています)。
RMAN> LIST FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 142 HIGH OPEN 23-APR-13 One or more non-system datafiles are missing 101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks RMAN> ADVISE FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 142 HIGH OPEN 23-APR-13 One or more non-system datafiles are missing 101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks analyzing automatic repair options; this may take some time using channel ORA_DISK_1 analyzing automatic repair options complete Mandatory Manual Actions ======================== no manual actions available Optional Manual Actions ======================= 1. If file /disk1/oradata/prod/users01.dbf was unintentionally renamed or moved, restore it Automated Repair Options ======================== Option Repair Description ------ ------------------ 1 Restore and recover datafile 28; Perform block media recovery of block 56416 in file 1 Strategy: The repair includes complete media recovery with no data loss Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_660500184.hm RMAN> REPAIR FAILURE; Strategy: The repair includes complete media recovery with no data loss Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_475549922.hm contents of repair script: # restore and recover datafile alter database datafile 28 offline; restore datafile 28; recover datafile 28; alter database datafile 28 online; # block media recovery recover datafile 1 block 56416; Do you really want to execute the above repair (enter YES or NO)? YES executing repair script sql statement: alter database datafile 28 offline Starting restore at 23-APR-13 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00028 to /disk1/oradata/prod/users01.dbf channel ORA_DISK_1: reading from backup piece /disk2/PROD/backupset/2013_04_18/o1_mf_nnndf_TAG20130418T182042_32fjzd3z_.bkp channel ORA_DISK_1: piece handle=/disk2/PROD/backupset/2013_04_18/o1_mf_nnndf_TAG20130418T182042_32fjzd3z_.bkp tag=TAG20130418T182042 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:03 Finished restore at 23-APR-13 Starting recover at 23-APR-13 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:01 Finished recover at 23-APR-13 sql statement: alter database datafile 28 online Starting recover at 23-APR-13 using channel ORA_DISK_1 searching flashback logs for block images until SCN 429690 finished flashback log search, restored 1 blocks starting media recovery media recovery complete, elapsed time: 00:00:03 Finished recover at 23-APR-13 repair failure complete
例3-18 修復のプレビュー
次の例では、現行のセッションで最後に実行したADVISE FAILURE
コマンドの最初の修復オプションによる修復をプレビューします。この例では、LIST FAILURE
およびADVISE FAILURE
の各コマンドの出力例は示されていません。
RMAN> LIST FAILURE; . . . RMAN> ADVISE FAILURE; . . . RMAN> REPAIR FAILURE PREVIEW; Strategy: The repair includes complete media recovery with no data loss Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_3200987003.hm contents of repair script: # block media recovery recover datafile 1 block 56416;
SPOOL
とREPAIR FAILURE ... PREVIEW
を併用すると、修復スクリプトをファイルに書き込むことができます。その後に、このスクリプトを編集して手動で実行できます。次の例では、修復プレビューのログを/tmp/repaircmd.dat
にスプールします。
RMAN> SPOOL LOG TO '/tmp/repaircmd.dat'; RMAN> REPAIR FAILURE PREVIEW; RMAN> SPOOL LOG OFF;