解除分散式事務的掛起

wuhuizhong發表於2007-07-21
由於遠端資料庫的異常中斷或者是關閉,本地資料庫對遠端資料庫的分散式事務經常會出現連續的報錯到alert.log檔案中。
ORA-02068: following severe error from LNK_DB2_STB
ORA-01033: ORACLE initialization or shutdown in progress

[@more@]如果遠端資料庫短時間內無法恢復,這個錯誤可能會一直報下去,有的時候,對於這樣分散式事務,可以簡單稱為事務的掛起狀態,我們可以採用強制手段將該事務清除。
首先,檢查掛住的事務
select local_tran_id from dba_2pc_pending where state='collecting';

首先,可以試圖提交或者回滾該事務
SQL> select state, advice from dba_2pc_pending where local_tran_id = "";

強行提交:SQL> commit force "";
強行回滾:SQL> rollback force "";

如果執行失敗,也可以強行從資料字典中刪除改事務的記錄
程式碼:
SQL> set transaction use rollback segment system;
SQL> delete from dba_2pc_pending where local_tran_id = "";
SQL> delete from pending_sessions$ where local_tran_id = "";
SQL> delete from pending_sub_sessions$ where local_tran_id = "";
SQL> commit;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/72950/viewspace-927284/,如需轉載,請註明出處,否則將追究法律責任。

相關文章