【刪除聯機重做日誌組成員 redolog group】
關於聯機重做日誌文件組的刪除需要注意以下幾點:
①日誌組爲active和current狀態時不可以刪除
②日誌組在數據庫級別刪除後操作系統上的文件不會被級鏈刪除
③對於一個Oracle數據庫實例,至少要包含兩個聯機重做日誌組
1.日誌組爲active和current狀態時不可以刪除
1)查詢當前系統中日誌組狀態
sys@ora10g> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 INACTIVE
2)嘗試刪除狀態爲“CURRENT”的聯機重做日誌組
這裏顯示爲“CURRENT”狀態的日誌組爲第一組。
sys@ora10g> 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 ora10g (thread 1) - cannot drop
ORA-00312: online log 1 thread 1: '/oracle/ora10gR2/oradata/ora10g/redo01.log'
提示信息描述得很清楚,由於要刪除的第一組日誌是ora10g實例的當前日誌組,不允許刪除。
2.日誌組在數據庫級別刪除後操作系統上的文件不會被級鏈刪除
1)獲取日誌組成員信息
sys@ora10g> col MEMBER for a50
sys@ora10g> select group#,member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------
1 /oracle/ora10gR2/oradata/ora10g/redo01.log
2 /oracle/ora10gR2/oradata/ora10g/redo02.log
3 /oracle/ora10gR2/oradata/ora10g/redo03.log
2)刪除第三組日誌
sys@ora10g> alter database drop logfile group 3;
Database altered.
sys@ora10g> select group#,member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------
1 /oracle/ora10gR2/oradata/ora10g/redo01.log
2 /oracle/ora10gR2/oradata/ora10g/redo02.log
刪除成功。
3)確認操作系統文件是否刪除
sys@ora10g> !ls -l /oracle/ora10gR2/oradata/ora10g/redo03.log
-rw-r----- 1 oracle oinstall 52429312 Jul 12 10:58 /oracle/ora10gR2/oradata/ora10g/redo03.log
可見,雖然在數據庫層面已經將日誌組刪除成功,但是在操作系統上依然殘留着對應的文件。
也正因爲這個原因,如果沒有對操作系統做相應清理,在此使用同樣的文件創建日誌組時會報“ORA-27038”錯,提示文件已經存在,如下所示。
sys@ora10g> alter database add logfile group 3 ('/oracle/ora10gR2/oradata/ora10g/redo03.log') size 50m;
alter database add logfile group 3 ('/oracle/ora10gR2/oradata/ora10g/redo03.log') size 50m
*
ERROR at line 1:
ORA-00301: error in adding log file '/oracle/ora10gR2/oradata/ora10g/redo03.log' - file cannot be created
ORA-27038: created file already exists
Additional information: 1
4)手工刪除操作系統上的殘留文件
sys@ora10g> !rm -f /oracle/ora10gR2/oradata/ora10g/redo03.log
這樣,日誌文件組刪除任務纔算徹底完成。
3.對於一個Oracle數據庫實例,至少要包含兩個聯機重做日誌組
目的:進行切換,以便歸檔模式下進行歸檔。
1)確認當前系統日子組信息
sys@ora10g> select group#,member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------
1 /oracle/ora10gR2/oradata/ora10g/redo01.log
2 /oracle/ora10gR2/oradata/ora10g/redo02.log
2)嘗試再刪除一組日誌
目前系統中僅剩兩組日誌組,此時我們嘗試再刪除一組日誌,看看結果如何。
sys@ora10g> alter database drop logfile group 2;
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01567: dropping log 2 would leave less than 2 log files for instance ora10g (thread 1)
ORA-00312: online log 2 thread 1: '/oracle/ora10gR2/oradata/ora10g/redo02.log'
其中的“ORA-01567”錯誤提示內容已經清晰的說明了一切:dropping log 2 would leave less than 2 log files for instance ora10g (thread 1)
4.小結
本文就聯機重做日誌文件組刪除過程中需要注意的三個方面進行了測試,在日常維護過程中就此內容需要多加註意。
建議根據具體的應用特點創建多個日誌組,並且保證每組日誌中包含多個日誌成員,防止因個別日誌文件損壞導致系統故障。