免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Oracle 分布式事務(wù) 2pc 故障處理

目錄

?? 前言

我們?cè)谑褂?oracle 數(shù)據(jù)庫(kù)時(shí),有時(shí)候會(huì)碰到需要使用分布式事務(wù),并且會(huì)碰到一些報(bào)錯(cuò)!

?? 分布式事務(wù)

當(dāng)需要在多個(gè)Oracle數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)一致性操作時(shí),就會(huì)用到分布式事務(wù)。

例如:

insert into T_log@remote_db;  --遠(yuǎn)程數(shù)據(jù)庫(kù)插入insert into T_local;          --本地?cái)?shù)據(jù)庫(kù)插入commit;

分布在本地和遠(yuǎn)程兩個(gè)db的事務(wù)同時(shí)操作,這就構(gòu)成了一個(gè)分布式事務(wù)。

分布式事務(wù)采用 Two-Phase Commit 提交機(jī)制,保證分布在各個(gè)節(jié)點(diǎn)的子事務(wù)能夠全部提交或全部回滾的原子性。

在這種機(jī)制下,事務(wù)處理過(guò)程分為三個(gè)階段:

  • PREPARE:發(fā)起分布式事務(wù)的節(jié)點(diǎn)通知各個(gè)關(guān)聯(lián)節(jié)點(diǎn)準(zhǔn)備提交或回滾。

  • COMMIT:寫入commited SCN,釋放鎖資源

  • FORGET:懸疑事務(wù)表和關(guān)聯(lián)的數(shù)據(jù)庫(kù)視圖信息清理

各關(guān)聯(lián)節(jié)點(diǎn)此時(shí)會(huì)做三個(gè)事情:刷新redo信息到redo log中;將持有的鎖轉(zhuǎn)換為懸疑事務(wù)鎖;取各節(jié)點(diǎn)中最大的SCN號(hào)進(jìn)行同步!

?? 常見錯(cuò)誤

以下是三種常見的分布式事務(wù)問(wèn)題場(chǎng)景:

  • dba_2pc視圖中有數(shù)據(jù),但分布式事務(wù)已經(jīng)不存在

  • 分布式事務(wù)存在,但dba_2pc視圖中沒有數(shù)據(jù)

  • 事務(wù)和視圖數(shù)據(jù)都有,但是執(zhí)行commit force或rollback force時(shí)hang住

通過(guò)報(bào)錯(cuò)會(huì)有提示,例如:

ORA-01591: lock held by in-doubt distributed transaction 10.20.360

這個(gè)10.20.360就是我們需要檢查分布式事務(wù)ID!

由于分布式事務(wù)涉及到多個(gè)數(shù)據(jù)庫(kù)之間進(jìn)行操作,偶爾會(huì)遇到一些異常情況(例如系統(tǒng)或網(wǎng)絡(luò)中斷)導(dǎo)致上述三個(gè)階段出現(xiàn)異常,這就在一個(gè)或多個(gè)節(jié)點(diǎn)上,產(chǎn)生不完整的“懸疑分布式事務(wù)”。

大多數(shù)情況下,出現(xiàn)這種問(wèn)題,Oracle 會(huì)由 Reco 進(jìn)程進(jìn)行自動(dòng)修復(fù),Oracle 數(shù)據(jù)庫(kù)會(huì)在 dba_2pc_pendingdba_2pc_neighbors 等多個(gè)視圖中記錄分布式事務(wù)相關(guān)的信息,事實(shí)上 reco 進(jìn)程也是基于這些信息去做自動(dòng)修復(fù)的。

Reco 進(jìn)程會(huì)嘗試連接到其他節(jié)點(diǎn)獲取分布式事務(wù)信息,然后嘗試修復(fù)失敗的事務(wù),并將對(duì)應(yīng)的事務(wù)中的記錄刪除。

但有些情況下(例如節(jié)點(diǎn)無(wú)法正常訪問(wèn)或事務(wù)表中記錄的數(shù)據(jù)不完整),Reco 進(jìn)程不能正常完成這個(gè)工作,就會(huì)拋出異常。

對(duì)于分布式事務(wù),對(duì)應(yīng)的異常代碼區(qū)間是ORA-02040 - ORA-02099,可通過(guò)alert日志查看到錯(cuò)誤信息。

例如:

ORA-02054: transaction in-doubt
The transaction is neither committed or rolled back locally, and we have lost communication with the global coordinator.

此時(shí)往往需要手工處理進(jìn)行干預(yù)。

常用的 2pc_clean 命令如下:

select 'rollback force '||''''||local_tran_id||''''||';' "RollBack"   from dba_2pc_pending       where state='prepared';select 'exec dbms_transaction.purge_lost_db_entry('||''''||local_tran_id||''''||');' "Purge"   from dba_2pc_pending;select 'rollback force  ''' || LOCAL_TRAN_ID || ''';' || chr(10) ||'execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY(''' || LOCAL_TRAN_ID || ''');' || chr(10) || 'commit;' from DBA_2PC_PENDING;

本次分享到此結(jié)束啦~

如果覺得文章對(duì)你有幫助,點(diǎn)贊、收藏、關(guān)注、評(píng)論,一鍵四連支持,你的支持就是我創(chuàng)作最大的動(dòng)力。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
oracle分布式事務(wù)總結(jié)
Oracle分布式事務(wù)和兩階段提交(2PC)
Oracle備份與恢復(fù)案例(五)
oracle回滾段
深入淺出Oracle學(xué)習(xí)筆記(7)
Error 2068 trapped in 2PC on transaction 21.3...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服