環境
- Oracle 11.2.0.1.0 64-bit / Windows Server 2008 R2
- 需求:開啟閃回功能應對邏輯誤操作快速恢復
錯誤現象
ALTER DATABASE FLASHBACK ON;
-- 報錯
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery area not enabled.
根因分析
SHOW PARAMETER db_recovery → db_recovery_file_dest **為空**
- 嘗試設定 →
ORA-16019: cannot use db_recovery_file_dest with LOG_ARCHIVE_DEST
- 檢查
SHOW PARAMETER log_archive_dest → **已設定歸檔路徑**,與快速恢復區互斥
解決步驟
1. 清空傳統歸檔參數
ALTER SYSTEM SET LOG_ARCHIVE_DEST = '' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=D:\archivelog' SCOPE=BOTH;
2. 設定快速恢復區 (FRA)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = 'D:\app\Administrator\fast_recovery_area\orcl' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 10G SCOPE=BOTH; -- 空間上限
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 30 SCOPE=BOTH; -- 保留 30 分鐘 (預設 1440 分鐘)
3. 開啟閃回
ALTER DATABASE FLASHBACK ON;
-- Database altered. 成功!
關鍵知識點
- 閃回**要求歸檔模式** (ARCHIVELOG)
- 閃回後**必須 RESETLOGS 開啟**
- 閃回日誌儲存**資料塊完整鏡像**,恢復速度遠快於 RMAN/用戶管理備份
DB_FLASHBACK_RETENTION_TARGET 單位為**分鐘**,按業務 RPO 設定
驗證
SELECT FLASHBACK_ON FROM V$DATABASE;
-- YES
SELECT * FROM V$FLASHBACK_DATABASE_LOG;