Oracle 9i 引入閃回查詢 (依賴 UNDO),10g 大幅增強:引入 Flashback Log 實現資料庫級時間旅行,並統一管理所有恢復相關檔案。
| 參數 | 說明 | 建議值 |
|---|---|---|
| DB_RECOVERY_FILE_DEST | FRA 根目錄路徑 | /u01/app/oracle/fast_recovery_area |
| DB_RECOVERY_FILE_DEST_SIZE | FRA 最大空間配額 (硬性上限) | 視備份保留策略,建議 50GB+ |
| DB_FLASHBACK_RETENTION_TARGET | 閃回保留目標時間 (分鐘),預設 1440 (1天) | 視 RPO 需求,如 10080 (7天) |
關鍵關係:實際可閃回時間 = MIN(參數設定值, 空間允許的最大保留時間)。空間不足時自動刪除最舊 Flashback Log。
-- 1. 關閉資料庫
SHUTDOWN IMMEDIATE;
-- 2. 掛載模式啟動
STARTUP MOUNT;
-- 3. 啟用歸檔
ALTER DATABASE ARCHIVELOG;
-- 4. 開啟資料庫
ALTER DATABASE OPEN;
-- 5. 配置歸檔格式與路徑 (建議導向 FRA)
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT = 'ARC_%t_%s_%r.log' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' SCOPE=BOTH;
-- 6. 重啟生效
SHUTDOWN IMMEDIATE;
STARTUP;
-- 7. 強制切換日誌驗證
ALTER SYSTEM SWITCH LOGFILE;
-- 設定 FRA 參數 (需重啟或 SCOPE=BOTH)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/app/oracle/fast_recovery_area' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 50G SCOPE=BOTH;
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 10080 SCOPE=BOTH; -- 7 天
-- 啟用閃回資料庫 (需掛載模式)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
-- FRA 使用率總覽
SELECT * FROM V$RECOVERY_FILE_DEST;
-- 詳細檔案類型佔用
SELECT FILE_TYPE, PERCENT_SPACE_USED, PERCENT_SPACE_RECLAIMABLE, NUMBER_OF_FILES
FROM V$RECOVERY_AREA_USAGE;
-- 閃回日誌狀態
SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME, RETENTION_TARGET
FROM V$FLASHBACK_DATABASE_LOG;
-- 閃回到指定時間點
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO TIMESTAMP TO_DATE('2024-01-15 14:30:00', 'YYYY-MM-DD HH24:MI:SS');
ALTER DATABASE OPEN RESETLOGS;
-- 閃回到 SCN
FLASHBACK DATABASE TO SCN 123456789;
-- 閃回到還原點 (需預先建立)
CREATE RESTORE POINT BEFORE_UPGRADE GUARANTEE FLASHBACK DATABASE;
FLASHBACK DATABASE TO RESTORE POINT BEFORE_UPGRADE;
V$RECOVERY_FILE_DEST,設定閾值告警CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DEVICE TYPE DISKDB_FLASHBACK_RETENTION_TARGET 與 DB_RECOVERY_FILE_DEST_SIZE 需協同規劃