3.4 REPAIR FAILURE

目的

REPAIR FAILUREコマンドを使用すると、データ・リカバリ・アドバイザで識別されたデータベース障害を修復できます。

推奨手順として、まずLIST FAILUREを実行して障害を表示し、次にADVISE FAILUREを実行して修復オプションを表示し、REPAIR FAILUREを実行して障害を修復します。

ノート:

Oracle Database 19c以降、データ・リカバリ・アドバイザ(DRA)機能は非推奨になりました。

DRAの非推奨には、LIST FAILUREADVISE FAILUREREPAIR FAILUREおよびCHANGE FAILUREのOracle Recovery Manager (RMAN)コマンドの非推奨が含まれています。データベース管理者はこれらのコマンドにアクセスできなくなります。DRAに代わる機能はありません。

前提条件

ターゲット・データベース・インスタンスが起動されている必要があります。データベースは単一インスタンス・データベースであり、フィジカル・スタンバイ・データベース以外である必要があります。

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::=

セマンティクス

repair

構文要素 説明

REPAIR FAILURE

自動診断リポジトリに記録された障害を修復します。

REPAIR FAILUREを他のコマンド・オプションを指定しないで実行すると、RMANは現行のセッションで最後に実行したADVISE FAILUREコマンドの最初の修復オプションを使用します。

   USING ADVISE OPTION integer

修復オプションは、オプション番号で指定します(障害番号では指定しません)。修復オプション番号はADVISE FAILUREコマンドで取得できます。

   NOPROMPT

確認のプロンプトを抑止します。

コマンド・ファイルのREPAIR FAILUREを実行する場合は、これがデフォルトのオプションです。

   PREVIEW

修復は行わず、すべての修復アクションとコメントが記述されたスクリプトを生成します。デフォルトでは、スクリプトは標準出力に表示されます。SPOOLコマンドを使用すると、編集可能なファイルにスクリプトを書き込むことができます(例3-18を参照)。

DATABASE

選択したデータベースのデータ・ファイルをすべて修復します。CDBのデータ・ファイルをすべて修復するには、rootに接続した状態でREPAIR DATABASEコマンドを実行します。

また、可能な場合、REPAIRは自動的にファイルをオフラインにしてリストアとリカバリを行い、再びオンラインに戻します。

PLUGGABLE DATABASE pdb_name

カンマ区切りのリストで指定された1つ以上のPDBのデータ・ファイルをすべて修復します。

DATABASE ROOT

CDBで、rootのデータ・ファイルを修復します。SYSDBA権限またはSYSBACKUP権限を持つ共通ユーザーとして、rootに接続します。

DATAFILE datafileSpec

修復する1つ以上のデータファイルのリストを指定します。データ・ファイルをリストする方法の詳細は、datafileSpecを参照してください。

TABLESPACE tablespace_name

修復する1つ以上の表領域の名前を指定します。表領域の修復中、RMANは表領域名をデータファイルのリストに内部的に変換します。

CDBでは、rootの表領域を修復します。PDBでは、選択されたPDBの表領域を修復します。

TO RESTORE POINT restore_point_name

修復するデータ・ファイルに対する上限としてリストア・ポイントを指定します。指定した値は含まれます。

untilClause

修復の終了時刻、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;

SPOOLREPAIR FAILURE ... PREVIEWを併用すると、修復スクリプトをファイルに書き込むことができます。その後に、このスクリプトを編集して手動で実行できます。次の例では、修復プレビューのログを/tmp/repaircmd.datにスプールします。

RMAN> SPOOL LOG TO '/tmp/repaircmd.dat';
RMAN> REPAIR FAILURE PREVIEW;
RMAN> SPOOL LOG OFF;