日期:2014-05-16 浏览次数:20654 次
1、首先,关闭数据库,然后备份所有的数据文件,注意,包括:system表空间的文件,用户表空间的文件、undo表空间的文件。
2、登录数据库,然后,创建一个表data01,并插入数据,提交,创建表data02、data03,并插入数据,提交,同时归档当前日志。
SQL> startup ORACLE 例程已经启动。 Total System Global Area 1068937216 bytes Fixed Size 2182592 bytes Variable Size 675283520 bytes Database Buffers 385875968 bytes Redo Buffers 5595136 bytes 数据库装载完毕。 数据库已经打开。 SQL> create table data01(v int) tablespace data01; 表已创建。 SQL> insert into data01 values(1); 已创建 1 行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 SQL> create table data02 tablespace data01 as select * from dba_objects; 表已创建。 SQL> insert into data02 select * from dba_objects; 已创建12644行。 SQL> alter system switch logfile; 系统已更改。 SQL> create table data03 tablespace data01 as select * from dba_objects where 1=0; 表已创建。 SQL> insert into data03 select * from dba_objects; 已创建12645行。 SQL> alter system archive log current; 系统已更改。 SQL> commit; 提交完成。 SQL> alter system archive log current; 系统已更改。
3、关闭系统,删除存放data01、data02、data03数据的data01文件:
SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
4、启动到mount,发现文件4,也就是data01文件是需要恢复的:
SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 1068937216 bytes Fixed Size 2182592 bytes Variable Size 675283520 bytes Database Buffers 385875968 bytes Redo Buffers 5595136 bytes 数据库装载完毕。 SQL> select file#,error from v$recover_file; FILE# ERROR ---------- ----------------------------------------------------------------- 4 FILE NOT FOUND
5、把所有的数据文件复制到指定的目录,注意,不仅是data01文件,还有其他所有的文件。
6、进行基于cancel的恢复,并用resetlogs选项来打开数据库:
SQL> recover database until cancel ORA-00279: 更改 232570 (在 03/10/2014 21:03:03 生成) 对于线程 1 是必需的 ORA-00289: 建议: D:\DEMO\ARCHIVE3\ARC0000000015_0841612121.0001 ORA-00280: 更改 232570 (用于线程 1) 在序列 #15 中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: 更改 232764 (在 03/11/2014 18:51:17 生成) 对于线程 1 是必需的 ORA-00289: 建议: D:\DEMO\ARCHIVE3\ARC0000000016_0841612121.0001 ORA-00280: 更改 232764 (用于线程 1) 在序列 #16 中 ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE3\ARC0000000015_0841612121.0001' 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: 更改 233240 (在 03/11/2014 19:36:19 生成) 对于线程 1 是必需的 ORA-00289: 建议: D:\DEMO\ARCHIVE3\ARC0000000017_0841612121.0001 ORA-00280: 更改 233240 (用于线程 1) 在序列 #17 中 ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE3\ARC0000000016_0841612121.0001' 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: 更改 233352 (在 03/11/2014 19:37:30 生成) 对于线程 1 是必需的 ORA-00289: 建议: D:\DEMO\ARCHIVE3\ARC0000000018_0841612121.0001 ORA-00280: 更改 233352 (用于线程 1) 在序列 #18 中 ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE3\ARC0000000017_0841612121.0001' 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00308: cannot open archived log