【问题标题】:WTRN0037W: The transaction service encountered an error on an xa_recover operationWTRN0037W: 事务服务在执行 xa_recover 操作时遇到错误
【发布时间】:2015-11-19 12:42:10
【问题描述】:

我正在使用 WSA 8.5、JDK 6、JDBC 11。我收到 XAException。我已按照其他帖子的建议设置了授予权限,但没有解决我的问题。

你能帮忙吗?此问题在负载测试下创建巨大的日志文件并导致应用程序挂起。

我在 SystemOut.log 中遇到错误

[11/19/15 18:02:41:029 IST] 0000003d WSRdbXaResour E   DSRA0304E:  XAException occurred. XAException contents and details are: The cause is               : null.
[11/19/15 18:02:41:030 IST] 0000003d WSRdbXaResour E   DSRA0302E:  XAException occurred.  Error code is: XAER_RMERR (-3).  Exception is: <null>
[11/19/15 18:02:41:030 IST] 0000003d XARminst      E   WTRN0037W: The transaction service encountered an error on an xa_recover operation. The resource was com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@cc24166c. The error code was XAER_RMERR. The exception stack trace follows: javax.transaction.xa.XAException
        at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:703)
        at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:1116)
        at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:141)
        at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:715)
        at com.ibm.tx.jta.impl.PartnerLogTable.recover(PartnerLogTable.java:431)
        at com.ibm.tx.jta.impl.RecoveryManager.resync(RecoveryManager.java:1534)
        at com.ibm.tx.jta.impl.RecoveryManager.performResync(RecoveryManager.java:2267)
        at com.ibm.ws.tx.jta.RecoveryManager.performResync(RecoveryManager.java:117)
        at com.ibm.tx.jta.impl.RecoveryManager.run(RecoveryManager.java:2220)
        at java.lang.Thread.run(Thread.java:770)

【问题讨论】:

    标签: websphere


    【解决方案1】:

    当您与 Oracle 和 WAS XA 数据源有交易时,IBM 建议向 Oracle 用户授予特殊权限。

    这是必需的赠款:

     grant select on pending_trans$ to <user>; 
     grant select on dba_2pc_pending to <user>;
     grant select on dba_pending_transactions to <user>;
     grant execute on dbms_system to <user>;  (If using Oracle 10.2.0.3 or lower JDBC driver)
     grant execute on dbms_xa to <user>; (If using Oracle 10.2.0.4 or higher JDBC driver)
    

    IBM 支持网站有很好的解释和可能的解决方案。

    IBM support

    我也已经回答了类似的问题,这可能会有所帮助。 stackoverflow

    【讨论】:

    • grant DDL 确实解决了这个问题。应用 DDL 后是否需要清除旧的事务日志。
    • 是的,您可能希望这样做以防止应用服务器日志中出现新消息。还有另一种选择 - 解决事务,但它主要适用于生产环境。
    猜你喜欢
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多