【oracle11g,11】redo日志文件2 :日志恢复 (重点)
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最快的磁盘,最好使用阵列。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.