【REDO】刪除聯機重做日誌檔案組成員的注意事項

secooler發表於2011-07-13
    關於聯機重做日誌檔案組成員的刪除需要注意以下幾點:
    ①無法刪除狀態為“CURRENT”的日誌組成員
    ②無法刪除日誌組中的最後一個日誌成員
    ③無法刪除歸檔模式下未歸檔的日誌組成員

1.無法刪除狀態為“CURRENT”的日誌組成員
1)查詢獲取資料庫中日誌組和日誌檔案的狀態
sys@ora10g> col MEMBER for a42
sys@ora10g> col status for a8
sys@ora10g> col MEMBER for a42
sys@ora10g> select log.group#,log.status,logfile.member from v$log log, v$logfile logfile where log.group#=logfile.group# order by group#;

    GROUP# STATUS   MEMBER
---------- -------- ---------------------------------------------
         1 CURRENT  /oracle/ora10gR2/oradata/ora10g/redo01_b.log
         1 CURRENT  /oracle/ora10gR2/oradata/ora10g/redo01.log
         2 INACTIVE /oracle/ora10gR2/oradata/ora10g/redo02_b.log
         2 INACTIVE /oracle/ora10gR2/oradata/ora10g/redo02.log

2)嘗試刪除狀態為“CURRENT”的日誌組成員
sys@ora10g> alter database drop logfile member '/oracle/ora10gR2/oradata/ora10g/redo01_b.log';
alter database drop logfile member '/oracle/ora10gR2/oradata/ora10g/redo01_b.log'
*
ERROR at line 1:
ORA-01609: log 1 is the current log for thread 1 - cannot drop members
ORA-00312: online log 1 thread 1: '/oracle/ora10gR2/oradata/ora10g/redo01.log'
ORA-00312: online log 1 thread 1: '/oracle/ora10gR2/oradata/ora10g/redo01_b.log'

提示資訊中給出所有狀態為“CURRENT”的日誌組成員資訊,同時給出提示,這些成員是無法刪除的。

2.無法刪除日誌組中的最後一個日誌成員
1)嘗試刪除第二組日誌中的第一個日誌成員
sys@ora10g> select log.group#,log.status,logfile.member from v$log log, v$logfile logfile where log.group#=logfile.group# and log.group#=2;

    GROUP# STATUS   MEMBER
---------- -------- ---------------------------------------------
         2 INACTIVE /oracle/ora10gR2/oradata/ora10g/redo02_b.log
         2 INACTIVE /oracle/ora10gR2/oradata/ora10g/redo02.log

sys@ora10g> alter database drop logfile member '/oracle/ora10gR2/oradata/ora10g/redo02_b.log';

Database altered.

sys@ora10g> select log.group#,log.status,logfile.member from v$log log, v$logfile logfile where log.group#=logfile.group# and log.group#=2;

    GROUP# STATUS   MEMBER
---------- -------- ---------------------------------------------
         2 INACTIVE /oracle/ora10gR2/oradata/ora10g/redo02.log

刪除成功。

2)嘗試刪除第二組日誌中的最後一個日誌成員
sys@ora10g> alter database drop logfile member '/oracle/ora10gR2/oradata/ora10g/redo02.log';
alter database drop logfile member '/oracle/ora10gR2/oradata/ora10g/redo02.log'
*
ERROR at line 1:
ORA-00361: cannot remove last log member /oracle/ora10gR2/oradata/ora10g/redo02.log for group 2

結論得以驗證,ORA-00361錯誤提示表明我們無法刪除重做日誌組中的最後一個日誌成員。

3.無法刪除歸檔模式下未歸檔的日誌組成員
這一條結論是顯然的,否則Oracle將無法保證事務的可恢復性。

4.小結
    本文就聯機重做日誌檔案組成員刪除過程中需要注意的三個方面進行了測試,在日常維護過程中就此內容需要多加註意。
    建議根據具體的應用特點建立多個日誌組,並且保證每組日誌中包含多個日誌成員,防止因個別日誌檔案損壞導致系統故障。

Good luck.

secooler
11.07.13

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-702501/,如需轉載,請註明出處,否則將追究法律責任。

相關文章