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

Oracle 回滾段完整指南:概念、分類、運作機制與規劃實務

     編輯:Oracle 資料庫相關知識

回滾段是 Oracle 資料庫管理的核心課題之一。本文透過實例深入解析回滾段的概念、作用、分類、空間管理機制與常見問題解決方案。

一、回滾段核心概念與三大作用

  • 定義:儲存資料修改前的舊值(前影像),包含位置與數值。段頭記錄正在使用該段的交易資訊。
  • 交易回滾:用戶執行 ROLLBACK 時,利用前影像將資料還原。
  • 交易恢復:執行個體失敗後重啟,透過 Redo Log 中的回滾資訊回復未提交交易。
  • 讀一致性:依據 SCN(系統變更號)確保查詢看不到查詢開始後的未提交變更。長時間查詢若遇區塊被修改,Oracle 會用回滾段構建一致性視圖。

交易級讀一致性實現

SET TRANSACTION READ ONLY;
-- 或
SET TRANSACTION SERIALIZABLE; -- 影響並發效能

二、回滾段四大類型

類型說明
系統回滾段建庫時自動建立,專供 SYSTEM 表空間物件使用。
非系統回滾段至少一個,供非 SYSTEM 表空間使用。分私有(需在參數 ROLLBACK_SEGMENTS 列出)與公有(OPS 環境自動上線)。
DEFERRED 回滾段表空間離線時自動建立,上線時自動刪除,暫存離線期間產生的回滾資訊。

三、空間分配與循環機制

  • 分配原則:交易開始時指派擁有最少活動交易的回滾段;可用 SET TRANSACTION USE ROLLBACK SEGMENT 指定。
  • 區塊使用:循環、順序使用 Extent。多交易可共用同一 Extent,但每個區塊僅屬單一交易。
  • 擴展:當下一 Extent 被活動交易佔用且未達 MAXEXTENTS,系統自動分配新 Extent。
  • 收縮與 OPTIMAL:設定 OPTIMAL 參數可讓閒置段自動收縮至指定大小,減少空間浪費。

四、常見問題與規劃建議

  1. 快照過舊 (ORA-01555):長查詢需的回滾資訊已被覆寫。解決:增大回滾段、調高 OPTIMAL、避免長交易與長查詢並行。
  2. 回滾段爭用:高併發下等待區塊。解決:增加私有回滾段數量、調整 MAXEXTENTS、監控 V$ROLLSTAT。
  3. 規劃原則:依交易量與併發度規劃段數與大小;OLTP 建議多小段,批次作業建議少大段;善用自動取消管理 (AUM) 或 UNDO 表空間簡化管理。

掌握回滾段運作細節,能有效預防效能瓶頸與資料不一致風險,是資料庫調校的關鍵基石。

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