联机重做日志丢失的恢复测试

第一种情况:非当前日志组

备份数据库:

rman target sys/asd@orcl

RMAN>backupincremental level 0 database;--缺省会使用配置中的格式来备份;

 

创建测试表

create table test_20151105a as select *from user_tables;

 

切换日志

altersystem switch logfile;--原先是第一日志,切换一轮之后重新切换到第一组日志;

 

删除第四组日志组以及数据文件

startup nomount;

 

rman target /

set dbid 1405423294

sql 'alter database mount';

restore database;

 

recover database;

恢复数据库未报错,但是打开数据库时报错了。

ORA-00313: open failed for members of loggroup 4 of thread 1

ORA-00312: online log 4 thread 1:'/u01/app/oracle/oradata/orcl/redo4.log'

ORA-27037: unable to obtain file status

 

执行以下命令打开数据库,正常打开数据库。

startup mount;

alter database clear logfile group 4;

alter database open;

 

 

第二种情况:当前日志组

备份数据库:

rman target sys/asd@orcl

RMAN>backupincremental level 0 database;--缺省会使用配置中的格式来备份;

 

创建测试表

create table test_20151105b as select *from user_tables;

 

切换日志

altersystem switch logfile;--切换到第四组;

 

删除第四组日志组以及数据文件

startup nomount;

 

rman target /

set dbid 1405423294

sql 'alter database mount';

restore database;

 

recover database;

在丢失当前组情况下,恢复数据库失败。

SQL命令行中尝试使用

recover database until cancel;

alter database open resetlogs;

 

数据库可以正常打开。

 

小结:

非当前日志组丢失后的恢复,可以重建日志组,进而打开数据库;丢失当前数据库时,可以使用不完全恢复到cancel,再使用resetlogs打开数据库。


你可能感兴趣的:(数据库恢复,日志文件丢失)