首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

如何準確判斷 Oracle 歸檔空間 (FRA) 是否真正滿了

     編輯:Oracle 資料庫相關知識

常見誤區

僅檢查文件系統 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

三層檢查體系

第一層:OS 文件系統層面

df -h /oracle/flash_recovery_area
# 確認物理磁盤確實有空間,排除磁盤故障/掛載點錯誤

第二層:FRA 使用率視圖 (v$flash_recovery_area_usage)

SELECT * FROM v$flash_recovery_area_usage;
-- 關鍵列: PERCENT_SPACE_USED, PERCENT_SPACE_RECLAIMABLE, NUMBER_OF_FILES
-- FILE_TYPE: CONTROLFILE, ONLINELOG, ARCHIVELOG, BACKUPPIECE, IMAGECOPY, FLASHBACKLOG

第三層:FRA 空間配額視圖 (v$recovery_file_dest) — **最權威**

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 參數控制,需另行檢查

緊急處置方案 (FRA 滿導致數據庫掛起)

  1. 臨時增大配額 (需重啟生效靜態參數,或動態修改 11g+)
    ALTER SYSTEM SET db_recovery_file_dest_size=10G SCOPE=BOTH;
  2. 刪除過期備份/歸檔 (RMAN)
    RMAN> DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-3' BACKED UP 1 TIMES TO DEVICE TYPE DISK;
  3. 清理 Flashback Log (若啟用)
    ALTER DATABASE FLASHBACK OFF; -- 刪除所有闪回日志,慎用
  4. 移動 FRA 到大磁盤 (需重啟)
    修改參數 → 關庫 → OS 層移動文件 → 啟動

長期治理建議

  • 設置 DB_RECOVERY_FILE_DEST_SIZE 為磁盤容量 80-90%,留紅線。
  • 配置 RMAN 保留策略 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; 並定期 CROSSCHECK/DELETE OBSOLETE。
  • 監控告警:SPACE_USED/SPACE_LIMIT > 85% 觸發告警,>95% 觸發緊急處置腳本。
  • 歸檔日志備份到異地 (NFS/Object Storage) 後,本地可激進刪除。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved