To return expected results, you can:
Reduce the number of search terms.
Each term you use focuses the search further.
Check your spelling.
A single misspelled or incorrectly typed term can change your result.
Try substituting synonyms for your original terms.
For example, instead of searching for "java classes", try "java training"
Did you search for an IBM acquired or sold product ?
If so, follow the appropriate link below to find the content you need.
Using Oracle 10gThin JDBC Driver with the following sequence of application events causes Oracle error ORA-24776 to occur:
- getConnection() which starts a local transaction container (LTC) and make an SQL call to the database that does a "SELECT ... FOR UPDATE" with auto commit set to true
- initiate a global transaction (i.e., a UserTransaction) on the same connection that was used in the LTC
The cause of the problem is that the Oracle JDBC driver does not commit the LTC even though the auto commit is set to true. The WebSphere Application Server assumes the auto commit did in fact commit the LTC. So, it does its normal processing after a commit has been done and the connection has been closed. It returns the connection to the connection pool for reuse. When the subsequent global transaction is started and it gets this same connection from the connection pool, the following errors are logged:
[6/16/14 16:53:53:119 CDT] 0000005a WSRdbXaResour E
DSRA0304E
: XAException occurred. XAException contents and details are:
The XA Error is : -6
The XA Error message is : Routine was invoked in an inproper context.
The Oracle Error code is :
24776
The Oracle Error message is: Internal XA Error
The cause is : null.
[6/16/14 16:53:53:123 CDT] 0000005a WSRdbXaResour E
DSRA0302E
: XAException occurred. Error code is: XAER_PROTO (-6). Exception is: <null>
[6/16/14 16:53:53:269 CDT] 0000005a XATransaction E J2CA0027E: An exception occurred while invoking start on an XA Resource Adapter from dataSource jdbc/WowOraXa, within transaction ID {XidImpl: formatId(57415344), gtrid_length(36), bqual_length(54), data(00000113368720a60000000100000004f19fea203e512a61832608ccd614dcd70415c55b00000113368720a60000000100000004f19fea203e512a61832608ccd614dcd70415c55b000000010000000000000000000000000001)}:
oracle.jdbc.xa.OracleXAException
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:938)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:244)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start(WSRdbXaResourceImpl.java:1322)
at com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1289)
The LTC that uses the same connection could be on a different thread. What causes the problem is the use of the same connection pool connection. Since the Oracle JDBC driver did not commit the LTC, it throws the ORA-24776 to indicate that the previous LTC has not been committed. This appears to be a change in the behavior of the Oracle JDBC driver.
Sample of trace events showing the events that lead to this problem
This is the trace event that shows what Oracle connection maps to the WebSphere AppServer connection pool connection
[6/16/14 16:47:26:212 CDT] 0000005a WSJdbcConnect > <init> Entry
WSRdbManagedConnectionImpl@1743eecf
oracle.jdbc.driver.LogicalConnection@3486aecf
[6/16/14 16:47:26:214 CDT] 0000005a WSJdbcConnect > prepareStatement Entry
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@3beee90
SELECT IOM_XML_LOG_SEQ.NEXTVAL FROM DUAL
TYPE FORWARD ONLY (1003)
CONCUR READ ONLY (1007)
This shows that the transaction is an LTC
[6/16/14 16:47:26:214 CDT] 0000005a LocalTranCurr > getLocalTranCoord Entry
com.ibm.ws.LocalTransaction.LocalTranCurrentImpl@4731aee5
This shows that AutoCommit is set for the connection
[6/16/14 16:47:26:214 CDT] 0000005a WSRdbManagedC > enforceAutoCommit Entry
This shows the connection being returned to the connection pool once the connection is closed after the SELECT for update
[6/16/14 16:47:26:255 CDT] 0000005a PoolManager 3 released managed connection WSRdbManagedConnectionImpl@1743eecf
This shows the connection being used by the global TX
[6/16/14 16:53:58:629 CDT] 00000057 WSJdbcConnect > <init> Entry
WSRdbManagedConnectionImpl@1743eecf
oracle.jdbc.driver.LogicalConnection@3486aecf
This shows the begin called on the global TX