恢复数据库到祖先incarnation
在当前的incarnation中的DBPITR和DBPITR到一个非当前incarnation中的SCN是不同的。
在后者中你必须显示地执行RESET DATABASE,设置incarnation为目标SCN当时的incarnation,
你也必须从包含目标SCN的数据库incarnation还原控制文件。
n 当RMAN连接到恢复目录,RESTORE CONTROLFILE命令只是搜索当前的数据库incarnation,
搜索在UNTIL子句中指定的最近的时间;
n 从非当前的incarnation还原控制文件,必须执行LIST INCARNATION来识别目标数据库incarnation,
并把这个incarnation指定在RESET DATABASE TO INCARNATION命令中。
n 当RMAN连接到恢复目录,你不能在数据库被MOUNT之前执行RESET DATABASE TO INCARNATION。
因此你必须执行SET UNTIL,从自动备份还原控制文件,然后MOUNT它。
场景:
n RMAN连接到恢复目录
n 具有目标数据库trgt从2007.10.2号开始的备份
n 2007.10.10号在这个数据库上执行DBPITR,来改正一个早一点的错误。
在DBPITR最后的OPEN RESETLOGS开始了一个新的incarnation。
n 10.25号发现需要的关键数据在2007.10.8 8:00被删除了,这个时间在当前的incarnation开始之前
练习:DBPITR到一个非当前的incarnation
--1. 启动RMAN连接到目标数据库和恢复目录 --2. 确定在备份时数据库的incarnation, 使用LIST INCARNATION来查看目标时间点时的incarnation的primary key LIST INCARNATION OF DATABASE trgt;
List of Database Incarnations DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time ------- ------- ------- ------ ------- ---------- ---------- 1 2 TRGT 1224038686 PARENT 1 02-OCT-06 1 582 TRGT 1224038686 CURRENT 59727 10-OCT-06 -- 查看Reset SCN和Reset Time列来识别当前的incarnation,并注意Inc Key列中的incarnation key -- 本例中备份是在2007.10.2号做的,所以incarnation key = 2 --3. 确定数据库被启动,但没有被MOUNT STARTUP FORCE NOMOUNT --4. 重设目标数据库到第2步中获取的incarnation RESET DATABASE TO INCARNATION 2; --5. 还原并恢复数据库,在RUN命令中执行下面的操作 -- a. 设置恢复的结束时间刚好在丢失数据之前 -- b. 分配没有配置的、需要的通道 -- c. 从10.2号的备份还原控制文件并MOUNT它 -- d. 还原数据文件并且恢复数据库.使用RECOVER DATABASE ... UNTIL执行DBPITR, 使数据库到达目标时间10.8 7:55, 数据紧邻丢失之前 RUN { SET UNTIL TIME 'Oct 8 2007 07:55:00'; RESTORE CONTROLFILE; # 没有恢复目录, 使用 RESTORE CONTROLFILE FROM AUTOBACKUP ALTER DATABASE MOUNT; RESTORE DATABASE; RECOVER DATABASE; } ALTER DATABASE OPEN RESETLOGS; |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1097351/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1097351/