この記事では「完全リカバリ」について説明します。
完全リカバリとは
データベースをARCHIVELOGモードで運用している場合、一部の例外をのぞいて障害発生直前の状態にデータベースを復旧できます。この復旧のことを「完全リカバリ」といいます。
完全リカバリは、一般的に使用される復旧手順、という理解で間違いありません。
リストア(RMAN RESTOREコマンド)
RMANのRESTOREコマンドを実行することでリストアを実行できます。

完全リカバリの実行手順
データ格納用の永続表領域(SYSTEM表領域、UNDO表領域以外の永続表領域)に障害が発生したとき、正確にはデータの格納用の永続表領域を構成するデータファイルに障害が発生した場合、データベースをオープンしたまま復旧作業を実行できます。
この場合の復旧手順は以下の通りです。
- 障害が発生したデータファイルで構成されている永続表領域をいったんOFFLINEにする
- 障害対処のため即時オフラインを示すOFFLINE IMMEDIATEオプションを指定する
- RMANのRESTORE DATAFILEコマンドを実行して障害が発生したデータファイルをリストアする
- RMANのRECOVER DATAFILEコマンドを実行して障害が発生したデータファイルをリカバリする
- 復旧した永続表領域をONLINEにする
破損状況に応じた完全リカバリの実行手順
データ格納用の永続表領域(SYSTEM表領域、UNDO表領域以外の永続表領域)に障害が発生した場合は、データベースをオープンしたまま復旧作業を実行できます。
SYSTEM表領域、UNDO表領域に障害が発生した場合
SYSTEM/UNDO表領域に障害が発生したとき、正確にはSYSTEM/UNDO表領域を構成するデータファイルに障害が発生した場合、Oracleによりインスタンスが強制終了されます。
この時の復旧作業は以下の通りです。
- MOUNTモードでインスタンスを起動する
- RMANのRESTORE TABLESPACEまたはRESTORE DATAFILEコマンドを実行して、障害が発生したデータファイルをリストアする
- RMANのRECOVER TABLESPACEまたはRECOVER DATAFILEコマンドを実行して障害が発生したデータファイルをリカバリする
- データベースをOPENする
すべてのデータファイルに障害が発生した場合
すべてのデータファイルに障害が発生した場合(制御ファイル、オンラインログファイルには障害が発生していない場合)は、Oracleによりインスタンスが強制終了されます。
この時の復旧手順は以下の通りです。
- MOUNTモードでインスタンスを起動する
- RMANのRESTORE DATABASEコマンドを実行して全てのデータファイルをリストアする
- RMANのRECOVER DATABASEコマンドを実行してすべてのデータファイルをリカバリする
- データベースをOPENする
NOARCHIVELOGモードの障害からの復旧
NOARCHIVELOGモードのデータベースで障害が発生した場合、障害発生直前の状態に復旧することができないため、直近のバックアップ取得時点の状態に復旧することになります。