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

Oracle 閃回技術全解析:四大功能、原理、配置與實戰選型指南

     編輯:Oracle 資料庫相關知識

Oracle 閃回技術是邏輯錯誤快速恢復的利器,包含閃回查詢、閃回刪除、閃回歸檔、閃回資料庫四大功能。本文深度解析各功能原理、配置步驟、限制條件與選型決策。

核心基礎:UNDO 段

  • DML 修改前映像寫入 UNDO 段
  • 交易回滾、讀一致性、閃回查詢均依賴 UNDO
  • UNDO_RETENTION 參數控制保留秒數(預設 900 秒)
  • UNDO 表空間不足時舊資料被覆寫,導致閃回失敗

功能一:閃回查詢

基本閃回查詢

SELECT * FROM dept
AS OF TIMESTAMP TO_TIMESTAMP('2016-09-10 11:00:00','YYYY-MM-DD HH24:MI:SS');
  • Session 級臨時回滾,不影響其他會話
  • 需 UNDO 資料未被覆寫

閃回表

-- 1. 啟用列移動(允許 ROWID 變更)
ALTER TABLE emp ENABLE ROW MOVEMENT;

-- 2. 閃回至時間點
FLASHBACK TABLE dept
TO TIMESTAMP TO_TIMESTAMP('2016-09-10 11:00:00','YYYY-MM-DD HH24:MI:SS');

閃回表失敗常見原因

  1. 違反約束(如父表記錄已刪)
  2. UNDO 資料過期
  3. 跨越 DDL 操作(表結構變更)

功能二:閃回刪除

原理

10g+ DROP TABLE 實為 RENAME 至回收站(BIN$...),不實際刪除資料檔。

操作指令

-- 還原被 DROP 的表
FLASHBACK TABLE emp TO BEFORE DROP;

-- 還原並重命名(避免名稱衝突)
FLASHBACK TABLE emp TO BEFORE DROP RENAME TO emp_new;

-- 查看回收站
SHOW RECYCLEBIN;
-- 或
SELECT * FROM user_recyclebin;

-- 徹底刪除(無法閃回)
DROP TABLE emp PURGE;

-- 清空回收站
PURGE RECYCLEBIN;

限制

  • 僅對 DROP 有效,TRUNCATE 不產生 UNDO,無法閃回
  • 回收站佔用表空間,空間壓力時自動清理
  • 外鍵約束不會被還原

功能三:閃回資料歸檔

特色

  • 突破 UNDO 保留限制,可查詢/回退至過去任意時間點(年級)
  • 獨立儲存歷史版本,不佔用 UNDO 表空間

配置步驟

-- 1. 建立歸檔表空間
CREATE TABLESPACE fba_ts DATAFILE 'fba.dbf' SIZE 20M;

-- 2. 建立閃回歸檔(保留 2 年)
CREATE FLASHBACK ARCHIVE fba_2yr TABLESPACE fba_ts RETENTION 2 YEAR;

-- 3. 授權用戶
GRANT FLASHBACK ARCHIVE ON fba_2yr TO scott;

-- 4. 為表啟用
CONN scott/tiger
ALTER TABLE emp FLASHBACK ARCHIVE fba_2yr;

使用

SELECT * FROM emp AS OF TIMESTAMP SYSDATE - 365;  -- 查一年前資料
FLASHBACK TABLE emp TO TIMESTAMP SYSDATE - 30;    -- 回退 30 天前

功能四:閃回資料庫

定位

相當於不完全恢復(PITR)的極速版,需 RESETLOGS 開啟,會造成停機時間。

前提

  • 資料庫為歸檔模式
  • 已配置快速恢復區(DB_RECOVERY_FILE_DEST)

配置

-- 1. 指定恢復區位置與大小
ALTER SYSTEM SET db_recovery_file_dest = '/flash_recovery_area';
ALTER SYSTEM SET db_recovery_file_dest_size = 4G;

-- 2. 設定閃回日誌保留目標(分鐘)
ALTER SYSTEM SET db_flashback_retention_target = 120;  -- 2 小時

-- 3. 啟用(需 MOUNT 狀態)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;

使用

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO TIMESTAMP SYSDATE - 60/1440;  -- 回退 60 分鐘
ALTER DATABASE OPEN RESETLOGS;

四大功能選型決策表

功能依賴時間範圍停機適用場景
閃回查詢/表UNDOUNDO_RETENTION(通常小時級)無誤更新/刪除、臨時歷史查詢
閃回刪除回收站(表空間)空間允許期間無誤 DROP 表
閃回歸檔獨立歸檔儲存年級(配置保留期)無長期歷史審計、合規查詢
閃回資料庫閃回日誌(恢復區)DB_FLASHBACK_RETENTION_TARGET是整庫邏輯災難、測試環境快速重置

關鍵成功因素

  1. 發現即行動:UNDO 覆寫不可逆,秒級響應最關鍵
  2. 容量規劃:UNDO 表空間、快速恢復區、歸檔表空間預留充足空間
  3. 監控告警:V$UNDOSTAT、V$FLASHBACK_DATABASE_STAT 監控保留滿足度
  4. 演練機制:定期演練各類閃回恢復,驗證 RPO/RTO

閃回技術體系讓 Oracle 邏輯錯誤恢復從「小時級」壓縮至「秒級」,是高可用架構不可或缺的安全網。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved