1报错如下
ORA-00354: corrupt redolog block header
ORA-00353: log corruptionnear block 162280 change 465824441547 time 08/28/2015 10:44:22
ORA-00312: online log 5 thread 1:'/u01/oradata/dpweb/redo05.log
2
select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- -------------------- ---------- ---------- ------------------- ------------- ---------
4 1 20331 524288000 1 NO CURRENT 4.6586E+11 28-AUG-15
5 1 20329 524288000 1 NO INACTIVE 4.6582E+11 28-AUG-15
6 1 20330 524288000 1 NO INACTIVE 4.6584E+11 28-AUG-15
发现每个组只有1个,没有冗余,如果有冗余的话,这里就好办了,直接把损坏的文件从日志组里面踢出,重新建一个就OK了。(可见redo log做冗余的重要性)
3加日志文件
SQL>alter database addlogfile group 1 '/u01/oradata/dpweb/redo01.log' size 500M reuse;
SQL> alter databaseadd logfile group 2 '/u01/oradata/dpweb/redo02.log' size 500M reuse;
SQL> alter databaseadd logfile group 3 '/u01/oradata/dpweb/redo03.log' size 500M reuse;
4
此时,日志组已经切换到了新添加的redo01上。
select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCSTATUS FIRST_CHANGE# FIRST_TIM
---------- -------------------- ---------- ---------- --- ---------------- ------------- ---------
1 1 20332 524288000 1 NO CURRENT 4.6589E+11 28-AUG-15
2 1 0 524288000 1 YES UNUSED 0
3 1 0 524288000 1 YES UNUSED 0
4 1 20331 524288000 1 NO INACTIVE 4.6586E+11 28-AUG-15
5 1 20329 524288000 1 NO INACTIVE 4.6582E+11 28-AUG-15
6 1 20330 524288000 1 NO INACTIVE 4.6584E+11 28-AUG-15
5
终极解决方案:强制清理未归档的日志组
SQL> alter databaseclear unarchived logfile group 5;
Database altered.
总结:redo冗余的方法alter database add logfile member '/u01/app/oracle/data/db01/redo03.log' to group 3;