基于撤销的恢复:用cancel代替归档日志名的输入。可以恢复到具体的某一个归档日志
Scenario:
The current time is 12:00 p.m. on March 9,2002.
The EMPLOYEES table was dropped while someone was trying to fix bad blocks.
Log files exist on the same disk.
The table was dropped at approximately 11:45 a.m.
Staff are currently in a meeting.
简单的说,就是当前的redo log坏了
准备
SQL> create table scott.test1(n1 number);
SQL> insert into scott.test1 values(1);
SQL> insert into scott.test1 values(2);
SQL> commit;
SQL> alter system switch logfile;
SQL> insert into scott.test1 values(3);
SQL> insert into scott.test1 values(4);
SQL> commit;
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
----- ------- ---------- ---- -------- --- ----- ------------- ----------
1 1 2 104857600 1 NO CURRENT 271704 2007年12月02日
2 1 1 104857600 1 YES ACTIVE 271584 2007年12月02日
3 1 0 104857600 1 YES UNUSED 0
SQL> shutdown abort
一号组为当前日志,可将其删除或者重命名
恢复
OS 中将所有的数据文件拿回来(除了control file 和redo log file)
SQL> startup mount
SQL> recover database until cancel
ORA-00279: 更改 271494 (在 12/02/2007 01:25:39 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ORADATA\ORA\AWU7.ARC''
ORA-00280: 更改 271494 对于线程 1 是按序列 # 7 进行的
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 271598 (在 12/02/2007 15:57:13 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ORADATA\ORA\AWU8.ARC''
ORA-00280: 更改 271598 对于线程 1 是按序列 # 8 进行的
ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORADATA\ORA\AWU7.ARC'''
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00326: 日志在更改 271616 开始,需要更早的更改 271598
ORA-00334: 归档日志: 'D:\ORACLE\ORADATA\ORA\AWU8.ARC'''
SQL> alter database open resetlogs;
数据库已更改。
SQL> select * from scott.test1;
N1
----------
1
2
test1 中的 3,4因为没有及时归档,结果丢失
阅读(2475) | 评论(0) | 转发(0) |