僅檢查文件系統 df -h 看到有剩餘空間,就以為 FRA 未滿。**錯誤!** Oracle FRA 受 DB_RECOVERY_FILE_DEST_SIZE 邏輯配額限制,達到上限即拒絕寫入,即使磁盤物理空間充足。
SHOW PARAMETER db_recovery_file_dest;
-- 輸出示例:
-- db_recovery_file_dest string /oracle/flash_recovery_area
-- db_recovery_file_dest_size big integer 2G
df -h /oracle/flash_recovery_area
# 確認物理磁盤確實有空間,排除磁盤故障/掛載點錯誤
SELECT * FROM v$flash_recovery_area_usage;
-- 關鍵列: PERCENT_SPACE_USED, PERCENT_SPACE_RECLAIMABLE, NUMBER_OF_FILES
-- FILE_TYPE: CONTROLFILE, ONLINELOG, ARCHIVELOG, BACKUPPIECE, IMAGECOPY, FLASHBACKLOG
SELECT name,
space_limit/1024/1024 AS limit_mb,
space_used/1024/1024 AS used_mb,
space_reclaimable/1024/1024 AS reclaimable_mb,
number_of_files
FROM v$recovery_file_dest;
-- 輸出示例:
-- /oracle/flash_recovery_area 2048 1760 0 51
-- 即:配額 2GB,已用 1.7GB,可回收 0,51 個文件
判斷標準: SPACE_USED >= SPACE_LIMIT 即為 FRA 滿,無論 OS 剩餘多少。
ARCHIVE LOG LIST;
-- 關鍵輸出:
-- Archive destination USE_DB_RECOVERY_FILE_DEST
-- 若顯式顯示路徑而非 USE_DB_RECOVERY_FILE_DEST,則受 log_archive_dest_n 參數控制,需另行檢查
ALTER SYSTEM SET db_recovery_file_dest_size=10G SCOPE=BOTH;RMAN> DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-3' BACKED UP 1 TIMES TO DEVICE TYPE DISK;ALTER DATABASE FLASHBACK OFF; -- 刪除所有闪回日志,慎用DB_RECOVERY_FILE_DEST_SIZE 為磁盤容量 80-90%,留紅線。CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; 並定期 CROSSCHECK/DELETE OBSOLETE。SPACE_USED/SPACE_LIMIT > 85% 觸發告警,>95% 觸發緊急處置腳本。