如何正確地刪除Archivelog:
Archivelog並不能直接得從OS層直接物理刪除,因為archivelog的相關信息是記錄在controlfile中的,當物理刪除后不會改變controlfile的設置。並且在查詢相關的動態視圖(例如v$archived_log)時,該部分日志仍然標注為存在。也就是說Oracle並不認為這些日志被刪除了,所以在刪除archivelog的時候,需要我們在其他地方做一些設置。一、使用RMAN清除物理刪除后的記錄
可以使用RMAN來刪除archivelog,具體可以按以下步驟操作:
1、物理刪除archivelog 2、進入RMAN 3、crosscheck archivelog all; 4、delete expried archivelog all;
這樣就在一些Oracle的記錄中查不到相應的archivelog記錄了。
二、直接使用RMAN刪除archivelog
其實在RMAN中是可以使用命令直接將ARCHIVELOG刪除的,命令如下:
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
表示刪除7天以前的所有archivelog,但是這個命令的缺點是無法對archivelog進行細致的划分。
三、使用RMAN備份achivelog后刪除
這是一種最為穩妥的方法了,使用RMAN備份archivelog,備份后全部刪除
backup format '/u01/arch_%T_%s_%U' archivelog all delete input; 或者
backup database plus archivelog;
注:我在庫上設置了Streams后,使用RMAN刪除archivelog會導致報錯RMAN-08137: WARNING:
archive log not deleted as it is still needed. 不知道該如何解決,據說是10.2的一個bug,如果真
是bug的話,那只能在OS層設置刪除,或用RMAN進行強制刪除了。
10g之后的版本,Oracle在RMAN中內置增加了一項歸檔文件的刪除策略,終於,DBA可以僅通過一項配置就
解決該問題了。該策略對應兩個值:
APPLIED ON STANDBY:設置為該值時,當通過附加的DELETE INPUT子句刪除Standby數據庫仍需要的日志
時,會提示RMAN-08137錯誤。不過用戶仍然可以手動地通過DELETE ARCHIVELOG方式刪除。
NONE:設置為該值時,則不啟用歸檔文件的刪除策略。默認情況下就是NONE。
例如,啟用APPLIED ON STANDBY: RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY; new RMAN configuration parameters: CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY; new RMAN configuration parameters are successfully stored
RMAN> run { backup archivelog all delete input format 'ZHSVR044_%d_set=%s_piece=%p_date=%T.ARC.rmn'; }