您的位置:首页 > 其它

Recover through incarnations: RMAN-20208

2012-08-09 08:27 274 查看
之前用RMAN做过一个数据库的全备,后来发现数据库mess up了,想要恢复到之前做备份的那个状态,这个用RMAN很好办,

[align=left]RMAN> run{[/align]
[align=left]2> set until scn 44712912;[/align]
[align=left]3> restore database;[/align]
[align=left]4> recover database;[/align]
[align=left]5> alter database open resetlogs;[/align]
[align=left]6> }[/align]
[align=left]不过杯具的是,在resetlogs之后没有再做一次全备。这样在数据库run了一段时间后,发现还是要回到当初状态比较好。寻思着不如再回到从前吧,尝试重复执行上面的这段脚本,却得到如下错误,[/align]
[align=left]executing command: SET until clause[/align]
[align=left]RMAN-00571: ===========================================================[/align]
[align=left]RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============[/align]
[align=left]RMAN-00571: ===========================================================[/align]
[align=left]RMAN-03002: failure of set command at 10/25/2010 15:10:03[/align]
[align=left]RMAN-20208: UNTIL CHANGE is before RESETLOGS change[/align]
[align=left]突然意识到,这应该是在resetlogs之后,数据库进入了一个新的incarnation, 因此用上个incarnation的备份来恢复貌似不行了。不过文档上说得请清楚楚,10g加强了这方面的功能,即使resetlogs了,还是可以用之前的备份来恢复数据库的,但是为啥这样重复执行脚本失败了呢?莫非需要穿越到上一次“化身”中(想起了盗梦空间)吗?[/align]
[align=left]通过 RMAN 的 LIST INCARNATION 命令可以看到当前数据库共有几层"化身"...[/align]
[align=left]RMAN> list incarnation;[/align]
[align=left]List of Database Incarnations[/align]
[align=left]DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time[/align]
[align=left]------- ------- -------- ---------------- --- ---------- ----------[/align]
[align=left]1 1 ORCL 1257481935 PARENT 1 29-OCT-05[/align]
[align=left]2 2 ORCL 1257481935 PARENT 518852 14-SEP-10[/align]
[align=left]3 3 ORCL 1257481935 CURRENT 44712913 22-OCT-10[/align]
[align=left]根据reset scn, 可以看到上一次备份实在incarnation 2中做的,尝试把数据库穿越回上一个incarnation中,[/align]
[align=left]RMAN> reset database to incarnation 2;[/align]
[align=left]database reset to incarnation 2[/align]
[align=left]接下来再次尝试用之前的脚本来恢复数据库,[/align]
[align=left]RMAN> run{[/align]
[align=left]2> set until scn 44712912;[/align]
[align=left]3> restore database;[/align]
[align=left]4> recover database;[/align]
[align=left]5> alter database open resetlogs;[/align]
[align=left]6> }[/align]
[align=left] [/align]
[align=left]executing command: SET until clause[/align]
[align=left] [/align]
[align=left]Starting restore at 25-OCT-10[/align]
[align=left]allocated channel: ORA_DISK_1[/align]
[align=left]channel ORA_DISK_1: sid=539 devtype=DISK[/align]
[align=left] [/align]
[align=left]channel ORA_DISK_1: starting datafile backupset restore[/align]
[align=left]channel ORA_DISK_1: specifying datafile(s) to restore from backup set[/align]
[align=left]restoring datafile 00001 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF[/align]
[align=left]restoring datafile 00002 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF[/align]
[align=left]restoring datafile 00003 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF[/align]
[align=left]restoring datafile 00004 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF[/align]
[align=left]restoring datafile 00005 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF[/align]
[align=left]restoring datafile 00006 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/XXX001.DBF[/align]
[align=left]restoring datafile 00007 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/XXX002.DBF[/align]
[align=left]restoring datafile 00008 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/XXX003.DBF[/align]
[align=left]restoring datafile 00009 to D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/XXX004.DBF[/align]
[align=left]channel ORA_DISK_1: reading from backup piece D:/BACKUP/06LQGQTM_1_1[/align]
[align=left]channel ORA_DISK_1: restored backup piece 1[/align]
[align=left]piece handle=D:/BACKUP/06LQGQTM_1_1 tag=TAG20101015T123149[/align]
[align=left]channel ORA_DISK_1: restore complete, elapsed time: 00:12:26[/align]
[align=left]Finished restore at 25-OCT-10[/align]
[align=left] [/align]
[align=left]Starting recover at 25-OCT-10[/align]
[align=left]using channel ORA_DISK_1[/align]
[align=left]starting media recovery[/align]
[align=left]archive log thread 1 sequence 7180 is already on disk as file D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ORCL/ARCHIVEL[/align]
[align=left]OG/2010_10_15/O1_MF_1_7180_6CHXFG68_.ARC[/align]
[align=left]archive log filename=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ORCL/ARCHIVELOG/2010_10_15/O1_MF_1_7180_6CHXFG68_.ARC[/align]
[align=left]thread=1 sequence=7180[/align]
[align=left]media recovery complete, elapsed time: 00:00:02[/align]
[align=left]Finished recover at 25-OCT-10[/align]
[align=left]database opened[/align]
[align=left] [/align]
[align=left]【Sum-up】[/align]
[align=left]看来虽然10g支持用跨incarnation的备份来恢复数据库,还是需要事先讲数据库set到相应的incarnation才成。[/align]
[align=left]转贴: http://archive.cnblogs.com/a/1860583/[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息