ORA-01591錯誤故障處理
Oracle 對ORA-01591錯誤的描述是"lock held by in-doubt distributed transaction %s,由分散式事務持有鎖造成的。通過錯誤的cause可以看到’Trying to access resource that is locked by a dead two-phase commit transaction that is in prepared state’該錯誤是由訪問一個處於prepared狀態的二階段事務所持有鎖的資源造成的。
下面簡單介紹一下分散式事務。
分散式事務,簡單來說,是指一個事務在本地和遠端執行,本地需要等待確認遠端的事務結束後,進行下一步本地的操作。如通過dblink update遠端資料庫的一行記錄,如果在執行過程中網路異常,或者其他事件導致本地資料庫無法得知遠端資料庫的執行情況,此時就會發生in doublt的報錯。此時需要dba介入,且需要分多種情況進行處理。
分散式事務的,會經歷3個階段:
1.PREPARE PHASE :
1.1 決定哪個資料庫為commit point site。(注,引數檔案中commit_point_strength值高的那個資料庫為commit point site)
1.2 全域性協調者(Global Coordinator)要求所有的點(除commit point site外)做好commit或者rollback的準備。此時,對分散式事務的表加鎖。
1.3 所有分散式事務的節點將它的scn告知全域性協調者。
1.4 全域性協調者取各個點的最大的scn作為分散式事務的scn。
至此,所有的點都完成了準備工作,我們開始進入COMMIT PHASE階段,此時除commit point site點外所有點的事務均為in doubt狀態,直到COMMIT PHASE階段結束。
2.COMMIT PHASE
:
2.1 Global Coordinator將最大scn傳到commit point site,要求其commit。
2.2 commit point嘗試commit或者rollback。分散式事務鎖釋放。
2.3 commit point通知Global Coordinator已經commit。
2.4 Global Coordinator通知分散式事務的所有點進行commit。
3.FORGET PHASE
:
3.1 參與的點通知commit point site他們已經完成commit,commit point site就能忘記(forget)這個事務。
3.2 commit point site在遠端資料庫上清除分散式事務資訊。
3.3 commit point site通知Global Coordinator可以清除本地的分散式事務資訊。
3.4 Global Coordinator清除分散式事務資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014920/viewspace-2868740/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉載ORA-01591錯誤故障處理
- 轉載ORA-01591錯誤故障處理(ji)
- 【故障處理】分散式事務ORA-01591錯誤解決分散式
- 【故障處理】CRS-1153錯誤處理
- 【故障處理】ORA-19809錯誤處理
- 【故障處理】ORA-12162 錯誤的處理
- 錯誤處理
- PHP 錯誤處理PHP
- php錯誤處理PHP
- Go 錯誤處理Go
- Swift錯誤處理Swift
- Zabbix錯誤處理
- mysqldump錯誤處理MySql
- 主從故障處理--session 級別引數複製錯誤Session
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- 【故障處理】ORA-31600和ORA-04063錯誤
- 【故障處理】Oracle10.2.0.3 ORA-3136 錯誤解決Oracle
- 【故障處理】修改maxuproc引數解決TNS-00519錯誤
- PHP錯誤處理和異常處理PHP
- go的錯誤處理Go
- Python錯誤處理Python
- ORA-01591錯誤與分散式事務分散式
- 異常錯誤資訊處理
- PHP 核心特性 - 錯誤處理PHP
- 常用模組 PHP 錯誤處理PHP
- laravel9 錯誤處理Laravel
- 淺談前端錯誤處理前端
- Oracle異常錯誤處理Oracle
- ORACLE 異常錯誤處理Oracle
- 15-錯誤處理(Error)Error
- 學習Rust 錯誤處理Rust
- axios 的錯誤處理iOS
- Go語言之錯誤處理Go
- GOLANG錯誤處理最佳方案Golang
- Objective-C:錯誤處理Object
- javascript之處理Ajax錯誤JavaScript
- 搭建dataguard時,錯誤處理
- Oracle錯誤處理思路(一)Oracle