java.sql.SQLException: ORA-02089: COMMIT is not allowed in a subordinate session
 Technote (troubleshooting)
 
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.
 
XASimpleTest.java
 
Cross Reference information
Segment Product Component Platform Version Edition
Application Servers Runtimes for Java Technology Java SDK
 
 


Document Information


Product categories: Software > Application Servers > Distributed Application & Web Servers > WebSphere Application Server > DB Connections/Connection Pooling
Operating system(s): Windows
Software version: 6.0
Software edition:
Reference #: 1180106
IBM Group: Software Group
Modified date: Sep 23, 2004