お試し:RMANによる制御ファイル全損からのリストア、リカバリ<!-- --> | <!-- -->塩焼き太郎のブログ♪
塩焼き太郎のブログ♪

お試し:RMANによる制御ファイル全損からのリストア、リカバリ

Posted: July 27, 2017

さて、今回は制御ファイル全損からのリストア、リカバリをやってみる。

0. 制御ファイルのバックアップの取得

制御ファイルの自動バックアップをONにしていることを確認

RMAN> show all; ... ... CONFIGURE CONTROLFILE AUTOBACKUP ON; ← これ

バックアップを取得する。
念のために手動でバックアップを取得した。

RMAN> BACKUP AS COPY CURRENT CONTROLFILE FORMAT '/tmp/control01.ctl'; Starting backup at 20170727_18:37:12 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=32 device type=DISK channel ORA_DISK_1: starting datafile copy copying current control file output file name=/tmp/control01.ctl tag=TAG20170727T183712 RECID=27 STAMP=950467033 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:02 Finished backup at 20170727_18:37:14 Starting Control File and SPFILE Autobackup at 20170727_18:37:14 piece handle=/home/oracle/flash/TESTDB/autobackup/2017_07_27/o1_mf_s_950467034_dqmf2bhm_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 20170727_18:37:15

取得された。

バックアップの取得状況を確認する。

RMAN> list backup; ... ... BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ----------------- 28 Full 17.23M DISK 00:00:00 20170727_18:25:41 BP Key: 28 Status: AVAILABLE Compressed: NO Tag: TAG20170727T182541 Piece Name: /home/oracle/flash/TESTDB/autobackup/2017_07_27/o1_mf_s_950466341_dqmddox2_.bkp SPFILE Included: Modification time: 20170727_18:14:01 SPFILE db_unique_name: TESTDB Control File Included: Ckp SCN: 6283971770 Ckp time: 20170727_18:25:41 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ----------------- 29 Full 17.23M DISK 00:00:00 20170727_18:37:14 BP Key: 29 Status: AVAILABLE Compressed: NO Tag: TAG20170727T183714 Piece Name: /home/oracle/flash/TESTDB/autobackup/2017_07_27/o1_mf_s_950467034_dqmf2bhm_.bkp SPFILE Included: Modification time: 20170727_18:29:32 SPFILE db_unique_name: TESTDB Control File Included: Ckp SCN: 6283972474 Ckp time: 20170727_18:37:14

手動バックアップの際も、自動バックアップが取得されるようだ。安心。

1. 制御ファイルの削除
OSコマンドで制御ファイルを削除する。

oracle$ rm /home/oracle/db/oracle/testdb/ctl/control01.ctl oracle$ rm /home/oracle/db/oracle/testdb/ctl/control02.ctl

全削除したとたん、さっそくアラートログには以下のメッセージ

Thu Jul 27 18:45:42 2017 Errors in file /home/oracle/db/app/oracle/diag/rdbms/testdb/testdb/trace/testdb_m000_9417.trc: ORA-00210: cannot open the specified control file ORA-00202: control file: '/home/oracle/db/oracle/testdb/ctl/control01.ctl' ORA-27041: unable to open file Linux-x86_64 Error: 2: No such file or directory Additional information: 3

なお、DB自体にはログインができた。
制御ファイルへの変更が入るように、表領域を作成してみる。

oracle$ sqlplus / as sysdba SQL> CREATE TABLESPACE testtbs DATAFILE '/home/oracle/db/oracle/testdb/data/testtbs01.dbf' SIZE 20M AUTOEXTEND ON;SQL> 2 3 CREATE TABLESPACE testtbs * ERROR at line 1: ORA-00210: cannot open the specified control file ORA-00202: control file: '/home/oracle/db/oracle/testdb/ctl/control01.ctl' ORA-27041: unable to open file Linux-x86_64 Error: 2: No such file or directory Additional information: 3

上記のエラーが出た。よしよし。では復旧しよう。

2. DBの強制停止、nomountで起動

制御ファイルやSYSTEM表領域といった、クリティカルなファイルに障害が起きる場合は
shutdown abortでDBを強制停止する必要がある。
また、今回、制御ファイルが全損しているのでマウントができない(制御ファイルが読み込めないので)ため
nomountで起動する。

shutdown abort; startup nomount;

ちなみにこの段階でRMANでlist failureしても何も結果は出なかった。

RMAN> list failure; using target database control file instead of recovery catalog no failures found that match specification

3. 制御ファイルのリストア、リカバリ

まずは制御ファイルをリストアする。

RMAN> restore controlfile from autobackup; Starting restore at 20170727_19:00:39 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=7 device type=DISK recovery area destination: /home/oracle/flash database name (or database unique name) used for search: TESTDB channel ORA_DISK_1: AUTOBACKUP /home/oracle/flash/TESTDB/autobackup/2017_07_27/o1_mf_s_950467034_dqmf2bhm_.bkp found in the recovery area AUTOBACKUP search with format "%F" not attempted because DBID was not set channel ORA_DISK_1: restoring control file from AUTOBACKUP /home/oracle/flash/TESTDB/autobackup/2017_07_27/o1_mf_s_950467034_dqmf2bhm_.bkp channel ORA_DISK_1: control file restore from AUTOBACKUP complete output file name=/home/oracle/db/oracle/testdb/ctl/control01.ctl output file name=/home/oracle/db/oracle/testdb/ctl/control02.ctl Finished restore at 20170727_19:00:41

自動バックアップからリストアが完了。

アラートログには以下の出力。

No controlfile conversion

制御ファイルがリストアできたのでマウントしリカバリを実施実施する。

RMAN> alter database mount; Statement processed released channel: ORA_DISK_1 RMAN> recover database; Starting recover at 20170727_19:03:03 Starting implicit crosscheck backup at 20170727_19:03:03 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=7 device type=DISK Crosschecked 15 objects Finished implicit crosscheck backup at 20170727_19:03:03 Starting implicit crosscheck copy at 20170727_19:03:03 using channel ORA_DISK_1 Crosschecked 4 objects Finished implicit crosscheck copy at 20170727_19:03:04 searching for all files in the recovery area cataloging files... cataloging done List of Cataloged Files ======================= File Name: /home/oracle/flash/TESTDB/autobackup/2017_07_27/o1_mf_s_950467034_dqmf2bhm_.bkp using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 35 is already on disk as file /home/oracle/db/oracle/testdb/redo/redo02.log archived log file name=/home/oracle/db/oracle/testdb/redo/redo02.log thread=1 sequence=35 media recovery complete, elapsed time: 00:00:00 Finished recover at 20170727_19:03:05

4. DBの起動

DBをオープンする。RESETLOGSオプション付きでないと起動しないので注意。

RMAN> alter database open resetlogs; Statement processed

ログ順序番号がリセットされていることを確認。

oracle$ sqlplus / as sysdba SQL> select group#, thread#, sequence#, status from v$log; GROUP# THREAD# SEQUENCE# STATUS ---------- ---------- ---------- ---------------------------------------------------------------- 1 1 1 CURRENT 2 1 0 UNUSED 3 1 0 UNUSED

以上、制御ファイル全損からのリストア、リカバリを試した。