本文共 1525 字,大约阅读时间需要 5 分钟。
版本:
SQL> select * from v$version;
BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE 11.2.0.1.0 ProductionTNS for Linux: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - ProductionSQL>(1)alter database resetlogs;
在数据库被resetlogs后,db就多了一个incarnation(化身)。
假设一个全新的db,incarnation为i1,archive log是1,2,3,4,5,需要做一次不完全恢复,按照如下步骤
restore database from tag fullbk01;
recover database until sequence 4; #注意这里只应用了4之前的归档日志,4本身不会被应用
alter database open read only; #在以resetlogs打开前,可先以read only方式打开,检查是否恢复到了想要的位置
alter database open resetlogs; #数据库以resetlogs打开后,新的incarnation(i2)就开始了,v$log.SEQUENCE#重新从1开始
如果在resetlogs之后发现是日志4其实需要恢复的,这时就需要先恢复控制文件再restore dtabase了,
直接restore database from tag fullbk01,会发现归档日志只显示i1的1,2,3和i2的所有归档,因为在当前的控制文件中,i1日志3以后的4和5都已经被reset(丢弃)掉了,
10g新引入了一个特性,可以直接从fullbk01恢复到i1的1,2,3和i2的任意一个归档,跨越了i1和i2两个incarnation,这个叫做跨越resetlogs时间点恢复。
(2)恢复老的控制文件
startup nomount;
restore controlfile from '/u01/rmanbkp/full01_16ob6tgi_1_1'; #如果知道控制文件的备份文件,恢复时直接指向该文件即可
控制文件恢复后即可以按照(1)的步骤恢复到3以后的日志了。
REF:
1. To recover the database with an autobackup of the control file without a recovery catalog
2. 使用Oracle10g新特性,跨越Resetlogs时间点进行恢复
3. incarnation
A separate version of a database. The incarnation of the database changes when you open it with the RESETLOGS
option, but you can recover backups from a prior incarnation so long as the necessary redo is available.
转载地址:http://wstai.baihongyu.com/