不完全恢复只能做一次吗?

[复制链接]
查看11 | 回复9 | 2010-10-16 23:14:42 | 显示全部楼层 |阅读模式
采用rman的默认设置,对数据库进行了backup database备份。进行了一些操作后,然后直接关闭启动到mount状态
RMAN> run{
2> set until time "to_date('2010-10-16 23:14:42','yyyy-mm-dd hh24:mi:ss')";
3> restore database;
4> recover database;
5> }
executing command: SET until clause
Starting restore at 17-OCT-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /oracle/oradata/denver/system01.dbf
restoring datafile 00002 to /oracle/oradata/denver/undotbs01.dbf
restoring datafile 00003 to /oracle/oradata/denver/sysaux01.dbf
restoring datafile 00004 to /oracle/oradata/denver/users01.dbf
restoring datafile 00005 to /oracle/oradata/denver/example01.dbf
channel ORA_DISK_1: reading from backup piece /oracle/flash_recovery_area/DENVER/backupset/2010_10_16/o1_mf_nnndf_TAG20101016T230845_6cmhzz8t_.bkp
channel ORA_DISK_1: restored backup piece 1
piece handle=/oracle/flash_recovery_area/DENVER/backupset/2010_10_16/o1_mf_nnndf_TAG20101016T230845_6cmhzz8t_.bkp tag=TAG20101016T230845
channel ORA_DISK_1: restore complete, elapsed time: 00:01:26
Finished restore at 17-OCT-10
Starting recover at 17-OCT-10
using channel ORA_DISK_1
starting media recovery
archive log thread 1 sequence 10 is already on disk as file /oracle/archivelog/1_10_732510268.dbf
archive log filename=/oracle/archivelog/1_10_732510268.dbf thread=1 sequence=10
media recovery complete, elapsed time: 00:00:01
Finished recover at 17-OCT-10
RMAN> alter database open resetlogs;
database opened
发现刚才恢复的时间23:14:42有点早,于是想改为恢复时间点为23:17:26,于是再次关闭数据库,mount状态下,但是出错了
RMAN> run {
2> set until time "to_date('2010-10-16 23:17:26','yyyy-mm-dd hh24:mi:ss')";
3> restore database;
4> recover database;
5> }
executing command: SET until clause
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of set command at 10/17/2010 00:45:40
RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time
时间再前点恢复也不行:
RMAN> run {
2> set until time "to_date('2010-10-16 23:14:40','yyyy-mm-dd hh24:mi:ss')";
3> restore database;
4> recover database;
5> }
executing command: SET until clause
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of set command at 10/17/2010 01:17:03
RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time
这是为什么?那些归档都还在,难道我的rman做过一次不完全恢复后,就不能再不完全恢复了,跟没有换备份控制文件有关系吗?里面做了什么
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
--------------------------
Finished recover at 17-OCT-10
RMAN> alter database open resetlogs;
database opened
--------------------------------------
alter database open resetlogs;
你已经打开过了,所有不行了
你要 切换到你打开前的 对应物,进行恢复
list incarnation 看看
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
alter database open resetlogs;
执行完这个以后之前的归档都失效了。
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
RMAN> list incarnation;
using target database control file instead of recovery catalog
List of Database Incarnations
DB KeyInc Key DB NameDB ID
STATUSReset SCNReset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DENVER 4021391415 PARENT1
22-OCT-05
2 2 DENVER 4021391415 PARENT525876 16-OCT-10
3 3 DENVER 4021391415 CURRENT 620239 17-OCT-10
open resetlogs后不是截断redo日志吗?难道前前后后的归档都会收到影响,没用了啊
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
我的理解,你已经进行了resetlogs,控制文件中的归档日志信息肯定是跟备份前不一样了,自然无法再识别。如果要进行恢复到以前时间点的话,得需要先恢复以前的控制文件吧。
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
10g的可以引用resetlogs前的备份啊!
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
原帖由 Coast_lichao 于 2010-10-16 23:49 发表
10g的可以引用resetlogs前的备份啊!


就是因为控制文件没有备份出来,所以resetlogs打开后,就不能引用resetlogs前的备份了看来
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
恢复一下控制文件就可以继续做下去了
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
你的问题很简单,在你的错误提示信息里已经写得很清楚:
UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time
这表明你现在的控制文件已经不能用于until time的恢复了(控制文件的scn大于你的until time的SCN).

我建议的步骤:
1. shutdown db
2. 删除最新的控制文件和数据文件
3. 恢复旧的控制文件,启动数据库到mount状态
4. 重新执行时间点恢复:
RMAN> run{
2> set until time "to_date('2010-10-16 23:14:42','yyyy-mm-dd hh24:mi:ss')";
3> restore database;
4> recover database;
5> }
回复

使用道具 举报

千问 | 2010-10-16 23:14:42 | 显示全部楼层
楼上的答案真标准!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行