清理分布式事务时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
3. 执行rollback force的会话的等待事件为free global transaction table entry,且没有阻塞
4.查看数据库当前的等待事件,异常等待事件就是enq: DR – contention(因为没看过)
5. 查询阻塞,9560,自己阻塞自己(2b了,没查blocking_instance,这是RAC,后来才知道这个是3节点的9560会话阻塞了1节点的9560会话,我是在1节点操作的)
6. 如果这时在3节点执行rollback force,应该可以了。
7.后来把4个节点的RECO进程全杀掉,非核心进程,杀掉后会自动启动。
自己虚拟机环境测试截图:
8. 在1节点操作rollback force还是hang住,在3节点操作就没问题。
9. 搜索的关于类似的问题,墨天轮上有一篇文章可参考
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)