oracle 启发式参与者永不停止的周期性恢复

b0zn9rqh  于 2022-11-03  发布在  Oracle
关注(0)|答案(3)|浏览(125)

几天来我们的日志里都是这条消息

2018-06-15 12:19:23 WARN [com.arjuna.ats.arjuna] (Periodic Recovery) Transaction 0:ffff0a983f1e:1f3aa2ff:5a09aa02:d1c08c has 1 heuristic participant(s)!
2018-06-15 12:19:23 WARN [com.arjuna.ats.jta] (Periodic Recovery) ARJUNA016037: Could not find new XAResource to use for recovering non-serializable XAResource XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=46, bqual_length=36, tx_uid=0:ffff0a983f1e:1f3aa2ff:5a09aa02:d1c08c, node_name=acme_node, branch_uid=0:ffff0a983f1e:1f3aa2ff:5a09aa02:d1c08d, subordinatenodename=null, eis_name=unknown eis name >, heuristic: TwoPhaseOutcome.FINISH_OK com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@6569a57c >
2018-06-15 12:19:23 WARN [com.arjuna.ats.arjuna] (Periodic Recovery) Transaction 0:ffff0a983f1e:1f3aa2ff:5a09aa02:d1c08c restored heuristic participant XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=46, bqual_length=36, tx_uid=0:ffff0a983f1e:1f3aa2ff:5a09aa02:d1c08c, node_name=acme_node, branch_uid=0:ffff0a983f1e:1f3aa2ff:5a09aa02:d1c08d, subordinatenodename=null, eis_name=unknown eis name >, heuristic: TwoPhaseOutcome.FINISH_OK com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@6569a57c >

总是相同的Xid。有办法解决这个问题吗?我们正在考虑关闭应用程序并删除data/tx-object-store中的文件。这是个好主意吗?
这就是WildFly 11。我们使用Oracle 12 c和IBM WebSphere MQ设置了XA事务。我们正在执行从消息驱动Bean到JDBC的XA事务。

uurv41yg

uurv41yg1#

我在2.4.1中找到了问题的答案。假设完成了事务指南。
如果在事务协调器已告知XAResource提交之后但在更新事务日志以移除参与者之前在事务环境中发生故障,则恢复将尝试重放提交。在串行化XAResource的情况下,来自XAResource的响应将使参与者能够从日志中移除,然而,如果XAResource是不可恢复的,则任何XAResourceRecovery示例将极不可能向恢复子系统提供新的XAResource以供使用以便尝试恢复;在这种情况下,恢复将持续失败,并且日志条目将永远不会被删除。
此问题有两种可能的解决方案:
依靠相关的ExpiryScanner最终将日志移到其他位置。然后需要手动干预以确保日志可以安全删除。如果日志条目被移动,则会输出适当的警告消息。
将com.arjuna.ats.jta.xaAssumeRecoveryComplete设置为true。只要无法从任何已注册的XAResourceRecovery示例中找到新的XAResource示例,就会选中此选项。如果为false(预设值),复原会假设XAResourceRecovery执行严修有暂时性问题(例如,不是所有的都已向子系统注册),并且将周期性地尝试恢复。如果为true,则恢复假定上一次提交尝试已成功,并且可以从日志中删除此示例,而不再进行进一步的恢复尝试。此选项是全局选项,因此需要谨慎使用,因为如果使用不当,XAResource示例可能会保持未提交状态。

elcex8rz

elcex8rz2#

有一个数据库事务未完成,您的服务器正在尝试恢复。

SERVER_HOME/独立/数据/事务对象存储/阴影无文件锁定存储/默认存储/状态管理器/基本操作/两阶段协调器/原子操作/

存在事务文件。可能首先删除事务文件(最好在您的本地/dev env上)并跟踪日志以识别未完成/提交的事务。修复问题的根源,警告将消失。或者检查WARNING上的jndiName以了解是哪个数据源创建了这些警告。
警告是“never ending”,因为您可能有一个计划任务不断尝试(按指定的时间间隔)与数据库通信,但由于必须首先修复的底层错误,事务从未完成。

eqoofvh9

eqoofvh93#

就像之前的发帖人说的,这些信息永远不会结束。我继承了一个系统,发现这些信息已经在我们的日志中填充了3年。我从以下方面得到了线索:
https://knowledge.broadcom.com/external/article/129101/arjuna016037-could-not-find-new-xaresour.htm

https://docs.wildfly.org/13/Admin_Guide.html#Command_Line_Interface
我的警告消息与此页面顶部列出的警告消息非常相似。
1.连接到jboss-cli
1.删除导致警告的事务处理
1.请删除atomicaction目录中的文件。
.\jboss-cli.ps1 --连接--控制器=本地主机
在jboss中(我使用的是Windows,因此我必须在冒号前加上反斜杠)/子系统=事务/日志存储=日志存储/事务=0 5a 66 f4\:eb:删除()

{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0030: No resource definition is registered for address [
    (\"subsystem\" => \"transactions\"),
    (\"log-store\" => \"log-store\"),
    (\"transactions\" => \"0:ffffac100086:781344c7:61b922df:5a66f4:eb\")
]",
    "rolled-back" => true
}

如果一切正常-你应该看到rolled-back =〉true。现在删除atomicaction目录中的文件。该文件应该与事务相同,但用_代替:
00086_781344c7_61b922df_5a66f4中指定了一个参数,该参数为

相关问题