Oracle 10g 引入了一項嶄新功能——自動基於磁盤的備份與恢復,而 閃回恢復區 正是實現該功能的核心基礎設施。簡單來說,閃回恢復區是一塊專門用於集中存儲所有恢復相關文件的磁盤存儲空間,包括:
它支援多種存儲形式:普通目錄、文件系統、ASM 磁盤組。在 RAC 環境下,該位置必須置於集群文件系統、ASM 磁盤組或 NFS 共享目錄,且所有實例的路徑與磁盤配額必須保持一致。
閃回恢復區最大的優勢在於集中化管理,大幅降低了 DBA 的維護開銷。結合 RMAN 使用可實現快速恢復。隨著磁盤存儲容量的飛躍增長,基於磁盤的自動備份恢復技術才成為可能。將閃回恢復區與 OMF(Oracle Managed Files)及 ASM 結合部署,是目前公認的最佳實踐架構之一,雖然自動化備份恢復技術仍在演進中。
若使用 DBCA 建庫,安裝階段即可指定位置與大小。若後續啟用,只需動態調整兩個初始化參數(無需重啟實例):
SQL> ALTER SYSTEM SET db_recovery_file_dest_size = 2G SCOPE = BOTH;
SQL> ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/flash_recovery_area' SCOPE = BOTH;
驗證配置:
SQL> SHOW PARAMETER db_recovery_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2G
若需禁用,將 db_recovery_file_dest 設為空字串即可(注意:必須先清空 db_recovery_file_dest 才能清空 db_recovery_file_dest_size)。
關鍵提示:
db_recovery_file_dest_size 不包含文件第 0 塊與作業系統區塊頭的空間。啟用後,Oracle 會自動建立層級目錄,例如:
/u01/app/oracle/flash_recovery_area
|-- DEMO
|-- archivelog
| |-- 2024_12_07
| | |-- o1_mf_1_10_0vbwz2fm_.arc
| | `-- ...
| `-- 2024_12_08
| `-- ...
`-- backupset
|-- 2024_12_07
| `-- ...
`-- 2024_12_08
`-- ...
所有文件增刪變更均記錄於 alert.log。Oracle 10g 新增視圖 DBA_OUTSTANDING_ALERTS 可主動推送告警信息;V$RECOVERY_FILE_DEST 則提供空間使用統計:
SQL> SELECT name, space_limit, space_used, space_reclaimable, number_of_files
2 FROM v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
--------------------------------------- ----------- ---------- ----------------- ---------------
/u01/app/oracle/flash_recovery_area 2147483648 1106849280 602410496 30
動態視圖 V$CONTROLFILE、V$LOGFILE、V$ARCHIVED_LOG、V$DATAFILE_COPY 新增列 IS_RECOVERY_DEST_FILE,標識文件是否位於恢復區內。
空間使用達 85% 觸發警告,97% 觸發嚴重告警。空間耗盡時拋出 ORA-19809/ORA-19804 錯誤,DBA_OUTSTANDING_ALERTS 會給出具體建議:
db_recovery_file_dest_size測試環境務必監控空間使用;生產環境強烈建議將閃回恢復區置於獨立磁盤,避免與數據文件、聯機日志爭奪 I/O,確保備份恢復性能與可用性。