1

我在 WebSphere ND 7.0.0.21 上部署了一个应用程序。其中我配置了一个 Oracle XA 数据源。最近应用程序崩溃了,当我重新启动它时,我开始每秒在 SystemOut.log 中收到以下异常。

[11/6/12 13:55:38:650 GMT] 0000000c InternalGener I   DSRA8205I: JDBC driver name  : Oracle JDBC driver
[11/6/12 13:55:38:651 GMT] 0000000c InternalGener I   DSRA8206I: JDBC driver version  : 11.2.0.2.0
[11/6/12 13:55:38:661 GMT] 0000000c InternalOracl I   DSRA8212I: DataStoreHelper name is: com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper.
[11/6/12 13:55:38:662 GMT] 0000000c WSRdbDataSour I   DSRA8208I: JDBC driver type  : ""
[11/6/12 13:55:38:685 GMT] 0000000c WSRdbXaResour E   DSRA0304E:  XAException occurred. XAException contents and details are: The cause is               : null.
[11/6/12 13:55:38:837 GMT] 0000000c WSRdbXaResour E   DSRA0302E:  XAException occurred.  Error code is: XAER_RMERR (-3).  Exception is: <null>
[11/6/12 13:55:38:837 GMT] 0000000c XARminst      E   WTRN0037W: The transaction service encountered an error on an xa_recover operation. The resource was com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@7b867b86. The error code was XAER_RMERR. The exception stack trace follows: javax.transaction.xa.XAException
        at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:709)
        at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:1088)
        at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:141)
        at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:626)
        at com.ibm.tx.jta.PartnerLogTable.recover(PartnerLogTable.java:389)
        at com.ibm.tx.jta.RecoveryManager.resync(RecoveryManager.java:1530)
        at com.ibm.tx.jta.RecoveryManager.performResync(RecoveryManager.java:2265)
        at com.ibm.ws.tx.jta.RecoveryManager.performResync(RecoveryManager.java:114)
        at com.ibm.tx.jta.RecoveryManager.run(RecoveryManager.java:2218)
        at java.lang.Thread.run(Thread.java:736)

当没有在数据库上授予适当的权限时,这似乎是一个标准问题,以允许 db 用户访问需要恢复的事务 - http://www-01.ibm.com/support/docview.wss?uid= swg21196663

但是,我随后在该页面上运行 SQL 并重新启动应用程序服务器,但问题仍然存在。仅当我删除事务日志(在 IBM 页面上描述为解决方法)时,该问题才消失。

为什么授予权限不能解决问题?其他原因会导致 XAER_RMERR 问题吗?

4

2 回答 2

1

我建议启用相关 MustGather (http://www-01.ibm.com/support/docview.wss?uid=swg21153216) 中描述的跟踪,以便查看数据库返回的实际错误。

于 2012-11-07T07:36:17.283 回答
0

删除事务日志和合作伙伴日志可以解决问题。当然,在具有复杂事务方案的生产环境中执行此操作必须谨慎,否则 WebSphere 无法自行恢复它们。

于 2014-01-21T09:40:18.147 回答