程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle分布事務中最先提交分布式的3個階段

Oracle分布事務中最先提交分布式的3個階段

編輯:Oracle數據庫基礎

在了解Oracle分布事務之前,我們首先需要明確幾個概念,這對於我們更好的掌握Oracle分布事務是十分必要的。下面,我們先來看幾個概念,然後具體學習Oracle分布事務的3個階段。

1)Local Coordinator:在Oracle分布事務中,必須參考其它節點上的數據才能完成自己這部分操作的站點。
2)Global Coordinator:Oracle分布事務的發起者,負責協調這個分布事務。
3)Commit Point Site:在Oracle分布事務中,首先執行COMMIT或ROLLBACK操作的站點。一般情況下,應該把存儲關鍵數據的站點作為Commit Point Site。因為Commit Point Site和其它站點不一樣,從來不會進入prepared狀態,所以不會存在IN-DOUBT事務。

可以設置初始化參數COMMIT_POINT_STRENGTH,在Oracle分布式事務中,會根據這個值的大小來確定Commit Point Site,Oracle分布事務的狀態信息也存在該數據庫中。一般將關鍵的數據庫作為commit point site ,commit_point_strength值較高的數據庫為commit point site,在Oracle分布事務中最先提交分布式的3個階段。

Oracle分布事務的兩階段提交分三個過程:

1.Oracle分布事務的准備階段(PREPARE PHASE)
·本地數據庫Global Coordinator向其它數據庫發出COMMIT通知
·比較所有數據庫的SCN號,將最高的SCN號作為Oracle分布事務的全局SCN號
·所有數據庫寫在線日志
·對Oracle分布事務修改的表加分布鎖,防止被讀寫
·各數據庫向Global Coordinator發出已經准備好的通知
所有參與Oracle分布事務的數據庫必須經過上述准備,才能進入下一階段。

2.Oracle分布事務的提交階段(COMMIT PHASE)
·本地數據庫Global Coordinator通知commit point site首先提交。commit point site提交後,釋放其占有的資源,通知Global Coordinator完成提交
·本地數據庫Global Coordinator通知其它數據庫提交
·提交節點在日志中追加一條信息,表示Oracle分布事務已經完成提交,並通知Global Coordinator。此時所有數據庫的數據保持了一致性。

3.Oracle分布事務的注銷階段(FORGET PHASE)
·本地數據庫Global Coordinator通知commit point site所有數據庫已經完成提交
·commit point site清除Oracle分布事務的記錄和狀態信息,並通知Global Coordinator
·Global Coordinator清除本地Oracle分布事務的記錄和狀態信息
此時Oracle分布事務的兩階段提交全部完成。

如果Oracle分布事務兩階段提交完成之前,數據庫或網絡出現異常,應用就會報錯,Oracle分布事務處於IN_DOUBT狀態。一旦數據庫或網絡恢復正常,系統(RECO PROCESS)會自動處理IN_DOUBT狀態的Oracle分布事務。有些情況需要管理員手工處理IN_DOUBT狀態的Oracle分布事務:·IN_DOUBT狀態的Oracle分布事務,將關鍵表鎖住,造成應用不能正常工作

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved