首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 回滾段管理核心概念與實務指南(上)

     編輯:Oracle 資料庫基礎

回滾段概述

回滾段是 Oracle 資料庫管理中的關鍵組件,專門用於儲存資料修改前的舊值(前影像),包含修改前的位置與數值。每個回滾段的頭部會記錄正在使用該段的交易資訊。值得注意的是,單一交易只能使用一個回滾段,但一個回滾段可同時服務多個交易。

回滾段的三大核心功能

1. 交易回滾

當使用者執行 ROLLBACK 指令時,Oracle 利用回滾段中保存的前影像,將已修改的資料恢復至原始狀態,確保交易的原子性。

2. 交易恢復

若資料庫例程在交易處理途中異常終止,回滾段資訊會保留在重做日誌檔中。下次資料庫啟動時,Oracle 會透過回滾機制復原未提交的資料,維護資料一致性。

3. 讀一致性

Oracle 提供語句級與交易級兩種讀一致性機制:

  • 語句級:SELECT 執行時依據當前 SCN(系統變更號),忽略該語句開始後的未提交變更。
  • 交易級:可透過 SET TRANSACTION READ ONLY 或 SET TRANSACTION SERIALIZABLE 實現,但後者會影響並發效能。

長時間查詢遭遇資料塊被修改時,Oracle 會利用回滾段前影像構建讀一致性視圖,確保查詢結果不受干擾。

回滾段分類

類型說明
系統回滾段資料庫建立時自動創建,專供 SYSTEM 表空間物件使用。
非系統回滾段含私有與公有兩種。私有段需在參數檔 ROLLBACK_SEGMENTS 列出以便啟動時自動上線;公有段常見於 OPS 環境。
DEFERRED 回滾段表空間離線時自動創建,上線時自動刪除,處理離線期間產生的回滾資訊。

回滾段分配與使用機制

交易啟動時,Oracle 會將擁有最少活動交易的回滾段分配給該交易。亦可透過 SET TRANSACTION USE ROLLBACK SEGMENT 指定特定段。交易以循環順序使用區塊,當前區滿後移至下一區,此過程稱為「翻轉」。多個交易可共用同一區塊,但每個區塊僅屬於單一交易。

擴張與收縮(OPTIMAL 參數)

當現有區塊用盡且下一區有活動交易時,回滾段會動態擴張新區塊,直到達到 MAXEXTENTS 上限。OPTIMAL 參數定義回滾段閒置時收縮的目標大小,合理設定可有效減少空間浪費。

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