سؤال

I have an application deployed on WebSphere ND 7.0.0.21. Within that I have an Oracle XA datasource configured. Recently the application crashed and when I restarted it, I started getting the following exception in SystemOut.log every second.

[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)

This seems to be a standard problem when appropriate permissions have not been granted on the database, to allow the db user access to the transaction requiring recovery - http://www-01.ibm.com/support/docview.wss?uid=swg21196663

However, I then ran the SQL on that page and restarted the application server, but the problem persisted. The issue only went away when I removed the transaction logs (described as a workaround on the IBM page).

Why would granting the permissions not fix the problem? Can something else cause the XAER_RMERR problem?

هل كانت مفيدة؟

المحلول

I would suggest to enable the traces as described in the relevant MustGather (http://www-01.ibm.com/support/docview.wss?uid=swg21153216) in order to see the actual error returned by the database.

نصائح أخرى

removing transaction logs and partnerlogs solves the issue. of course one must be cautious to do it in a production environment with complex transaction schemes, yet without that WebSphere is unable to recover them itself.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top