Oracle JDBC Driver Upgrade from v11.2.0.4 to v19.20.0.0 and JOOQ Upgrade from v3.9.1 to 3.17.x

Overview

The JDBC driver for the Oracle Snap Pack is upgraded from OJDBC6 JAR (v11.2.0.4) to OJDBC10 JAR (v19.20.0.0) in the stable distribution in the November 2023 release. As part of this upgrade, the 19.20.0.0 JDBC driver is bundled with the Oracle Snap Pack as the default JDBC driver.

Behavior Changes

This driver upgrade has resulted in specific behavior changes in the Snap Pack. These changes are for status codes and success and failure messages. This table lists these changes:

Oracle Snaps

Scenario

Error/Output from the Old (OJDBC6 JAR—11.2.0.4 version) JDBC Driver

Error/Output from the new (OJDBC10 JAR —19.20.0.0 version) JDBC Driver

Oracle-Execute

jOOQ upgrade change:

When you use a stored procedure.

Output message:

Message: Success

Output message:

$UPDATE_COUNT=-1.

Oracle - Execute

Oracle - Insert

Oracle - Merge

When the insert and merge operations are successful.

Output message:

  • Status: "-2"

  • Message: Batch statement executed successfully, but no count of the number of rows it affected is available.

Output message:

  • Status: 1

  • Message: success

Oracle - Delete

Oracle - Execute

Oracle - Update

When the delete and update operations are successful.

Output message:

  • Status: "-2"

  • Message: Batch statement executed successfully, but no count of the number of rows it affected is available.

Output message:

  • Status: "number of rows impacted"

  • Message: success

Oracle - Insert

When you enter a string value instead of an integer in a numeric column for the insert operation.

Error message: SQL operation failed.

Reason: ORA-01722: invalid number , error code: 1722, Coracle-Insert ? BH D7 A ® 'SQL state: 42000,

Resolution: Please check for valid Snap properties and input data.

Error Message: Invalid integer: <string>

Reason: The string value is not a number.

Resolution: Please address the reported issue.

Oracle - Insert

 

When you insert null values into the not null column type.

Error message:

Insert batch records into not null column type- one record specified with null value to fail and route to error view.

Reason: ORA-01400: cannot insert NULL into (&quot;<table name>$#&quot;.&quot;ORACLECHAR_NOTNULL&quot;.&quot;COLUMN1&quot;) , error code: 1400, SQL state: 23000, next exception: ORA-01400: cannot insert NULL into (&quot;<table_name>$#&quot;.&quot;ORACLECHAR_NOTNULL&quot;.&quot;COLUMN1&quot;) },

The reason is repeated twice with the ‘next exception key in older drivers.

Reason: ORA-01400: cannot insert NULL into (&quot;<table_name>$#&quot;.&quot;ORACLECHAR_NOTNULL&quot;.&quot;COLUMN1&quot;) , error code: 1400, SQL state: 23000, next exception: ORA-01400: cannot insert NULL into (&quot;<table name>$#&quot;.&quot;ORACLECHAR_NOTNULL&quot;.&quot;COLUMN1&quot;) },

Oracle - Execute

Oracle - Insert

 

Batch operation when the Auto commit checkbox is Selected.

Error message: Batch operation failed

In the old version, the entire batch fails when an error occurs during a batch operation, and records are redirected to the error view. As a result, no records are inserted into the database.

Error message: SQL operation failed

In the new version, if an error occurs in the batch operation, the records before the problematic one are inserted into the database, and the records after it are routed to the error view.

Records are inserted into the table because the Auto-commit checkbox is selected.

Oracle - Execute

Oracle - Insert

Batch operation when the Auto Commit checkbox is Deselected.

Error message: 'Batch operation failed'

In the old version, when an error occurs during a batch operation, the entire batch fails and records are redirected to the error view. As a result, no records are inserted into the database.

Error message: 'SQL operation failed'

In the new version, if an error occurs in the batch operation, the records before the problematic one are inserted into the database, and the records after it are routed to the error view.

Records are not inserted into the table because the Auto-commit checkbox is deselected.

Oracle - Select

When you select a second output view for metadata.

Displays the data type as DECIMAL for numeric columns.

Displays data type as "NUMERIC" instead of "DECIMAL".

Oracle - Execute

Insert operation when you pass a spl character ( ' ):

Reason: Invalid query: Insert into #TABLE_NAME.COLUMN_NAME# values ('windyi'eee')".

Resolution: Please check for valid Snap properties and input data.

Error code: 17081

Reason: error occurred during batching: ORA-00917: missing comma"

Resolution: Please check for valid Snap properties and input data.

Oracle - Delete

Delete condition contains special characters.

Reason: Syntax error at or near one of single-quotes}"

Error code: 1740

Reason: ORA-01740: missing double quote in identifier, SQL state: 42000}"

FAQ for Upgrading the Oracle JDBC Driver from v11.2.0.4 to v19.20.0.0

What is happening?

The Oracle JDBC Driver is upgraded from OJDBC6 JAR (11.2.0.4 version) to the OJDBC10 JAR (19.20.0.0 version). The OJDBC10 JAR is bundled with the Oracle Snap Pack as the default driver.

Why are we upgrading the Oracle driver?

The decision to upgrade the Oracle JDBC driver from version 11.2.0.4 to 19.20.0.0 is made to improve security, performance, stability, and reliability. Oracle Database 19c offers significant enhancements, bug fixes, and new features unavailable in the 11g version. Upgrading to 19.20.0.0 ensures continued support and compatibility with modern systems and provides a more efficient and secure database environment.

What is the timeline for this upgrade?

This upgrade is available as a stable upgrade on November 8, 2023.

Will I be impacted?

Yes, if you use the default version, you will be impacted. The impact might be minimal if you use the latest driver or a higher version than 19c.

Do I need to reconfigure my accounts?

You do not have to reconfigure your account settings or drivers; the account can remain as-is to work with the latest driver. However, if you currently use the default version and want to revert to the previous version behavior, we recommend you use the OJDBC6 JAR.

How do you override the behavior changes?

Use the OJDBC6 JAR from the 11.2.0.4 version to maintain the same behavior as before the driver upgrade: