刪除日誌檔案組或成員

skyin_1603發表於2016-10-19
刪除日誌檔案組:(前提條件:資料庫處於歸檔模式,並且將要刪除的日誌檔案成員或者日誌檔案組已經完成歸檔。)

--先檢視資料庫的歸檔模式:
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     89
Next log sequence to archive   92
Current log sequence           92

--新增一個測試日誌檔案成員:
SQL> alter database add logfile member
  2  '/u01/app/oracle/oradata/PROD/redo04.log' to group 3;
Database altered.

--檢視日誌檔案組跟成員:
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- --------------------------------------------------
         1 /u01/app/oracle/oradata/PROD/redo01.log
         2 /u01/app/oracle/oradata/PROD/redo02.log
         3 /u01/app/oracle/oradata/PROD/redo03.log
         4 /u01/app/FRA/redo05.log
         4 /u01/app/FRA/redo06.log
         3 /u01/app/oracle/oradata/PROD/redo04.log
看到已經成功給第3組日誌組新增了一個日誌成員4.

--檢視各日誌檔案組的狀態:
SQL> select GROUP#,bytes/1024/1024,MEMBERS,STATUS from v$log;
    GROUP# BYTES/1024/1024    MEMBERS STATUS
---------- --------------- ---------- ----------------
         1              10          1 INACTIVE
         2              10          1 CURRENT
         3              10          2 INACTIVE
         4              20          2 INACTIVE
可以看到目前正在使用第2組日誌檔案,其他的日誌組都處於INACTIVE狀態,已經完成歸檔的狀態。

--刪除一個日誌檔案組第4組並檢視日誌檔案組與成員:
SQL> alter database drop logfile group 4;
Database altered.

SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- --------------------------------------------------
         1 /u01/app/oracle/oradata/PROD/redo01.log
         2 /u01/app/oracle/oradata/PROD/redo02.log
         3 /u01/app/oracle/oradata/PROD/redo03.log
         3 /u01/app/oracle/oradata/PROD/redo04.log
看到已經把第4組日誌檔案組成功刪除。

--刪除日誌檔案組3的日誌檔案成員4並檢視日誌檔案組與成員:
SQL> alter database drop logfile member
  2  '/u01/app/oracle/oradata/PROD/redo04.log' ;
Database altered.

SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- --------------------------------------------------
         1 /u01/app/oracle/oradata/PROD/redo01.log
         2 /u01/app/oracle/oradata/PROD/redo02.log
         3 /u01/app/oracle/oradata/PROD/redo03.log
已經成功刪除一個日誌檔案成員redo04.log.

--最後檢視一下,有沒有觸碰到current日誌檔案:
SQL> select GROUP#,bytes/1024/1024,MEMBERS,STATUS from v$log;
    GROUP# BYTES/1024/1024    MEMBERS STATUS
---------- --------------- ---------- ----------------
         1              10          1 INACTIVE
         2              10          1 CURRENT
         3              10          1 INACTIVE
發現沒有誤刪除日誌檔案組或成員。

--嘗試關閉資料庫並再次開啟:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 
SQL> startup
ORACLE instance started.

Total System Global Area  835104768 bytes
Fixed Size                  2257840 bytes
Variable Size             541068368 bytes
Database Buffers          289406976 bytes
Redo Buffers                2371584 bytes
Database mounted.
Database opened.


開始的時候,說到刪除日誌檔案組或者成員的前提條件:除了資料庫處於歸檔模式,並且將要刪除的日誌檔案成員
或者日誌檔案組已經完成歸檔,則一般不是current或者active兩種狀態下的都可以刪除,還需要確保資料庫除要刪除
的日誌組外還有兩個日誌檔案組可以使用。

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

相關文章