RESETLOGS后没有备份情况下的数据恢复
2007-05-08 12:10:33 来源:WEB开发网核心提示: (18)打开数据库,查看表demo.a,RESETLOGS后没有备份情况下的数据恢复(8),结果显示没有丢失时刻B和时刻C之间插入的数据7、8、9,SQL> alter database open;Database altered. SQL> select * from dem
(18)打开数据库,查看表demo.a,结果显示没有丢失时刻B和时刻C之间插入的数据7、8、9。
SQL> alter database open;
Database altered. SQL> select * from demo.a;
I
----------
1
2
3
7
8
9
6rows selected.
(19)马上做数据库的一致备份(冷备份或热备份)。
附加说明
另外要指出,如果忘记或不能提供时刻B的准确时间,可以查看报警日志文件,搜索"change",找到系统更改号(SCN),也可在步骤(10)和步骤(16)中指定基于改变的恢复。命令格式如下:
recover database until change integer_scn [using backup controlfile]
注:integer_scn要用整数SCN替换。
本例中,数据库TEST的报警日志文件为f: estdump estALRT.log,在其中找到以下片段:
Fri Oct 04 09:57:15 2002
ALTER DATABASE RECOVER LOGFILE ' f:coolarcha_barch22.arc'
Media Recovery Log f:coolarcha_barch22.arc
Incomplete recovery done UNTIL CHANGE 690772
Media Recovery Complete
Completed: ALTER DATABASE RECOVER LOGFILE 'f:coolarcha_b
Fri Oct 04 09:59:31 2002
alter database open resetlogs
Fri Oct 04 09:59:31 2002
RESETLOGS after incomplete recovery UNTIL CHANGE 690772
Resetting resetlogs activation ID 1770840999 (0x698ce3a7)
由此可发现恢复到时刻B(2002-10-04:09:18:52)的SCN为690772,可以在不完全恢复中指定恢复到更改号690772,如下语句所示:
recover database until change 690773 using backup controlfile;
数据库执行过不完全恢复后,并在以RESETLOGS选项打开之前,SCN已经记录在报警日志文件中,也可以通过查询
select RESETLOGS_CHANGE#-1 from v$database;
找到SCN,这个结果与报警日志中的SCN相同,这样就可以恢复到该SCN。
更多精彩
赞助商链接