richard的專欄([email protecte
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;