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

Oracle 閃回技術全景指南:閃回資料庫、閃回表、閃回查詢與版本查詢

     編輯:Oracle 資料庫相關知識

Oracle 閃回技術僅處理「邏輯資料變更」,從根本改變恢復模式:恢復耗時 = 製造錯誤耗時。相較傳統介質恢復,具備易用性、可用性、還原時間三大優勢。

核心閃回功能對照

功能用途依賴機制
閃回資料庫整庫回退至過去時間點/SCN閃回日誌(RVWR 進程寫入快速恢復區)
閃回刪除從回收站還原 DROP 表回收站
閃回表單表回退至過去時間點UNDO 資料
閃回查詢查詢過去時間點的資料快照UNDO 資料
閃回版本查詢查看某列在一段時間內的所有版本UNDO 資料
閃回事務查詢查看交易歷史與變更細節UNDO 資料

閃回資料庫深度解析

運作原理

  • 啟用後,Oracle 定期將資料區塊的「前像」寫入閃回日誌(由 RVWR 背景進程維護)。
  • 執行閃回時,讀取閃回日誌套用前像,再以 Redo Log 填補間隙,將資料庫推進至目標時間/SCN。
  • 速度與「需回退的變更量」成正比,而非資料庫總大小,大幅縮短大型資料庫恢復時間。

適用場景

  • 使用者誤 TRUNCATE 表
  • DBA 誤刪除使用者
  • 批次腳本邏輯錯誤導致多表資料混亂,無法逐表閃回

限制條件(無法使用閃回資料庫)

  • 控制檔已還原或重建
  • 表空間已被刪除
  • 資料檔案已縮小
  • 目標時間點後新增的資料檔案(需先離線)

實驗:啟用與執行閃回資料庫

  1. 設定保留目標:ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 4320;(單位:分鐘,此處 3 天)
  2. 確認歸檔模式,關閉資料庫至 MOUNT 狀態:SHUTDOWN IMMEDIATE; STARTUP MOUNT;
  3. 開啟閃回:ALTER DATABASE FLASHBACK ON;
  4. 開啟資料庫:ALTER DATABASE OPEN; 驗證 SELECT FLASHBACK_ON FROM V$DATABASE; 顯示 YES。

實驗:時間點閃回與驗證流程

-- 1. 記錄誤操作前時間 T1
-- 2. 執行誤操作(如 TRUNCATE)
-- 3. 關閉至 MOUNT:SHUTDOWN IMMEDIATE; STARTUP MOUNT;
-- 4. 閃回至 T1:FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('...');
-- 5. 唯讀開啟驗證:ALTER DATABASE OPEN READ ONLY;
-- 6. 若未達預期,重複 3-5 步驟調整時間點
-- 7. 確認無誤後:ALTER DATABASE OPEN RESETLOGS;  (之後無法再閃回至 RESETLOGS 前)

注意:DB_FLASHBACK_RETENTION_TARGET 為目標上限,若快速恢復區空間不足,舊閃回日誌可能被自動刪除,導致無法閃回至目標時間。

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