歸檔區滿(ORA-19809/ORA-00257),資料庫掛起,需緊急釋放空間並同步清理 Control File/RMAN Repository 記錄。
# 1. 設定 SID
export ORACLE_SID=orcl
# 2. 連線 RMAN
rman target sys/pwd@orcl
# 3. 查看歸檔清單
RMAN> LIST ARCHIVELOG ALL;
# 4. 刪除 7 天前已備份的歸檔(含同步 Control File)
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
COMPLETED BEFORE 以完成時間判斷,SYSDATE-7 為 7 天前。若啟用 Flashback,亦會刪除對應 Flashback Log。
RMAN> DELETE ARCHIVELOG FROM TIME 'SYSDATE-7'; -- 刪除 7 天前至今所有,極高風險,執行後必須立即全備
# 1. OS 刪除 7 天前 .dbf
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} \;
# 2. RMAN 同步 Repository
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
缺點:兩步驟、易遺漏、CROSSCHECK 需掃描所有歸檔耗時。優點:find 可加複雜條件(大小、名稱模式)。
STARTUP MOUNT → ALTER DATABASE OPEN。LOG_ARCHIVE_DEST_n 多路徑分散,或啟用 DB_RECOVERY_FILE_DEST (FRA) 並設 DB_RECOVERY_FILE_DEST_SIZE。CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DEVICE TYPE DISK;。DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-' 每日/每週執行。SELECT * FROM v$flash_recovery_area_usage;。歸檔刪除核心原則:RMAN 為主(同步 Repository)、OS 為輔(特殊條件)、保留窗口滿足 RPO、刪除後必備份。將刪除邏輯封裝為 RMAN 腳本並納入排程,才是長久之計。