ORA-02050 trapped in 2PC on transaction 191.4.1345608. Cleaning up.

Posted 16566405495qq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-02050 trapped in 2PC on transaction 191.4.1345608. Cleaning up.相关的知识,希望对你有一定的参考价值。

总结思宜企鹅:33257946dba_2pc_pending中事务的几个状态说明和处理方法:

1、Collecting:prepare阶段没准备好就失败了,global coordinator正在等待各个站点返回已准备好的通知,各个站点什么都没发生,无需执行任何操作

处理方法:在本地数据库执行exec dbms_transaction.purge_lost_db_entry(’transaction_id’)清除in_doubt状态的分布式事务记录就可以了

2、Prepared:prepare阶段完成时发生失败,global coordinator处于prepared状态,已经加上分布锁,等待提交,远程commit point site已经自动回滚

处理方法:在global coordinator上执行rollback force ‘transaction_id’,然后在本地数据库执行exec dbms_transaction.purge_lost_db_entry(’transaction_id’)清除in_doubt状态的分布式事务记录

3、Committed:表示此session已提 交,只是在提交后,接受不到global session的transaction信息了,所以产生异步lock,此时对一般不造成table的lock

处理方法:在本地数据库执行exec dbms_transaction.purge_lost_db_entry(’transaction_id’)清除in_doubt状态的分布式事务记录就可以了

4、Forced Commit和Forced Rollback:表示处于forget阶段时出现异常

处理方法:只需在各站点执行exec dbms_transaction.purge_lost_db_entry(’transaction_id’)清除in_doubt状态的分布式事务记录就可以了

总结常见涉及分布式事务的报错及原因说明:

1、ORA-02053: transaction committed, some remote DBs may be in-doubt

事务已经本地提交,然而与其他lc节点的连接已经丢失

2、ORA-02054: transaction in-doubt

事务本地既没有提交也没回滚,丢失与Global Coordinator的连接

3、ORA-02050: transaction rolled back, some remote DBs may be in-doubt

暗示在两阶段提交时发生通信错误.

4、ORA-01591: lock held by in-doubt distributed transaction

遇到上面的错误,用户/应用无法继续处理这个事务,在这种情况下,数据库自动回滚用户的事务请求并且DBA需要手工提交或回滚未确定事务.

技术图片技术图片技术图片技术图片
注意:读取将会被阻塞,因为直到事务被处理,Oracle不会处理相关数据的版本返回给查询用户.

以上是关于ORA-02050 trapped in 2PC on transaction 191.4.1345608. Cleaning up.的主要内容,如果未能解决你的问题,请参考以下文章

ORA-02050故障诊断一例

ORA-02050故障诊断一例

BZOJ4099Trapped in the Haybales STL

CF840E In a Trap

BZOJ4101[Usaco2015 Open]Trapped in the Haybales Silver 二分

codeforces840E In a Trap