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

Oracle 交易管理完整指南:啟動、提交、回滾與一致性機制

     編輯:Oracle 資料庫基礎

一、交易啟動條件

交易始於首個可執行 SQL 語句(DML/DDL,含查詢產生 Instance Call 的語句)。

二、交易結束條件

  • COMMIT 或無 SAVEPOINT 的 ROLLBACK。
  • 執行 DDL(CREATE/DROP/RENAME/ALTER)→ 隱含提交當前交易,DDL 自成新交易並提交。
  • 使用者斷開連線 → 交易提交。
  • 使用者程序異常終止 → 交易回滾。

💡 建議:應用程式退出時顯式 COMMIT/ROLLBACK,避免隱含行為造成困擾。

三、提交機制

提交前 Oracle 執行三項動作:

  1. 產生 Undo 資訊(記錄修改前舊值)。
  2. 在 Redo Log Buffer 產生 Redo Entry(記錄資料塊與回滾塊變更),可能在提交前寫入磁碟。
  3. 修改寫入 Database Buffer Cache(髒塊),由 DBWn 延後寫入資料檔。

⚠️ 關鍵點:已提交資料不一定立即落盤,Oracle 選擇最佳時機由 DBWn 寫入,提交前/後皆可能發生寫入。

四、回滾機制

使用 Undo Tablespace 存舊值,Redo Log 記錄操作歷程。

  • 可回滾整個交易,或至 SAVEPOINT 部分回滾。
  • 六種回滾類型:語句級、Savepoint、使用者請求、程序異常、例項異常、恢復階段。

五、完整回滾流程

  1. 依 Undo 資訊復原所有 SQL 修改。
  2. 釋放交易持有的所有鎖。
  3. 交易結束。

六、一致性讀取

Oracle 採多版本一致性讀取(MVCC):查詢看到提交前的舊版本,不阻塞寫入;寫入不阻塞讀取。

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