核心原則
歸檔日志是數據恢復命脈,**不到萬不得已嚴禁直接OS刪除**。標準流程:RMAN刪除 → 自動同步控制文件/RMAN倉庫 → 釋放磁盤空間。
RMAN標準刪除命令
# 進入RMAN
rman target /
# 1. 刪除7天前已完成的歸檔(含閃回日志)
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
-- 等效:DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7';
# 2. 刪除指定序列號範圍
RMAN> DELETE ARCHIVELOG FROM SEQUENCE 100 UNTIL SEQUENCE 200;
# 3. 刪除指定時間範圍(含未完成?需謹慎)
RMAN> DELETE ARCHIVELOG FROM TIME 'SYSDATE-7' UNTIL TIME 'SYSDATE-1';
# 4. 強制刪除(忽略備份狀態,極度危險)
RMAN> DELETE FORCE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
OS層面刪除的殘留風險與修復
# 錯誤示範:直接rm
find /oraarchive -mtime +7 -name "*.arc" -exec rm -f {} \;
# 後果:控制文件/RMAN倉庫仍記錄文件存在,報ORA-19569等錯誤
# 修復:必須執行交叉檢查並清理過期記錄
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
自動化清理腳本(納入crontab)
#!/bin/bash
# 清理策略:保留最近7天歸檔,配合每日Level 1備份、每周Level 0備份
export ORACLE_SID=ORCL
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <
Flash Recovery Area (FRA) 空間管理(10g+)
-- 查看FRA使用情況
SELECT * FROM v$flash_recovery_area_usage;
-- 動態調整FRA大小
ALTER SYSTEM SET db_recovery_file_dest_size = 50G SCOPE=BOTH;
-- 設置歸檔保留策略(配合RMAN備份策略)
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DEVICE TYPE DISK;
關鍵監控指標
| 指標 | 查詢 | 告警閾值 |
| FRA使用率 | SELECT space_used/space_limit*100 FROM v$flash_recovery_area_usage; | >80% |
| 歸檔目標狀態 | SELECT dest_name, status, error FROM v$archive_dest WHERE status='VALID'; | ERROR非空 |
| 未備份歸檔數 | SELECT COUNT(*) FROM v$archived_log WHERE backup_count=0 AND deleted='NO'; | >0(視策略) |
最佳實踐:
• 歸檔刪除策略綁定RMAN備份策略:如「每日增量、每周全量」→ 歸檔保留8天且BACKED UP 1 TIMES。
• 生產庫禁用LOG_ARCHIVE_DEST_n='LOCATION=... MANDATORY'導致歸檔卡住實例,改用OPTIONAL+監控告警。
• 定期演練RESTORE ARCHIVELOG驗證歸檔可用性。
• 12c+ CDB架構下,歸檔在CDB$ROOT層面管理,PDB無獨立歸檔。