历史备份控制文件恢复数据库

oracle 10g 以后允许在不同的incarnation之间进行完全/不完全恢复。在参数文件log_archive_format中多了一个%r格式符号,这是
resetlogs的标志号,这一归档模式避免不同incarnation的归档相互覆盖,从而使得跨越resetlogs恢复的日记基础得以保证。


RMAN> list incarnation; List of Database Incarnations DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time ------- ------- -------- ---------------- --- ---------- ---------- 1 1 ORCL 1358813460 PARENT 1 15-AUG-09 2 2 ORCL 1358813460 PARENT 945184 09-NOV-13 3 3 ORCL 1358813460 CURRENT 2181557 29-DEC-13
select thread#,sequence#,first_change#,next_change# from v$archived_log;
     2       55        2140766     2172246
     2       56        2172246     2181556
     2        1        2181557     2203709

   THREAD#  SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ---------- ------------- ------------
     2        2        2203709     2224422
     2        3        2224422     2258307
     2        4        2258307     2258311
     1        1        2237798     2280109
     1        2        2280109     2280114
     1        3        2280114     2280116
     2        5        2280111     2280131
     1        4        2280116     2280127

SQL> select thread#,sequence#,status from v$log;

   THREAD#  SEQUENCE# STATUS
---------- ---------- ----------------
     1        3 INACTIVE
     1        4 ACTIVE
     2        5 INACTIVE
     2        6 CURRENT

以上是原控制文件的信息。同时参照V$log_history视图。

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

RMAN> restore controlfile from '/home/oracle/c.ctl';

Starting restore at 31-DEC-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=17 instance=orcl2 device type=DISK

channel ORA_DISK_1: copied control file copy
output file name=+DATA/orcl/controlfile/current.260.835608817
output file name=+FRA/orcl/controlfile/current.256.835608825
Finished restore at 31-DEC-13

RMAN> list incarnation;

released channel: ORA_DISK_1

List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       ORCL     1358813460       PARENT  1          15-AUG-09
2       2       ORCL     1358813460       CURRENT 945184     09-NOV-13

尝试rman 恢复

RMAN> recover database;

Starting recover at 31-DEC-13
Starting implicit crosscheck backup at 31-DEC-13
allocated channel: ORA_DISK_1
Finished implicit crosscheck backup at 31-DEC-13

Starting implicit crosscheck copy at 31-DEC-13
using channel ORA_DISK_1
Crosschecked 2 objects
Finished implicit crosscheck copy at 31-DEC-13

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: +fra/ORCL/BACKUPSET/2013_12_31/ncnnf0_TAG20131231T092954_0.296.835608605
……
…… // 自动根据参数db_recovery_file_dest指定的目录中去寻找可用文件
File Name: +fra/ORCL/AUTOBACKUP/2013_12_31/thread_1_seq_2.292.835607377
File Name: +fra/ORCL/ARCHIVELOG/2013_12_31/thread_1_seq_3.293.835607395
File Name: +fra/ORCL/ARCHIVELOG/2013_12_31/thread_2_seq_5.294.835607395
File Name: +fra/ORCL/ARCHIVELOG/2013_12_31/thread_1_seq_4.295.835607399

using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/31/2013 09:36:12
RMAN-06094: datafile 8 must be restored  
//提示datafile 8 缺失,手动删除过。
RMAN> recover database skip tablespace wayde;

Starting recover at 31-DEC-13
using channel ORA_DISK_1

Executing: alter database datafile 8 offline
starting media recovery
……
media recovery complete, elapsed time: 00:00:16
Finished recover at 31-DEC-13

RMAN> list incarnation;


List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       ORCL     1358813460       PARENT  1          15-AUG-09
2       2       ORCL     1358813460       PARENT  945184     09-NOV-13
3       3       ORCL     1358813460       CURRENT 2181557    29-DEC-13

结论:在用历史控制文件恢复数据库的时候,如果在历史控制文件后又新添加了‘表空间’,“日志文件(不是active或者current状态)”,“控制文件中有但是实际没有” 在恢复的时候,会重新建表空间,日志以控制文件为准儿。如果在备份了控制文件之后手动删除了表空间,那么在恢复的时候要先把数据文件offline(sql语句) 或者 直接  RMAN> recover database skip tablespace wayde;

 

 

posted @ 2013-12-31 10:46  孙愚  阅读(545)  评论(0编辑  收藏  举报