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.
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.
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).