This section describes known bundled Sun JDBC driver issues and associated solutions.
To set a desired isolation level for a connection, the corresponding connection pool must be created at that same isolation level. See the Sun Java System Application Server Enterprise Edition 8.2 Administration Guide for details about configuring connection pools.
If an application generates more than 3000 PreparedStatement objects in one transaction, the following error may occur with DB2:
[sunm][DB2 JDBC Driver] No more available statements.Please recreate your package with a larger dynamicSections value.
Add following properties to the connection pool definition to get the driver to rebind DB2 packages with a larger dynamic sections value:
createDefaultPackage=true replacePackage=true dynamicSections=1000
See the Sun Java System Application Server Enterprise Edition 8.2 Administration Guide for details about configuring connection pools.
Related to the PrepardStatement error above, another error message that may be thrown is:
[sunm][DB2 JDBC Driver][DB2]Virtual storage or database resource is not available.
Increase the DB2 server configuration parameter APPLHEAPSZ. A good value is 4096.
Isolation level TRANSACTION_SERIALIZABLE. If your application uses isolation level TRANSACTION_SERIALIZABLE and uses one of the parameters suggested above, it might hang while obtaining a connection.
To set desired isolation level for a connection, the corresponding connection pool has to be created at that isolation level. See the Sun Java System Application Server Enterprise Edition 8.2 Administration Guide for instructions.
Applications using the TRANSACTION_SERIALIZABLE isolation level with the bundled Sun driver for Sybase Adaptive Server may hang when using a prepared statement to update if two parallel transactions are running and one of them is rolled back. Connection rollback fails with following message, and the rolled back connections cannot be used anymore:
java.sql.SQLException: [sunm][Sybase JDBC Driver]Request cannot be submitted due to wire contention
Sybase Adaptive Server does not support the TRANSACTION_REPEATABLE_READ isolation level. However, querying DatabaseMetaData, the bundled Sun driver returns that this isolation level is supported by the database. Applications using the this isolation level will fail.
Applications using the bundled Sun driver cannot set the TRANSACTION_READ_UNCOMMITTED isolation level. The application throws the following exception on the first DataBaseMetaData access:
java.sql.SQLException: [sunm][Sybase JDBC Driver][Sybase]The optimizer could not find a unique index which it could use to perform an isolation level 0 scan on table 'sybsystemprocs.dbo.spt_server_info'.
None at this time.
Set the following property on the JDBC connection pool when using the SUN JDBC oracle datasource (com.sun.sql.jdbcx.oracle.OracleDataSource):
<property name="serverType" value="dedicated"/>
The value of the property depends upon the way the Oracle server's listener is configured. If it is configured in the "shared" mode, the above value needs to change to "dedicated".
Starting with JDBC 10.2 drivers, having more than one JDBC jar file in the CLASSPATH may result in a java.lang.SecurityException: Sealing violation exception.
Detailed explanation from Oracle is documented in the following Oracle Document ID:
Note:405446.1 Subject: JDBC Driver 10.2 Uses Sealed JAR files and May Cause SecurityException Sealing Violation
(Suggested by Oracle) Make sure that the CLASSPATH includes only one JDBC driver JAR file.