【发布时间】:2016-08-25 18:01:05
【问题描述】:
我们使用的是 Oracle 11G 和 JDK1.8 的组合。 在我们的应用程序中,我们使用 XAConnection、XAResource 进行 DB 事务。 即)分布式事务。
在少数情况下,我们需要终止 Java 进程以停止应用程序。 杀死后,如果我们重新启动我们的应用程序,那么我们在执行数据库事务时会收到以下异常。
java.sql.SQLException: ORA-02049: timeout: distributed transaction
waiting for lock
在这几个小时之后,我们无法使用我们的应用程序,直到锁定释放。
谁能给我一些解决方案,以便我们可以继续工作而不是等待锁释放。
我尝试了以下选项:
a) 使用 alter 命令获取 SID 并终止会话。之后,表锁也不会释放。
我正在处理非常少量的数据。
【问题讨论】:
-
您是如何终止会话的 - 使用
immediate选项?杀死 Java 进程似乎是一种严厉的方法。你不能添加一个机制来触发一个干净的退出吗?还是应用程序处于无论如何都不会响应的状态? -
dba_2pc_pending 中是否有一行可以提交或回滚的待处理分布式事务?
-
@justin Cave dba_2pc_pending 中没有可用行
标签: java oracle oracle11g transactions