清理分布式事务时hang住

1. 清理分布式事务语句:

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;

需commit(之前一直漏也没问题,rollback force这应该和rollback结束事务类似,无需commit啊,exec dbms包应该也不需要提交;纯属个人揣测)


2. 把查询处理的rollback force语句执行就hang住了,搜了下要执行exec dbms_transaction,手动执行就报

ORA-06510 unhandled user-defined exception

ORA-0’6512  SYS.DBMS_TRANSACTION  line 107

image

3. 执行rollback force的会话的等待事件为free global transaction table entry,且没有阻塞


image

4.查看数据库当前的等待事件,异常等待事件就是enq: DR – contention(因为没看过)

image

5. 查询阻塞,9560,自己阻塞自己(2b了,没查blocking_instance,这是RAC,后来才知道这个是3节点的9560会话阻塞了1节点的9560会话,我是在1节点操作的)

image


6. 如果这时在3节点执行rollback force,应该可以了。

7.后来把4个节点的RECO进程全杀掉,非核心进程,杀掉后会自动启动。

自己虚拟机环境测试截图:


image


8. 在1节点操作rollback force还是hang住,在3节点操作就没问题。


9. 搜索的关于类似的问题,墨天轮上有一篇文章可参考

https://www.modb.pro/db/21418

posted @   gwgwgw  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示