1

I am using WSA 8.5 , JDK 6, JDBC 11. I am getting XAException. I have set the grant permission as suggested by other posts, but did not resolve my issue.

Can you please assist. This issue create huge log file under load testing and result in application to hang.

I am getting below error in 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)
Brett Kail
  • 33,593
  • 2
  • 85
  • 90
sorab
  • 321
  • 1
  • 4
  • 15

1 Answers1

4

IBM suggests to grant special permissions to an Oracle user when you have a deal with Oracle and WAS XA datasource.

This is required grants:

 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 support site has a good explanation and possible solution.

IBM support

Also I have answered to the similar question before it might help. stackoverflow

Community
  • 1
  • 1
Anton N
  • 2,317
  • 24
  • 28
  • 1
    grant DDL did resolve the issue. Do I need to clear the old transaction log after applying the DDL. – sorab Nov 19 '15 at 15:20
  • 1
    Yes, you probably want to do that in order to prevent new messages in your app server logs. There is another option - resolve transactions but it fits mostly for production environment. – Anton N Nov 19 '15 at 15:30