|
Problem(Abstract) |
Your application uses 2PC (XA) data source with Oracle®
JDBC™ Driver version 9i (for example: 9.2.0.4.0) and receives
ORA-02089. |
|
|
|
Cause |
The problem is caused by setting AutoCommit to True on the
XA Connection. This is a bug with the Oracle JDBC 9i driver. The problem
can be reproduced using the attached stand-alone Java™ program
(XASimpleTest.java) with straight JDBC calls connecting to Oracle
using Oracle JDBC Driver 9i.
Example of stack trace using WebSphere® Application Server V4.0 data
source style:
[8/3/04 9:36:27:988 EDT] 366b7af8
ConnectO e destroy(): Exception closing XAConnection
java.sql.SQLException: ORA-02089: COMMIT is not allowed in a
subordinate session
at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Ocommoncall.receive(Ocommoncall.java:138)
at oracle.jdbc.ttc7.TTC7Protocol.logoff(TTC7Protocol.java:390)
at
oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1436)
at
oracle.jdbc.pool.OraclePooledConnection.close(OraclePooledConnection.java:232)
at com.ibm.ejs.cm.pool.ConnectO.destroy(ConnectO.java:1862) |
Example of stack trace or trace entries using WebSphere Application
Server V5.0 data source style:
[9/14/04 18:22:37:693 EDT] 328ca8bc
WSRdbXaResour W DSRA0302E: XAException occurred. Error code is:
XAER_RMERR. Exception is: <null>
[9/14/04 18:24:08:413 EDT] 7738a8b7 WSRdbManagedC d DSA_ERROR
ORA-02089: COMMIT is not allowed in a subordinate session
[9/14/04 18:24:08:413 EDT] 7738a8b7 WSRdbManagedC d
SQL_STATE_ERROR_CODE 42000 2089
[9/14/04 18:24:08:413 EDT] 7738a8b7 WSRdbManagedC d Exception
java.sql.SQLException: ORA-02089: COMMIT is not allowed in a subordinate
session
at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Ocommoncall.receive(Ocommoncall.java:138)
at oracle.jdbc.ttc7.TTC7Protocol.logoff(TTC7Protocol.java:395)
at
oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1487)
at
oracle.jdbc.pool.OraclePooledConnection.close(OraclePooledConnection.java:259)
at
com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.destroy(WSRdbManagedConnectionImpl.java:1761)
at com.ibm.ejs.j2c.MCWrapper.destroy(MCWrapper.java:1305) |
|
|
|
Resolving the
problem |
The problem is fixed with Oracle 10g. |
|
|