您的位置:首页 > 数据库 > Oracle

rman实验之归档模式无备份,正常关机丢失当前联机重做日志文件的恢复

2012-08-08 11:46 771 查看
    所有的备份软件都没有备份联机重做日志文件的说法。因为,它几乎时刻都在写,单独备份某个时刻,没啥意义。再者,归档日志在某种意义上,也是对联机重做日志的备份。对联机重做日志文件的保护,核心就两个字:冗余。包括:多路镜像、RAID方式、HA的运用(如DG)。
    1)查看当前的联机重做日志文件sys@ORCL> select group#,members,sequence#,status from v$log;

GROUP# MEMBERS SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 2 5 CURRENT
2 2 4 INACTIVE
3 2 3 INACTIVE

sys@ORCL> col member for a70 wrapped
sys@ORCL> select group#,member from v$logfile where group#=1;

GROUP# MEMBER
---------- ----------------------------------------------------------------------
1 /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8050hhn1_.log
1 /u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_8050hkdv_.l
og
    2)模拟文件丢失sys@ORCL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ORCL> host rm -rf /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8050hhn1_.log

sys@ORCL> host rm -rf /u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_8050hkdv_.log

sys@ORCL> startup
ORACLE instance started.

Total System Global Area 419430400 bytes
Fixed Size 1219760 bytes
Variable Size 155190096 bytes
Database Buffers 260046848 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8050hhn1_.log'
ORA-00312: online log 1 thread 1:
'/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_8050hkdv_.log'
    3)修改_ALLOW_RESETLOGS_CORRUPTION
    因为没有备份,就只能强制恢复了。所以在这里我们需要修改一个隐藏的初始化参数:sys@ORCL> alter system set "_ALLOW_RESETLOGS_CORRUPTION"=TRUE SCOPE=SPFILE;
    设置该参数为true后,oracle在open时会跳过一些一致性的检查。
    4)关闭并重新mount数据库sys@ORCL> shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
sys@ORCL> startup mount
ORACLE instance started.

Total System Global Area 419430400 bytes
Fixed Size 1219760 bytes
Variable Size 155190096 bytes
Database Buffers 260046848 bytes
Redo Buffers 2973696 bytes
Database mounted.
    5)执行不完全恢复sys@ORCL> recover database until cancel;
Media recovery complete.
    6)通过open resetlogs打开数据库sys@ORCL> alter database open resetlogs;

Database altered.    7)善后处理
    这是种走投无路的做法了。“邪魔外道的功夫”。以这种方式恢复,有可能导致数据库中数据的不一致,如已提交的未写入,未提交的已写入。在告警日志中,可能有报600错误了。强烈建议马上通过exp执行一次full exp,然后新建数据库,再通过imp导入之前导出的二进制文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐