【REDO】刪除REDO LOG重做日誌組後需要手工刪除對應的日誌檔案

secooler發表於2011-10-20
  為保證重新建立的日誌組成員可以成功建立,我們在刪除日誌組後需要手工刪除對應的日誌檔案。

1.檢視資料庫當前REDO LOG日誌相關資訊
1)檢視日誌組資訊
sys@ora10g> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS   FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- -------- ------------- -----------------
         1          1          0   52428800          2 YES UNUSED               0
         2          1          0   52428800          1 YES UNUSED               0
         3          1          0  524288000          1 YES UNUSED               0
         4          1          1  524288000          2 NO  CURRENT        6494848 20111019 22:32:01
         5          1          0  524288000          2 YES UNUSED               0


2)檢視日誌檔案資訊
sys@ora10g> col member for a50
sys@ora10g> select * from v$logfile;

    GROUP# STATUS  TYPE     MEMBER                                         IS_
---------- ------- -------- ---------------------------------------------- ---
         1         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo01.log     NO
         2         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo02.log     NO
         1         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo01_b.log   NO
         3         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo03_a.log   NO
         4         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo04_a.log   NO
         4         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo04_b.log   NO
         5         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo05_a.log   NO
         5         ONLINE   /oracle/ora10gR2/oradata/ora10g/redo05_b.log   NO

8 rows selected.


2.刪除日誌組
這裡以刪除第5組非活動日誌組為例作為演示。
sys@ora10g> alter database drop logfile group 5;

Database altered.

3.驗證此時日誌組對應的日誌檔案是否被刪除
sys@ora10g> !ls -l /oracle/ora10gR2/oradata/ora10g/redo05_a.log
-rw-r----- 1 oracle oinstall 524288512 Oct 19 22:33 /oracle/ora10gR2/oradata/ora10g/redo05_a.log

sys@ora10g> !ls -l /oracle/ora10gR2/oradata/ora10g/redo05_b.log
-rw-r----- 1 oracle oinstall 524288512 Oct 19 22:33 /oracle/ora10gR2/oradata/ora10g/redo05_b.log

顯然,此時作業系統上與第五組日誌相關的日誌檔案並沒有被刪除。此時需要我們手工完成清理動作,否則在下次建立同樣的日誌檔案時會報錯,提示檔案已經存在,不允許建立,具體報錯資訊如下所示。
sys@ora10g> alter database add logfile group 5 ('/oracle/ora10gR2/oradata/ora10g/redo05_a.log','/oracle/ora10gR2/oradata/ora10g/redo05_b.log') size 50M;
alter database add logfile group 5 ('/oracle/ora10gR2/oradata/ora10g/redo05_a.log','/oracle/ora10gR2/oradata/ora10g/redo05_b.log') size 50M
*
ERROR at line 1:
ORA-00301: error in adding log file '/oracle/ora10gR2/oradata/ora10g/redo05_a.log' - file cannot be created
ORA-27038: created file already exists
Additional information: 1

4.小結
  預設情況下當刪除日誌檔案組後Oracle不會將對應的日誌成員檔案在作業系統上刪除,此時我們需要在作業系統上使用rm進行處理,rm是危險的,當使用rm進行刪除時,一定要小心。為了防止出現此類問題的發生,我們可以考慮使用OMF或者ASM方式管理資料庫的檔案。

Good luck.

secooler
11.10.20

-- The End --

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

相關文章