1. 概述
Oracle 啟動歸檔日誌的狀態下,會在指定的歸檔日誌目錄生成大量的日誌檔案,而且這些日誌檔案預設是不會定期清理。長時間運作後,會佔用大量的儲存空間,最終可能導致 Oracle 沒有足夠的空間維持啟動狀態。
若磁碟空間滿了會影響業務,因此需要定期清理過期歸檔日誌。
在 Oracle 的控制檔案中記錄着每一個歸檔日誌檔案的相關資訊。當手動刪除了歸檔日誌的物理檔案後,控制檔案中依然記錄着已刪除的歸檔日誌資訊。所以當我們刪除歸檔日誌檔案時,不僅需要刪除物理檔案,還要刪除控制檔案中對應的資訊。
2. 準備工作
確定歸檔日誌位置,歸檔日誌路徑不一定相同,如果不清楚歸檔日誌在哪,可以透過命令find / -name *.dbf尋找。

3. 方法一:rman刪除歸檔日誌
這種方法,可以將控制檔案中記錄資訊和物理檔案同步刪除,更為方便。
3.1 查看控制檔案記錄
登入 rman 。
使用命令:rman target /
可以看到已經進入RMAN。

使用命令查看所有歸檔日誌資訊:
list archivelog all;
3.2 刪除指定日期前日誌
使用命令刪除 3 天前的歸檔日誌,在刪除控制檔案記錄的同時,也會將物理檔案刪除。
delete archivelog all completed before 'SYSDATE - 3';

在確認位置輸入 YES 即可成功刪除。
3.3查看物理檔案
在上一步中刪除的檔案,觀察物理檔案列表後,可以看到物理檔案也會被同步刪除。
4. 方法二
如果之前手動刪除過物理檔案,可以查看這個方法,將控制檔案中歸檔日誌記錄刪除
4.1 刪除物理檔案
刪除物理檔案:xxxx.dbf
進入存放dbf檔案的位置,然後使用命令:
rm -f 檔案名稱.dbf
4.2 查看控制檔案
透過如下命令查看Oracle控制檔案記錄歸檔日誌資訊,發現"xxx.dbf"還存在
登入rman。
使用命令:rman target /
可以看到已經進入RMAN。

使用命令查看所有歸檔日誌資訊:
list archivelog all;
4.3 對比檢查歸檔日誌物理檔案和控制檔案一致
如果之前已經刪除過物理檔案,並沒有刪除控制檔案中的資訊,請看如下操作:
crosscheck archivelog all;
優先使用這個命令,覈驗比對物理檔案和歸檔日誌記錄資訊一致
list expired archivelog all;
crosscheck 後,可以使用這個命令,查看有哪些過期的日誌檔案
4.4 刪除過期檔案
delete expired archivelog all;
刪除過期日誌檔案,在執行命令後,會提示你將要刪除哪些過期的日誌檔案

