oracle 刪不掉歸檔日誌檔案的解決方法
問題描述:
使用delete expired archivelog all;
delete noprompt archivelog until time 'sysdate - 7' ;命令指令碼定時執行自動刪除7天以前的歸檔日誌,發現歸檔日誌資料夾還有大量磁碟空間未釋放,檢視還存在大量7天以前的歸檔日誌
問題分析:
使用rman命令刪除歸檔日誌是根據crontrolfile中記錄的歸檔日誌,如果你的歸檔日誌沒在crontrolfile中記錄就無法被rman識別進而無法刪除,歸檔日誌在控制檔案記錄的多少是由V$CONTROLFILE_RECORD_SECTION檢視中的ARCHIVED LOG條目去控制的,當RECORDS_TOTAL=RECORDS_USED時舊的歸檔日誌就會被覆蓋掉,sql命令查詢
select * from v$controlfile_record_section where type='ARCHIVED LOG';發現,只保留1792條歸檔日誌資訊,其他歸檔日誌不在控制檔案儲存。
問題處理:
需要把在控制檔案沒做記錄的歸檔資訊重新註冊到控制檔案中進而刪除,rman target /命令進入
執行catalog start with '/oracle/oradata/dbaxj/archivelog'進行註冊,sql命令select count(*) from v$archived_log;歸檔日誌變多了,說明註冊成功,再執行delete noprompt archivelog until time 'sysdate - 7' ;命令,之前沒刪除的歸檔日誌已全部刪除,空間也都釋放了。