制御ファイルのリストア
データベース制御ファイルが失われるか破損したりした場合は、ファイル レベル復旧を実行してリストアできます。ファイル レベル復旧が成功した後、手動で制御ファイルを回復する必要があります。
以下の手順に従います。
- root ユーザとしてターゲット マシンにログインします。
- Oracle インスタンスをシャットダウンします。
SQL>shutdown abort
- nomount 状態でデータベースを起動します。
SQL>startup nomount
- すべての制御ファイルのパスをリスト表示します。
SQL> show parameter control_files;
NAME TYPE VALUE
------------- -------- -------------
control_files string /opt/oracle/oradata/lynx/control01.ctl, /opt/oracle/flash_recovery_area/lynx/control02.ctl
- リストア ウィザードを使用して、制御ファイルをリストアします。リストア プロセスの詳細については、「Linux ノードでファイル レベル復旧を実行する方法」を参照してください。
- リストア ウィザードに関する以下の情報を指定し、ジョブをサブミットします。
- ファイルやフォルダを選択する場合は、制御ファイルの必要な名前を入力して検索します。制御ファイルがすべて選択されるまで、この手順を繰り返します。
例: 「control01.ctl」と入力して検索します。
- [ターゲット マシン]ページで、以下の情報を入力します。
- [元の場所にリストアする]を選択します。
- ターゲット Oracle サーバのホスト名または IP アドレスを入力します。
- ターゲット Oracle サーバの root ユーザ名とパスワードを入力します。
- [競合の解決]オプションの[既存ファイルを上書きする]を選択します。
- ファイルやフォルダを選択する場合は、制御ファイルの必要な名前を入力して検索します。制御ファイルがすべて選択されるまで、この手順を繰り返します。
- すべての制御ファイルがリストアされたら、データベースをマウントして開きます。
$sqlplus / as sysdba
SQL>alter database mount;
- RECOVER コマンドでデータベースを回復し、USING BACKUP CONTROLFILE 節を追加します。
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
- 要求されたアーカイブ ログを適用します。
注: 必要なアーカイブ ログがない場合、必要な REDO レコードがオンライン REDO ログにあることを意味します。この状態は、インスタンスが失敗したときに、アーカイブされていない変更がオンライン ログにあると発生します。オンライン REDO ログ ファイルのフル パスを指定し、Enter キーを押すことができます(適切なログが見つかるまでにこの操作を数回試行する必要がある場合があります)。
例:
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 1035184 generated at 05/27/2014 18:12:49 needed for thread 1
ORA-00289: suggestion :
/opt/oracle/flash_recovery_area/LYNX/archivelog/2014_05_27/o1_mf_1_6_%u_.arc
ORA-00280: change 1035184 for thread 1 is in sequence #6
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/opt/oracle/oradata/lynx/redo03.log
Log applied.
- Media recovery complete.
- リカバリ プロセスが完了した後に、RESETLOGS 句を使用してデータベースを開きます。
SQL> alter database open resetlogs;
制御ファイルが正常に回復されます。