刪除日誌檔案組與日誌檔案成員

pingley發表於2012-03-12
刪除日誌檔案組與日誌檔案成員
刪除日誌檔案組前,先檢視系統中日誌檔案組的資訊。處於current狀態的日誌檔案組是不能夠
刪除的,除非先進行強制日誌切換alter system switch logfile;.
SQL> select group#,archived,status
  2  from V$log;
    GROUP# ARC STATUS
---------- --- ----------------
         1 NO  CURRENT
         2 NO  INACTIVE
         3 NO  INACTIVE
         4 NO  INACTIVE
我要刪除的是group 4,該組處於inactive狀態所以可以刪除。另外系統中至少應該有兩個日誌
檔案組可以使用。如果啟用了歸檔的話,確保要刪除的日誌檔案組已經歸檔。
SQL> alter database drop logfile group 4;
Database altered.
嘗試刪除當前的日誌檔案組。可見是不允許你刪除的。
SQL>  alter database drop logfile group 1;
 alter database drop logfile group 1
*
ERROR at line 1:
ORA-01623: log 1 is current log for instance oracl (thread 1) - cannot drop
ORA-00312: online log 1 thread 1: '/opt/oracle11g/oradata/oracl/redo01.log'
雖然我們已經刪除了日誌檔案組group 4,但是該組中的日誌檔案成員還存在於作業系統中(對於
使用了OMF特性的資料庫系統,刪除的日誌檔案組中的日誌檔案會自動的幫你刪除。)所有需要
DBA進入作業系統查詢當相應的檔案進行手動刪除。
[oracle@zeng ~]$ cd /opt/oracle11g/oradata/oracl
[oracle@zeng oracl]$ ll
total 1827500
-rw-r-----. 1 oracle oinstall   9748480 Mar  9 13:28 control02.ctl
-rw-r-----. 1 oracle oinstall   9748480 Mar  9 13:28 control.ctl
-rw-r-----. 1 oracle oinstall  52429312 Mar  9 13:28 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Mar  9 10:21 redo02.log
-rw-r-----. 1 oracle oinstall  52429312 Mar  9 10:21 redo03.log
-rw-r-----. 1 oracle oinstall  20972032 Mar  9 10:21 redo401.log
-rw-r-----. 1 oracle oinstall  20972032 Mar  9 10:21 redo402.log
-rw-r-----. 1 oracle oinstall  52429312 Mar  8 22:50 redo.log
-rw-r-----. 1 oracle oinstall 629153792 Mar  9 13:26 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392 Mar  9 13:27 system01.dbf
-rw-r-----. 1 oracle oinstall  71311360 Mar  9 10:21 temp01.dbf
-rw-r-----. 1 oracle oinstall 209723392 Mar  9 13:27 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Mar  9 10:21 users01.dbf
刪除前請認真核對要刪除的日誌檔案是不是屬於剛才我們刪除的日誌檔案組的日誌檔案成員。
[oracle@zeng oracl]$ rm redo4*
確認刪除以後的日誌檔案組的資訊。
SQL> select group#,members,archived,status
  2  from V$log;
    GROUP#    MEMBERS ARC STATUS
---------- ---------- --- ----------------
         1          1 NO  CURRENT
         2          2 NO  INACTIVE
         3          1 NO  INACTIVE
刪除日誌檔案組中的日誌檔案成員前,檢視各日誌檔案組與日誌檔案成員的資訊。處於當前
或者活躍狀態的日誌檔案組中的日誌檔案是不能夠被刪除的。除非先進行強制日誌檔案卻換。
另外應該保證每組中至少有兩個日誌檔案成員,並分佈在不同的磁碟上。維護至少兩份日誌
檔案成員的意義在於如果其中的一個日誌檔案損壞,該日誌檔案組還可以正常工作。分佈在
不同磁碟上面的意義在於減少日誌檔案之間的I/O 競爭,並進一步提高可用性,以免介質故障
導致整個組的日誌檔案都不能訪問。
SQL> select group#,member
  2  from V$logfile;
    GROUP# MEMBER
---------- ----------------------------------------
         1 /opt/oracle11g/oradata/oracl/redo01.log
         2 /opt/oracle11g/oradata/oracl/redo02.log
         3 /opt/oracle11g/oradata/oracl/redo03.log
         2 /opt/oracle11g/oradata/oracl/redo.log
SQL> select group#,members,archived,status
  2  from V$log;
    GROUP#    MEMBERS ARC STATUS
---------- ---------- --- ----------------
         1          1 NO  CURRENT
         2          2 NO  INACTIVE
         3          1 NO  INACTIVE
我要刪除的是 group 2 中的/opt/oracle11g/oradata/oracl/redo.log。該組處於inactive
狀態,並且有兩個日誌檔案成員。另外如果啟用了歸檔,確保要刪除的日誌檔案已經歸檔。
SQL> alter database drop logfile member '/opt/oracle11g/oradata/oracl/redo.log';
Database altered.
嘗試刪除 group 2中僅剩的一個日誌檔案。當一個日誌檔案組中僅剩一個日誌檔案的時候
該日誌檔案時不能被刪除的。
SQL> alter database drop logfile member '/opt/oracle11g/oradata/oracl/redo02.log';
alter database drop logfile member '/opt/oracle11g/oradata/oracl/redo02.log'
*
ERROR at line 1:
ORA-00361: cannot remove last log member /opt/oracle11g/oradata/oracl/redo02.log for group 2
在沒有啟用OMF特性的資料庫系統中,需要DBA在作業系統中手動刪除該日誌檔案。

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

相關文章