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

【oracle11g,11】redo日志文件2 :日志恢复 (重点)

2014-09-10 07:27 274 查看

十.日志文件的恢复:


1.有多个日志成员,删除当前日志组一个成员: 数据库仍能启动,

告警日志中报错找不到日志文件。

 ORA-00313: open failed for members of log group 1 of thread 1
 ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/prod/disk1/redo01.log'

解决:

SQL>alter system switch logfile;

SQL>alter system checkpoint;

SQL> alter database drop logfile member '/u01/app/oracle/oradata/prod/disk1/redo01.log';

SQL> alter database add logfile member '/u01/app/oracle/oradata/prod/disk1/redo01.log'
to group 1;

2.删除inactive非当前日志组的所有成员: 数据库无法启动。

解决方案1:执行clear操作,重新建立空白的日志文件

数据库mount阶段,执行clear

SQL> alter database clear logfile group 4;

SQL> alter database open ;

解决方案2:执行drop操作:

SQL> alter database drop logfile group 4;

3.删除当前日志组的所有成员并且正常关库: 数据库无法启动

由于是正常关库,所以会已经写过脏块了。

oracle 10g 解决:

oracle 10g在恢复当前日志组时,不让clear 或者drop当前的日志组,只能做不完全恢复。

#使用不完全恢复, until cancel:表示应用日志到日志断层的地方。

SQL> recover database until cancel;

#必须使用resetlogs 开库,

SQL> alter database  open resetlogs;

oracle 11g解决:

 oracle 11g在恢复当前日志组时,可以执行clear 或者drop日志组,因为是正常关库oracle
已经写了脏苦块。 

SQL> alter database clear logfile group 2;

#在归档模式下

用alter database clear logfile命令尝试重构logfile group 1,失败;
SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR at line 1:
ORA-00350: log 1 of instance orcl (thread 1) needs to be archived
ORA-00312: online log 1 thread 1: '/u02/oradata/orcl/redo01.log'
失败的原因是group 1还没有归档,需要加上”unarchived”参数;
SQL> alter database clear unarchived logfile group 1;
Database altered.

建议clear,特别是强行clear后作一次数据库的全备份。 

4.删除当前日志组的所有成员并且非正常关库: 数据库无法启动

   

   使用不完全恢复 recover database until cancel 无法恢复。

 解决办法: 
  首选方法:如果有备份可以使用备份恢复,(备份恢复时解决)。
   
  方法2:使用_allow_resetlogs_corruption=true隐藏参数启动数据库,将数据中文件导出,当使用了隐藏参数,数据库完整性被破坏,数据库不能再继续使用,需要建立新的数据库将数据文件导进去。


十一.日志文件的存储管理:


日志文件存储:日志文件很重要,最好使用io最快的磁盘,最好使用阵列。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle11g