Troubleshooting Oracle transaction recovery messages

You must apply special grants for Oracle transaction recovery to work correctly.

About this task

Servers that are configured to use an Oracle database might log the following errors in the SystemOut log file:
[4/19/12 13:44:50:062 EDT] 00000007 WSRdbXaResour E   DSRA0304E:  XAException occurred. XAException contents and details are: The cause is               : null.
[4/19/12 13:44:50:062 EDT] 00000007 WSRdbXaResour E   DSRA0302E:  XAException occurred.  Error code is: XAER_RMERR (-3).  Exception is: <null>

If there is a system failure, or the server was not stopped properly during a distributed transaction, the WebSphere Application Server transaction manager attempts to clean up any failed transactions that are found in the transaction logs. The Oracle database requires that you have special permissions for transaction recovery. The previous error occurs when a user that attempts to run the recover method does not have sufficient privileges.

To resolve these issues, run the following commands as user SYS:
  • grant select on pending_trans$ to user_name;
    grant select on dba_2pc_pending to user_name; 
    grant select on dba_pending_transactions to user_name; 
  • If you are using Oracle V10.2.0.3 or a previous version of the JDBC driver:
    grant execute on dbms_system to user_name;
  • If you are using Oracle V10.2.0.4 or a more recent of the JDBC driver:
    grant execute on dbms_xa to user_name;
where user_name is the user name for the Oracle user that is configured during deployment environment creation.

Repeat the previous steps for each Oracle user that is defined during deployment environment creation.