分布式事务2PC_PENDING异常处理

set heading off;
set feedback off;
set echo off;
Set lines 999;
Spool rollback.sql
select 'ROLLBACK FORCE '''|| LOCAL_TRAN_ID ||''';' from DBA_2PC_PENDING where STATE='prepared';
spool off;

 

declare
v_txn VARCHAR2(22);
CURSOR trans_cursor is
SELECT LOCAL_TRAN_ID FROM DBA_2PC_PENDING WHERE STATE='committed';
begin
open trans_cursor ;
LOOP
fetch trans_cursor into v_txn;
EXIT WHEN trans_cursor%NOTFOUND ;
Commit;
DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY(v_txn) ;
END LOOP;
COMMIT;
end;
/

 

参考How to clear huge number of In-doubt transactions in PREPARED state (文档 ID 2489254.1)

Manually Resolving In-Doubt Transactions: Different Scenarios (文档 ID 126069.1)

Pending Distributed Transaction Generates RECO Trace File (文档 ID 159376.1)

posted @ 2019-04-23 21:44  刚好遇见Mysql  阅读(653)  评论(0编辑  收藏  举报