読者です 読者をやめる 読者になる 読者になる

geek.conf.2

あるインフラエンジニアの備忘録

rmanリストアcase2

Oracle

バックアップ戦略
rman(nocatalog)で週一回incremental level 0、毎日incremental level 1のデータベース
バックアップ取得とでもしときます2。

リストアcase2
表領域をdropしてDB Open出来ないことを確認。データベースをリストアしてdropした時点までリカバリする。
この場合オンラインredoログは最初にdropした時点以降のものは不要であり、その時点と整合する必要があるので
データベースのオープン時resetlogsオプションが必要になります。そう不完全リカバリです。
このcaseをリアルに置き換えると、表領域を誤ってdropしたので戻してほしいですね。
すげーありえないっすけど。だって
system表領域はもちろんsysaux表領域はdrop出来ないし、デフォルト永続もデフォルト一時表領域も削除できない。
そして使用中のUNDO表領域も削除できません。
それぞれ以下のエラーになります。

system→ORA-01550
sysaux→ORA-13501
users→ORA-12919
temp→ORA-12906
undotbs1→ORA-13501

しかも上記以外の表領域が対象ですが、戻したいのなら不完全リカバリなのでデータベース全体ごと戻さなければ
なりません。いやあありえないcaseです。

ここでは制御ファイル含めリストアしなけりゃなりません。。

SQL> create tablespace test;

このあとバックアップを取ります。

ここでrman永続設定で制御ファイル自動バックアップを有効にして制御ファイルもバックアップ取得します。

[oracle@orcl ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 15 03:31:03 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.



Oracle Database 11g Release 11.2.0.1.0 - Production
?????????
SQL> drop tablespace test;

????????????

さてドロップしちゃいました。

SQL> startup force nomount;
ORACLE??????????????

Total System Global Area 795127808 bytes
Fixed Size 1339456 bytes
Variable Size 482348992 bytes
Database Buffers 306184192 bytes
Redo Buffers 5255168 bytes
SQL>

SQL> exit
Oracle Database 11g Release 11.2.0.1.0 - Production?????????????
[oracle@orcl ~]$
[oracle@orcl ~]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Mon Aug 15 03:39:26 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: ORCL (not mounted)

RMAN> restore controlfile from autobackup;

Starting restore at 15-AUG-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK

recovery area destination: /data/recovery_area
database name (or database unique name) used for search: ORCL
channel ORA_DISK_1: AUTOBACKUP /data/recovery_area/ORCL/autobackup/2011_08_15/o1_mf_s_759209294_74j4y023_.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 /data/recovery_area/ORCL/autobackup/2011_08_15/o1_mf_s_759209294_74j4y023_.bkp
channel ORA_DISK_1: control file restore from AUTOBACKUP complete
output file name=/data/oradata/ORCL/controlfile/o1_mf_745lf18h_.ctl
output file name=/data/recovery_area/ORCL/controlfile/o1_mf_745lf1fr_.ctl
Finished restore at 15-AUG-11

RMAN> exit

alertログよりdrop日時を確認

----------------------------------------------------------------------

drop tablespace test


----------------------------------------------------------------------

[oracle@orcl ~]$ export NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS"
[oracle@orcl ~]$ rman target /
RMAN> alter database mount;
RMAN> run {
2> set until time '2011/0815 03:13:00';
3> restore database;
4> recover database;
5> }

実行コマンド: SET until clause

restoreが開始されました(開始時間: 2011/08/15 04:20:26)
implicit crosscheck backupが開始されました(開始時間: 2011/08/15 04:20:26)
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=1 デバイス・タイプ=DISK
15オブジェクトをクロスチェックしました
implicit crosscheck backupが完了しました(完了時間: 2011/08/15 04:20:31)

implicit crosscheck copyが開始されました(開始時間: 2011/08/15 04:20:31)
チャネルORA_DISK_1の使用
implicit crosscheck copyが完了しました(完了時間: 2011/08/15 04:20:31)

リカバリ領域ですべてのファイルを検索しています
ファイルをカタログに追加しています...
カタログへの追加を終了しました

カタログに追加されたファイルのリスト
=======================
ファイル名: /data/recovery_area/ORCL/autobackup/2011_08_15/o1_mf_s_759209294_74j4y023_.bkp

チャネルORA_DISK_1の使用

チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルORA_DISK_1: データファイル00001を/data/oradata/ORCL/datafile/o1_mf_system_74j1xjxh_.dbfにリストアしています
チャネルORA_DISK_1: データファイル00002を/data/oradata/ORCL/datafile/o1_mf_sysaux_74j1xk2v_.dbfにリストアしています
チャネルORA_DISK_1: データファイル00003を/data/oradata/ORCL/datafile/o1_mf_undotbs1_74j1xk5d_.dbfにリストアしています
チャネルORA_DISK_1: データファイル00004を/data/oradata/ORCL/datafile/o1_mf_users_74j1xk8q_.dbfにリストアしています
チャネルORA_DISK_1: バックアップ・ピース/home/oracle/backup/0fmk13o8_1_1から読取り中です
チャネルORA_DISK_1: ピース・ハンドル=/home/oracle/backup/0fmk13o8_1_1 タグ=TAG20110815T022720
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:01:45
restoreが完了しました(完了時間: 2011/08/15 04:22:17)

recoverが開始されました(開始時間: 2011/08/15 04:22:18)
チャネルORA_DISK_1の使用

メディア・リカバリを開始しています

スレッド1 (順序16)のアーカイブ・ログは、ファイル/data/recovery_area/ORCL/archivelog/2011_08_15/o1_mf_1_16_74j1jdo9_.arcとしてディスクに存在します
スレッド1 (順序17)のアーカイブ・ログは、ファイル/data/recovery_area/ORCL/archivelog/2011_08_15/o1_mf_1_17_74j234l9_.arcとしてディスクに存在します
スレッド1 (順序18)のアーカイブ・ログは、ファイル/data/recovery_area/ORCL/archivelog/2011_08_15/o1_mf_1_18_74j4tcpw_.arcとしてディスクに存在します
アーカイブ・ログ・ファイル名=/data/recovery_area/ORCL/archivelog/2011_08_15/o1_mf_1_16_74j1jdo9_.arc スレッド=1 順序=16
アーカイブ・ログ・ファイル名=/data/recovery_area/ORCL/archivelog/2011_08_15/o1_mf_1_17_74j234l9_.arc スレッド=1 順序=17
アーカイブ・ログ・ファイル名=/data/recovery_area/ORCL/archivelog/2011_08_15/o1_mf_1_18_74j4tcpw_.arc スレッド=1 順序=18
メディア・リカバリが完了しました。経過時間: 00:00:04
recoverが完了しました(完了時間: 2011/08/15 04:22:26)

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: alter dbコマンドが08/15/2011 04:23:43で失敗しました
ORA-01589: データベースをオープンするにはRESETLOGSまたはNORESETLOGSを使用する必要があります

おっと!

RMAN> alter database open resetlogs;

データベースがオープンしました。

はい終わり。えっと〜なんかすごくめんどくさかったですが、set until time句で指定する日付フォーマット
のデフォルトをNLS_DATE_FORMATに設定してあげるのがポイントです。で最後にopen with resetlogsっと。

これでtest表領域drop直前にリカバリできました。