我们很多不太重要的数据库(如测试库)都是工作在noarchive模式,下面我们就来谈谈,在noarchive模式下一些文件丢失的恢复:
条件:
1.shutdown immediate(即不含active的redoglog)
2.redolog全部丢失
3.控制文件,数据文件没问题
4.noarchive模式
插入2行数据,一行commit,一行未commit:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sys@ORALOCAL(192.168.0.12)> insert into oratest.xxx values(1); 已创建 1 行。 已用时间: 00: 00: 00.37 sys@ORALOCAL(192.168.0.12)> commit; 提交完成。 已用时间: 00: 00: 00.29 sys@ORALOCAL(192.168.0.12)> insert into oratest.xxx values(2); 已创建 1 行。 已用时间: 00: 00: 00.25 sys@ORALOCAL(192.168.0.12)> |
正常shutdown,删除或者重命名redolog:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
sys@ORALOCAL(192.168.0.12)> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 D:\oracle\logfiles\oralocal>ren *.log *.bak D:\oracle\logfiles\oralocal>dir 驱动器 D 中的卷是 SOFTWARE 卷的序列号是 781F-1C15 D:\oracle\logfiles\oralocal 的目录 2007-10-27 23:21 <DIR> . 2007-10-27 23:21 <DIR> .. 2007-10-27 23:21 10,486,272 REDO101.bak 2007-10-27 23:21 10,486,272 REDO102.bak 2007-10-27 23:21 10,486,272 REDO103.bak 2007-10-27 22:58 10,486,272 REDO201.bak 2007-10-27 22:58 10,486,272 REDO202.bak 2007-10-27 22:58 10,486,272 REDO203.bak 2007-10-27 22:58 10,486,272 REDO301.bak 2007-10-27 22:58 10,486,272 REDO302.bak 2007-10-27 22:58 10,486,272 REDO303.bak 9 个文件 94,376,448 字节 2 个目录 10,824,581,120 可用字节 |
重启时出现报错信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
sys@ORALOCAL(192.168.0.12)> startup ORACLE 例程已经启动。 Total System Global Area 139533192 bytes Fixed Size 453512 bytes Variable Size 109051904 bytes Database Buffers 29360128 bytes Redo Buffers 667648 bytes 数据库装载完毕。 ORA-00313: 无法打开日志组 1 (线程 1) 的成员 ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\LOGFILES\ORALOCAL\REDO101.LOG' ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\LOGFILES\ORALOCAL\REDO102.LOG' ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\LOGFILES\ORALOCAL\REDO103.LOG' |
利用介质恢复进行恢复redolog:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
sys@ORALOCAL(192.168.0.12)> recover database until cancel; 完成介质恢复。 sys@ORALOCAL(192.168.0.12)> alter database open; alter database open * 第 1 行出现错误: ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 已用时间: 00: 00: 01.00 sys@ORALOCAL(192.168.0.12)> alter database open resetlogs; 数据库已更改。 已用时间: 00: 00: 46.74 sys@ORALOCAL(192.168.0.12)> select * from oratest.xxx; A ---------- 1 已用时间: 00: 00: 00.08 |