制御ファイルが全損した場合のRMANによるリストアはリカバリカタログを作成していると簡単です。
SQL> SELECT name FROM v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/flash_recovery_area/orcl/control02.ctl
SQL> !rm -rf /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/flash_recovery_area/orcl/control02.ctl
擬似障害のためにコントロールファイルを全部削除します。
SQL> SHUTDOWN ABORT
ORACLEインスタンスがシャットダウンされました。
SQL> STARTUP
ORACLEインスタンスが起動しました。
Total System Global Area 839282688 bytes
Fixed Size 2233000 bytes
Variable Size 578817368 bytes
Database Buffers 251658240 bytes
Redo Buffers 6574080 bytes
ORA-00205: ?????????????????????????????????????????
インスタンスをシャットダウンし、スタートさせようとするとエラーで終わってしまいます。
SQL> SELECT status FROM v$instance;
STATUS
------------------------------------
STARTED
NOMUNT状態で止まってしまいます。
[oracle@node01 ~]$ rman target / catalog rcatowner/password@rcat
Recovery Manager: Release 11.2.0.3.0 - Production on 水 4月 22 14:46:10 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
ターゲット・データベース: ORCLに接続されました(マウントされていません)
リカバリ・カタログ・データベースに接続されました。
リカバリカタログ付きでrmanを起動します。
RMAN> restore CONTROLFILE;
restoreが開始されました(開始時間: 15-04-22)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=133 デバイス・タイプ=DISK
チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_DISK_1: 制御ファイルをリストア中です
チャネルORA_DISK_1: バックアップ・ピース/flash_recovery/ORCL/backupset/2015_04_20/o1_mf_ncsnf_TAG20150420T211608_bm9vjsds_.bkpから読取り中です
チャネルORA_DISK_1: ピース・ハンドル=/flash_recovery/ORCL/backupset/2015_04_20/o1_mf_ncsnf_TAG20150420T211608_bm9vjsds_.bkp タグ=TAG20150420T211608
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:01
出力ファイル名=/u01/app/oracle/oradata/orcl/control01.ctl
出力ファイル名=/u01/app/oracle/flash_recovery_area/orcl/control02.ctl
restoreが完了しました(完了時間: 15-04-22)
制御ファイルをリストアします。
必要なバックアップファイルは自動的に選択してくれます。
RMAN> ALTER DATABASE MOUNT;
データベースがマウントされました。
RMAN> RECOVER DATABASE;
recoverが開始されました(開始時間: 15-04-22)
implicit crosscheck backupが開始されました(開始時間: 15-04-22)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=125 デバイス・タイプ=DISK
2オブジェクトをクロスチェックしました
implicit crosscheck backupが完了しました(完了時間: 15-04-22)
implicit crosscheck copyが開始されました(開始時間: 15-04-22)
チャネルORA_DISK_1の使用
implicit crosscheck copyが完了しました(完了時間: 15-04-22)
リカバリ領域ですべてのファイルを検索しています
ファイルをカタログに追加しています...
(中略)
アーカイブ・ログ・ファイル名=/flash_recovery/ORCL/archivelog/2015_04_22/o1_mf_1_84_bmg6vqt4_.arc スレッド=1 順序=84
アーカイブ・ログ・ファイル名=/u01/app/oracle/oradata/orcl/redo01.log スレッド=1 順序=85
メディア・リカバリが完了しました。経過時間: 00:00:02
recoverが完了しました(完了時間: 15-04-22)
データベースをリカバリします。
RMAN> ALTER DATABASE OPEN RESETLOGS;
データベースがオープンしました。
データベースの新しいインカネーションがリカバリ・カタログに登録されました
リカバリ・カタログの完全再同期を開始しています
完全再同期が完了しました
リカバリ・カタログの完全再同期を開始しています
完全再同期が完了しました
SQL> SELECT status FROM v$instance;
STATUS
------------------------------------
OPEN
RESETLOGSオプション付きでデータベースをオープンします。
これで制御ファイル全損からのリストアは完了です。
一方、リカバリカタログを作成していない場合、自動バックアップ機能によりバックアップされた制御ファイルを手動で指定する必要があるようです。
SQL> SELECT name FROM v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/flash_recovery_area/orcl/control02.ctl
SQL> !rm -rf /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/flash_recovery_area/orcl/control02.ctl
擬似障害のためにコントロールファイルを全部削除します。
SQL> SHUTDOWN ABORT
ORACLEインスタンスがシャットダウンされました。
SQL> STARTUP
ORACLEインスタンスが起動しました。
Total System Global Area 839282688 bytes
Fixed Size 2233000 bytes
Variable Size 578817368 bytes
Database Buffers 251658240 bytes
Redo Buffers 6574080 bytes
ORA-00205: ?????????????????????????????????????????
インスタンスをシャットダウンし、スタートさせようとするとエラーで終わってしまいます。
SQL> SELECT status FROM v$instance;
STATUS
------------------------------------
STARTED
NOMUNT状態で止まってしまいます。
[oracle@node01 ~]$ rman target / catalog rcatowner/password@rcat
Recovery Manager: Release 11.2.0.3.0 - Production on 水 4月 22 14:46:10 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
ターゲット・データベース: ORCLに接続されました(マウントされていません)
リカバリ・カタログ・データベースに接続されました。
リカバリカタログ付きでrmanを起動します。
RMAN> restore CONTROLFILE;
restoreが開始されました(開始時間: 15-04-22)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=133 デバイス・タイプ=DISK
チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_DISK_1: 制御ファイルをリストア中です
チャネルORA_DISK_1: バックアップ・ピース/flash_recovery/ORCL/backupset/2015_04_20/o1_mf_ncsnf_TAG20150420T211608_bm9vjsds_.bkpから読取り中です
チャネルORA_DISK_1: ピース・ハンドル=/flash_recovery/ORCL/backupset/2015_04_20/o1_mf_ncsnf_TAG20150420T211608_bm9vjsds_.bkp タグ=TAG20150420T211608
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:01
出力ファイル名=/u01/app/oracle/oradata/orcl/control01.ctl
出力ファイル名=/u01/app/oracle/flash_recovery_area/orcl/control02.ctl
restoreが完了しました(完了時間: 15-04-22)
制御ファイルをリストアします。
必要なバックアップファイルは自動的に選択してくれます。
RMAN> ALTER DATABASE MOUNT;
データベースがマウントされました。
RMAN> RECOVER DATABASE;
recoverが開始されました(開始時間: 15-04-22)
implicit crosscheck backupが開始されました(開始時間: 15-04-22)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=125 デバイス・タイプ=DISK
2オブジェクトをクロスチェックしました
implicit crosscheck backupが完了しました(完了時間: 15-04-22)
implicit crosscheck copyが開始されました(開始時間: 15-04-22)
チャネルORA_DISK_1の使用
implicit crosscheck copyが完了しました(完了時間: 15-04-22)
リカバリ領域ですべてのファイルを検索しています
ファイルをカタログに追加しています...
(中略)
アーカイブ・ログ・ファイル名=/flash_recovery/ORCL/archivelog/2015_04_22/o1_mf_1_84_bmg6vqt4_.arc スレッド=1 順序=84
アーカイブ・ログ・ファイル名=/u01/app/oracle/oradata/orcl/redo01.log スレッド=1 順序=85
メディア・リカバリが完了しました。経過時間: 00:00:02
recoverが完了しました(完了時間: 15-04-22)
データベースをリカバリします。
RMAN> ALTER DATABASE OPEN RESETLOGS;
データベースがオープンしました。
データベースの新しいインカネーションがリカバリ・カタログに登録されました
リカバリ・カタログの完全再同期を開始しています
完全再同期が完了しました
リカバリ・カタログの完全再同期を開始しています
完全再同期が完了しました
SQL> SELECT status FROM v$instance;
STATUS
------------------------------------
OPEN
RESETLOGSオプション付きでデータベースをオープンします。
これで制御ファイル全損からのリストアは完了です。
一方、リカバリカタログを作成していない場合、自動バックアップ機能によりバックアップされた制御ファイルを手動で指定する必要があるようです。
