一.报错信息

SunOct2800:46:332018Error3113trappedin2PContransaction644.3.881743.Cleaningup.Errorstackreturnedtouser:ORA-02054:transaction644.3.881743in-doubtORA-03113:end-of-fileoncommunicationchannelORA-02063:precedinglinefromKMESBASunOct2800:46:342018DISTRIBTRANOMES.2b7345a.644.3.881743islocaltran644.3.881743(hex=284.03.d744f)insertpendingpreparedtran,scn=14593464857025(hex=d45.ce49f1c1)


二.分析

此类问题通常是由于网络问题或远程数据库异常导致的分布式事务失败。

执行下面SQL语句

selectLOCAL_TRAN_ID,GLOBAL_TRAN_ID,STATE,MIXED,HOST,COMMIT#fromdba_2pc_pending;#dba_2pc_pending视图记录等待恢复的分布式事务的信息select*fromDBA_2PC_NEIGHBORS;#视图记录未决的分布式事务的输入输出连接信息


三.处理

1.如果在上述视图中查询到记录,则尝试force commit/rollback

commit force '644.3.881743';


2.如果不成功则进行如下操作

(1).Disable分布式恢复SQL>ALTERSYSTEMDISABLEDISTRIBUTEDRECOVERY;Systemaltered.(2).Puege(清空)in-doubttransactionentry:SQL>execDBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('644.3.881743');PL/SQLproceduresuccessfullycompleted.(3).然后enable分布式恢复:SQL>ALTERSYSTEMENABLEDISTRIBUTEDRECOVERY;