Exception while trying to use ORACLE supplied 12c Release 1 driver (ojdbc6.jar) to connect to Oracle 10 or 11 Database server instance through TIBCO Runtime Agent (TRA) 5.8.0, 5.7.x or TIBCO Administrator (Admin) 5.8.0, 5.7.x.

Exception while trying to use ORACLE supplied 12c Release 1 driver (ojdbc6.jar) to connect to Oracle 10 or 11 Database server instance through TIBCO Runtime Agent (TRA) 5.8.0, 5.7.x or TIBCO Administrator (Admin) 5.8.0, 5.7.x.

book

Article ID: KB0074854

calendar_today

Updated On:

Products Versions
TIBCO Administrator 5.9.0 and above
Not Applicable -

Description

Resolution:
Description:
============
Oracle supplied driver version 12 c Release 1 is not compatible with TIBCO Runtime Agent (TRA) 5.8.0, 5.7.x and TIBCO Administrator (Admin) 5.8.0, 5.7.x.
If the above mentioned driver is used to connect to Oracle 11 or 10 (TRA and Admin supported Oracle DB version), it fails with the exception below.

*************************************************************************************************************
com.tibco.pof.entity.EntityStoreException: java.sql.SQLException: Could not commit with auto-commit set on
*************************************************************************************************************

Symptoms:
========
Create a domain with ORACLE DB as backend, if you are using the oracle supplied 12c Release 1 driver (ojdbc6.jar).
Then domain utility will throw the below exception.
******************************************************************************************************
2013 Nov 01 10:18:43:116 GMT -0700 DU Error [DomainUtility] AESDKJ-0000 com.tibco.pof.entity.EntityStoreException: java.sql.SQLException: Could not commit with auto-commit set on
    at com.tibco.pof.entitystore.db.DBEntityStore.init(DBEntityStore.java:568)
    at com.tibco.pof.entitystore.EntityStoreManager.a(EntityStoreManager.java:221)
    at com.tibco.pof.entitystore.EntityStoreManager.getEntityStore(EntityStoreManager.java:202)
    at com.tibco.pof.entitystore.EntityStoreManager.getReadOnlyEntityDomain(EntityStoreManager.java:333)
    at com.tibco.pof.entitystore.EntityStoreManager.getReadOnlyEntityDomain(EntityStoreManager.java:327)
    at com.tibco.pof.entitystore.EntityStoreManager.getReadOnlyEntityDomain(EntityStoreManager.java:320)
    at com.tibco.pof.authorization.AuthorizationDomain.instance(AuthorizationDomain.java:123)
    at com.tibco.pof.authorization.AuthorizationDomain.getMutableDomainByName(AuthorizationDomain.java:153)
    at com.tibco.pof.authorization.AuthorizationDomain.getMutableDomain(AuthorizationDomain.java:128)
    at com.tibco.pof.authorization.AuthorizationDomain.install_5_1_3(AuthorizationDomain.java:204)
    at com.tibco.pof.authorization.AuthorizationDomain.install(AuthorizationDomain.java:159)
    at com.tibco.administrator.domain.DomainConfiguration.createDomain(DomainConfiguration.java:1676)
    at com.tibco.administrator.du.task.createdomain.CreateDomainTask.a(CreateDomainTask.java:637)
    at com.tibco.administrator.du.task.createdomain.CreateDomainTask.execute(CreateDomainTask.java:470)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.tibco.administrator.wizard.progress.Trampoline.invoke(Trampoline.java:96)
    at com.tibco.administrator.wizard.progress.BusyWait.run(BusyWait.java:267)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: Could not commit with auto-commit set on
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4439)
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4486)
    at com.tibco.runtime.pool.jdbc.JdbcConnection.commit(JdbcConnection.java:191)
    at com.tibco.pof.entitystore.db.PofInitializationDB.createInitTables(PofInitializationDB.java:46)
    at com.tibco.pof.entitystore.db.DBEntityStore.init(DBEntityStore.java:563)
    ... 20 more
*********************************************************************************************************


Cause:
=====
The error is due to the following intentional change done by ORACLE for their latest driver version.

**************************************ORACLE DRIVER 12C Readme****************************************

Intentional changes that may cause backward compatibility issues

------------------------------------------------------------------------------------------
- Per the JDBC specification, a call to commit() or rollback() when AutoCommit is turned on
  should throw an exception. Prior to 12R1, the drivers did not throw any exception which
  was a bug (please refer to bug 11891661 for more details). This bug has been fixed in 12R1
  so the driver will throw an exception on commit() or rollback() if the AutoCommit mode
  is turned on. This change is intentional and makes the Oracle JDBC drivers comply to the
  specification.

- Similarly the JDBC specification states that if setAutoCommit is called in the middle of
  a local transaction then the transaction is committed. Starting in 12R1, the JDBC drivers
  will issue an implicit commit when setAutoCommit is called if a local transaction is detected.

**************************************ORACLE DRIVER 12C Readme****************************************

 

Issue/Introduction

Exception while trying to use ORACLE supplied 12c Release 1 driver (ojdbc6.jar) to connect to Oracle 10 or 11 Database server instance through TIBCO Runtime Agent (TRA) 5.8.0, 5.7.x or TIBCO Administrator (Admin) 5.8.0, 5.7.x.

Environment

OS : All

Resolution

The customer should use the Oracle Database 11g Release 2 (11.2.0.4), (11.2.0.3), (11.2.0.2.0), (11.2.0.1.0) driver.
This issue is resolved in later TRA release (TRA 5.10.0 or higher should work fine.)

other workaround: 
add 
java.property.oracle.jdbc.autoCommitSpecCompliant=false 
to related component's .tra file (domainutility.tra, domainutilithcmd.tra, tibcoadmin_domainname.tra etc).