71-Oracle Undo與Flashback管理(Guarantee設置)深度解析

小伙伴們有沒有在操作undo表空間、Flashback管理,時間保留設置,總有些配置需要提前預置好,否則閃回查詢和表的時候出現報錯。

需短期恢復(秒級~小時)直接上UNDO_RETENTION同時啟用RETENTION GUARANTEE,Undo為Flashback Query/Table提供基礎,時間短。

需全天候整庫回退直接啟用Flashback Database并設定DB_FLASHBACK_RETENTION_TARGET。通過獨立存儲實現強時間保證,需要大空間。

一、核心機制對比與聯系?

?1. Undo機制?
  • ?作用?:存儲數據修改前鏡像(Before Image),支撐事務回滾、讀一致性?(MVCC)及閃回查詢?
  • ?存儲位置?:專用Undo表空間,按回滾段組織。
  • ?生命周期?:
    • 事務提交后數據保留時長由UNDO_RETENTION控制(默認900秒)
    • 空間不足時未過期數據可能被覆蓋(除非啟用RETENTION GUARANTEE)
  • ?數據覆蓋邏輯?:
-- 查看Undo保留策略
SELECT tablespace_name, retention FROM dba_tablespaces WHERE contents = 'UNDO';
2. Flashback機制分類?

?類型?

?依賴組件?

?恢復粒度?

?時間窗口限制?

?Flashback Query?

Undo表空間

行級

UNDO_RETENTION(默認15分鐘)

?Flashback Table?

Undo表空間

表級

同上

?Flashback Drop?

回收站(Recycle Bin)

表及關聯對象

表空間空間壓力決定

?Flashback Database?

Flashback Logs

數據庫級

DB_FLASHBACK_RETENTION_TARGET

(默認24小時)

?Flashback Data Archive?

獨立歸檔區

表級(長期)

用戶自定義(可達數年)

3. 核心聯系?
  • ?Undo是Flashback的基礎?:Flashback Query/Table直接讀取Undo中的前鏡像數據恢復歷史狀態?
  • ?回收站是Flashback Drop的載體?:被刪除對象重命名后暫存于回收站,空間不足時自動清理?
  • ?Flashback Database依賴獨立日志?:使用Flashback Logs記錄塊變化,與Undo分離?

?二、GUARANTEE時間核心區別概覽

?特性

?Undo保留時間?

?Flashback保留時間?

?定義?

已提交事務的Undo數據保留最短時間

閃回功能可恢復的歷史時間范圍

?目的?

保障讀一致性和事務回滾

支持數據庫/表/查詢的閃回操作

?參數?

UNDO_RETENTION(秒)

DB_FLASHBACK_RETENTION_TARGET(分鐘)

?存儲?

Undo表空間

閃回日志(Flashback Logs)

?依賴?

所有DML操作自動生成

需要顯式啟用閃回數據庫功能

?單位?

分鐘

1. ?Undo保留時間機制
  • ?數據生命周期?:
    • Active → Unexpired(保留期內)→ Expired(可覆蓋)
  • ?關鍵特性?:
    • ?最小保證?:非強制保留(除非RETENTION GUARANTEE)
    • ?自動調整?:AUM模式下動態計算TUNED_UNDORETENTION
2. ?Flashback保留時間機制?
  • ?核心組件?:
    • 閃回緩沖區(SGA內存)
    • RVWR進程(Recovery Writer)
    • 閃回恢復區(Flash Recovery Area)
3. ?時間窗口關系
  • ?關鍵約束?:閃回查詢最大時間范圍 ≤ Undo實際保留時間閃回數據庫最大時間范圍 ≤ Flashback保留時間

?

三、UNDO記錄和flashback日志管理區別與關聯

1. ?功能邊界

Undo機制是事務級數據安全的基礎,閃回技術依賴Undo并擴展為運維級恢復工具,兩者協同保障Oracle的高可用性

?維度?

?Undo記錄管理?

?閃回日志管理?

?核心目的?

支持事務回滾、讀一致性、MVCC

實現整庫/表級快速恢復(誤操作回滾)

?存儲機制?

存于Undo表空間,邏輯記錄數據前鏡像

存于閃回恢復區,物理記錄塊變化

?生命周期控制?

UNDO_RETENTION

+ 狀態機(ACTIVE/UNEXPIRED/EXPIRED)

DB_FLASHBACK_RETENTION_TARGET

時間閾值

?空間重用?

EXPIRED狀態自動覆蓋

超時后自動刪除

2. ?存儲對比?

?特性?

?Undo存儲?

?Flashback存儲?

數據結構

行級前鏡像

數據塊級變化

寫入頻率

每次DML操作

每3秒或塊變化時

存儲位置

Undo表空間

閃回恢復區

空間回收

事務級自動回收

基于保留策略自動清理

四、配置與監控實戰

1. 配置命令對比,Undo保留時間驗證
-- Undo保留配置(動態)-- 1小時
ALTER SYSTEM SET UNDO_RETENTION = 3600;
System altered.
-- Flashback保留配置(需重啟)1440=24小時
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SCOPE=SPFILE;
ALTER DATABASE FLASHBACK ON;-- 查看Undo配置及使用情況
SELECT tablespace_name, status, retention FROM dba_tablespaces WHERE contents = 'UNDO';
SELECT begin_time, end_time, tuned_undoretention FROM v$undostat;
--舉例
SYS@CDB$ROOT> SELECT tablespace_name, status, retention FROM dba_tablespaces WHERE contents = 'UNDO';TABLESPACE_NAME    STATUS    RETENTION
__________________ _________ ______________
UNDOTBS1           ONLINE    NOGUARANTEESYS@CDB$ROOT> SELECT begin_time, end_time, tuned_undoretention FROM v$undostat;BEGIN_TIME    END_TIME        TUNED_UNDORETENTION
_____________ ____________ ______________________
23-JUN-25     23-JUN-25                      3600
23-JUN-25     23-JUN-25                      1207
22-JUN-25     22-JUN-25                       900
22-JUN-25     22-JUN-25                       900
139 rows selected.
?2. 監控腳本
-- Undo實際保留時間監測
SELECT TO_CHAR(BEGIN_TIME, 'YYYY-MM-DD HH24:MI') AS SNAPSHOT_TIME,TUNED_UNDORETENTION AS ACTUAL_RETENTION_SEC
FROM V$UNDOSTAT
ORDER BY BEGIN_TIME DESC
FETCH FIRST 24 ROWS ONLY;
--23ai
SNAPSHOT_TIME          ACTUAL_RETENTION_SEC
___________________ _______________________2025-06-23 06:27                        900
24 rows selected.
-- Flashback時間窗口檢測
SELECT OLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIME,(SYSDATE - OLDEST_FLASHBACK_TIME)*24 * 60 AS ACTUAL_RETENTION_MIN
FROM V$FLASHBACK_DATABASE_LOG;
--23aiOLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TIME                            ACTUAL_RETENTION_MIN
_______________________ ________________________ ____________________________________________5420833 21-JUN-25                   2158.716666666666666666666666666666666672
?3. 關聯性驗證實驗
-- 步驟1:設置不同保留時間
ALTER SYSTEM SET UNDO_RETENTION = 600;          -- 10分鐘
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=30; -- 30分鐘
--System altered.
-- 步驟2:創建測試表
CREATE TABLE flash_test AS SELECT * FROM all_objects;-- 步驟3:記錄時間點
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT SYSDATE AS START_TIME FROM DUAL;
--
START_TIME
______________________
2025-06-23 14:15:17
-- 步驟4:執行數據變更(延遲15分鐘)
BEGINDBMS_LOCK.SLEEP(900);  -- 等待15分鐘DELETE FROM flash_test;COMMIT;
END;
/-- 步驟5:測試閃回能力
-- 嘗試10分鐘前閃回查詢(應成功)
SELECT COUNT(*) FROM flash_test AS OF TIMESTAMP SYSDATE - INTERVAL '10' MINUTE;
--COUNT(*)
___________0
-- 嘗試20分鐘前閃回查詢(可能失敗)
SELECT COUNT(*) FROM flash_test AS OF TIMESTAMP SYSDATE - INTERVAL '20' MINUTE;
-- 預期錯誤: ORA-01555
-- 嘗試閃回數據庫到15分鐘前(應成功)
SHUTDOWN IMMEDIATE
STARTUP MOUNT
FLASHBACK DATABASE TO TIMESTAMP SYSDATE - INTERVAL '15' MINUTE;
ALTER DATABASE OPEN RESETLOGS;
4. 技術驗證腳本?
?4.1. Flashback Query恢復誤刪數據
-- 場景:恢復10分鐘前誤刪除的數據
CREATE TABLE fbtest_emp (id NUMBER, name VARCHAR2(50));
INSERT INTO fbtest_emp VALUES (1, 'flashback_USER');
COMMIT;-- 模擬誤刪除(10分鐘后)
DELETE FROM fbtest_emp;
COMMIT;
--或者模擬刪除后等待900s也就是15分鐘
BEGINDBMS_LOCK.SLEEP(900);DELETE FROM fbtest_emp;COMMIT;
END;
/
-- 閃回查詢恢復
INSERT INTO fbtest_emp 
SELECT * FROM fbtest_emp 
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);
?4.2. Flashback Table恢復誤更新表?
-- 啟用行移動
ALTER TABLE fbtest_emp ENABLE ROW MOVEMENT;-- 閃回至5分鐘前狀態
FLASHBACK TABLE fbtest_emp TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE);
?4.3 Flashback Drop恢復誤刪表?
-- 刪除表并恢復
DROP TABLE fbtest_emp;
SHOW RECYCLEBIN; -- 查看回收站對象
FLASHBACK TABLE fbtest_emp TO BEFORE DROP;
?4.4. Flashback Database全庫回滾?
-- 需提前啟用Flashback Database
ALTER DATABASE FLASHBACK ON;-- 回退至1小時前
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' HOUR);
ALTER DATABASE OPEN RESETLOGS;

?場景?

?推薦技術?

?原因?

單行數據誤改/誤刪

Flashback Query

無需停機,基于Undo快速恢復

整表誤操作(Update/Delete)

Flashback Table

依賴Undo,恢復表至指定時間點

表誤刪除

Flashback Drop

通過回收站直接還原,無需備份

全庫邏輯錯誤(如批量誤刪)

Flashback Database

分鐘級回退,比RMAN PITR更快

長期審計追溯(>7天)

Flashback Data Archive

獨立存儲突破Undo時間限制

?關鍵限制?:
  • - Flashback Query/Table受限于UNDO_RETENTION,超時后失效 。
  • - Flashback Database不支持介質故障恢復(需RMAN)。
  • - 回收站對象在表空間空間不足時自動清除?
?5. 故障處理矩陣

?現象?

?相關保留時間?

?解決方案?

ORA-01555

Undo保留不足

增加UNDO_RETENTION或表空間

ORA-00600 [3020]

Flashback保留不足

增大DB_FLASHBACK_RETENTION_TARGET

閃回查詢范圍不足

Undo保留

延長Undo保留期+保證模式

閃回數據庫失敗

FB保留

增加保留時間或縮短恢復點

六、使用體驗?

  • ?Undo是基石?:支撐事務回滾、讀一致性和短期閃回,但受限于空間和保留策略。
  • ?Flashback是擴展?:
    • 短期恢復(Query/Table)依賴Undo;
    • 對象級恢復(Drop)依賴回收站;
    • 長期追溯(FDA)需獨立歸檔區?
Undo保留是Flashback功能的基礎支撐,而Flashback保留是高級恢復能力擴展。在啟用閃回數據庫的場景下,
建議始終滿足UNDO_RETENTION >= DB_FLASHBACK_RETENTION_TARGET*60,以保障全時點恢復能力。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84853.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84853.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84853.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單片機——浮點數轉換4位數碼管顯示

浮點數轉換4位數碼管顯示 static char buffer[5]; int DecimalPlace 0; #define HideChar h void DisplayFloatOn4LED(float value) {long integer roundf(value );if (integer > 9999) //4位{integer 9999;snprintf(buffer, sizeof(buffer), "%4ld", integer…

金融行業B端系統布局實戰:風險管控與數據可視化的定制方案

摘要 在金融行業,一次小小的數據泄露可能引發千萬級資金損失,一次錯誤的風險評估或許讓企業陷入危機。傳統 B 端系統布局在應對復雜多變的金融業務時,常出現風險預警滯后、數據雜亂無章的情況,讓從業者如履薄冰。如何才能在瞬息萬…

融合LSTM與自注意力機制的多步光伏功率預測新模型解析

這篇論文《Improved multistep ahead photovoltaic power prediction model based on LSTM and self-attention with weather forecast data》(2024, Applied Energy)聚焦在 多步光伏功率預測 中,如何結合 LSTM 與自注意力機制(se…

Blazor-內置輸入組件

封裝的輸入組件 InputCheckbox:表示復選框。InputDate:表示類型為 date 的日期選擇框。InputFile:表示文件上傳。InputNumber:表示數字框。InputRadio:表示單選按鈕。InputRadioGroup:表示單選按鈕組。Inpu…

Qt源碼分析: QChildEvent

本文記錄QChildEvent事件相關代碼分析。 注1:限于筆者研究水平,難免有表述不當,歡迎批評指正。 注2:博文會不定期更新,敬請關注。 一、QChildEvent的發送 分析QObject::setParent代碼,當修改父對象時&…

《Whisper :說明書 》

[論文] [模型卡] [Colab 示例] Whisper 是一種通用的語音識別模型。它基于各種音頻的大型數據集進行訓練,也是一種多任務模型,可以執行多語言語音識別、語音翻譯和語言識別。 方法 Transformer 序列到序列模型針對各種語音處理任務進行訓練,…

回溯----8.N皇后

題目鏈接 /** 將n個棋子放在n*n的棋盤上,不同列,不同行,不同斜線 大致執行流程: 首先選取第一行第一格放置第一個棋子,再從第二行第一個位置開始選取合法的位置(不同行不同列不同斜線)放置棋子,重復上述流程迭代行數, 直到放置n個棋子。 若放置途中出現無合法位置的情況,回溯將…

微機電子拉伸試驗機

對于不同材料的試樣,由于其化學成分及組織的不同,在拉伸過程中會體現 出不同的物理現象及力學性質。西安力創(LETRY)公司專業制造WDL/WDW系列微機控制電子萬能試驗機,主要適用于金屬板材、棒材、管材、金屬絲、金屬箔、…

【數據結構與算法】數據結構核心概念系統梳理

第一章 緒論:基礎概念體系 ??算法:問題求解步驟的描述。 ??非遞歸的算法效率更高。 1.1 邏輯結構 vs 存儲結構 維度邏輯結構存儲結構(物理結構)定義數據元素之間的邏輯關系數據結構在計算機中的實現方式分類線性/樹形/圖/集合順序/鏈式/索引/散列獨立性獨立于存儲結構…

73頁PPT | 大數據平臺規劃與數據價值挖掘應用咨詢項目解決方案

推薦摘要:在數字化浪潮中,企業數據量呈幾何級增長,卻常因缺乏科學規劃的大數據平臺,陷入數據孤島、處理效率低下的困境,難以充分挖掘數據價值。特推出大數據平臺規劃與數據價值挖掘應用咨詢項目解決方案,正…

gRPC 與 Protobuf 的深度集成 —— 從服務定義到多語言交互(Go + Java 示例)

在前幾篇文章中,我們已經掌握了 Protobuf 的基礎語法、高級特性和序列化反序列化操作。本篇文章將深入講解 gRPC 與 Protobuf 的集成,重點介紹如何通過 .proto 文件定義服務接口,并在 Go 和 Java 中實現 gRPC 服務與客戶端的完整交互流程。我…

可信計算的基石:TPM技術深度解析與應用實踐

可信計算的基石:TPM技術深度解析與應用實踐 引言:數字世界的"信任之錨" 在數據泄露事件頻發的時代,傳統軟件級安全防護已力不從心。TPM(可信平臺模塊)作為硬件級安全解決方案,正成為現代計算設…

「ECG信號處理——(18)基于時空特征的心率變異性分析」2025年6月23日

一、HRV概述 心率變異性(Heart rate variability ,HRV)分析是通過測量分析連續正常R-R間期的時間變化來反映心率的變化程度的,根據計算RR 序列的統計指標,或者是畫出RR間期的直方圖和散點圖來反映HRV的大小情況。下面我們從男性與…

【學習筆記】深入理解Java虛擬機學習筆記——第10章 前端編譯與優化

第10章 前端編譯與優化 10.1 概述 1>前端編譯器:Javac命令。 【.java文件->.class文件】 2>即時編譯器:Hotspot.C1.C2 【.class文件->機器碼】 3>提前編譯器:JDK的Jaotc等【.java->機器碼】 10.2 Javac 編譯器 10.2.1 …

Python 區塊鏈與Web3開發指南

https://www.python.org/static/community_logos/python-logo-master-v3-TM.png 區塊鏈基礎概念 區塊鏈核心特性 python 復制 下載 class Block:def __init__(self, index, timestamp, data, previous_hash):self.index indexself.timestamp timestampself.data datas…

工業智能體調參閉環:從物料感知到智慧工藝的落地路徑

用戶定義目標:智能工藝的起點不是機器,而是人 在智能制造系統中,工藝調優的第一步并非直接依賴AI或自動化設備,而是始于用戶的明確輸入。用戶需要在系統中定義產品的工藝要求,包括目標尺寸與規格(如長寬高…

【Linux學習筆記】進程間通信之共享內存

【Linux學習筆記】進程間通信之共享內存 🔥個人主頁:大白的編程日記 🔥專欄:Linux學習筆記 文章目錄 【Linux學習筆記】進程間通信之共享內存前言一. system V共享內存1.1 共享內存數據結構1.2 共享內存函數1.3 共享內存實現通信…

郭碧婷闖入女團賽道 與劉忻張予曦蔡詩蕓組成ROLLING SISTERS

近日,郭碧婷與劉忻、張予曦、蔡詩蕓組成的女團ROLLING SISTERS正式官宣,并發布《Rolling Life》《Alpha》兩首單曲! 此次幾位姐姐的組合讓大家眼前一亮,尤其是郭碧婷造型顛覆以往。銀灰色挑染短發搭配棱角分明的黑色煙熏妝&#x…

2025再升級:醫療數智立體化體系V2.0架構簡介

在醫療數智立體化體系第一版基礎上,融入量子物理的第一性原理計算、人工智能(AI)、高性能云計算(HPC)和標準化機器人自動化整合成“醫療數智立體化體系2.0”,代表了醫療研發未來的重要發展方向。這個體系的核心在于深度融合物理世界規律、智能計算與自動化執行,為醫療AI…

Day40 訓練和測試的規范寫法

目錄 一、彩色和灰度圖片測試和訓練的規范寫法:封裝在函數中 單通道圖片的規范寫法 彩色圖片的規范寫法 二、展平操作:除第一個維度batchsize外全部展平 圖像任務中的張量形狀 NLP任務中的張量形狀 1. Flatten操作 2. view/reshape操作 總結 三…