关于redo的恢复


我们很多不太重要的数据库(如测试库)都是工作在noarchive模式,下面我们就来谈谈,在noarchive模式下一些文件丢失的恢复:

条件:
1.shutdown immediate(即不含active的redoglog)
2.redolog全部丢失
3.控制文件,数据文件没问题
4.noarchive模式

插入2行数据,一行commit,一行未commit:

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:

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 可用字节

重启时出现报错信息:

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:

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: 要打开数据库则必须使用 RESETLOGSNORESETLOGS 选项
 
 
已用时间: 
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

· 【文章发布信息】发表于: 2007-10-30 @ 22:38:36 · ||分类: Backup & recover

留条评论