Database Drivers API Enhancements
Easy Connect Plus Support for LDAPS/LDAP
Oracle supports LDAP based name look-up for retrieving Database connection strings from the directory servers. The directory used can be OID, OUD, or AD.
Now, LDAP-based name lookup is possible without having ldap.ora
and sqlnet.ora
. The values that are specified as part of ldap.ora
and sqlnet.ora
for ldap name lookup, are passed in the URL string. If ldap.ora
or sqlnet.ora
is present and the ldap URL is passed, then the preference is given to the URL string.
For example: ldap[s]://host[:port]/name[,context]?[parameter=value{¶meter=value}]
Easy Connect Plus extends its support beyond TCP and TCPS to make it easy to use LDAP and LDAPS protocol and parameters.
Enhanced UCP Connection Borrow
Connection creation using the user thread, in the context of a borrow request, can take longer than the specified connectionWaitTimeout (CWT). If a connection has been released by another thread in the meantime, the connection creation request keeps waiting for the operation to complete. It is therefore more effective to borrow the released connection rather than waiting for the one being created.
This feature brings performance enhancement to Java applications during connection borrow.
JDBC Connection Property sendBooleanAsNativeBoolean
A new Connection property oracle.jdbc.sendBooleanAsNativeBoolean is added to restore the old behavior of the Boolean data type, which is used to take integer (0 or 1) for a Boolean data type.
When set to false (the default is true), this property will restore the old behavior of sending integer values (0 or 1) for the boolean data type.
This feature brings compatibility to Java applications that rely on the old behavior of the boolean data type.
The feature furnishes backward compatibility with the earlier JDBC driver behavior. This feature simplifies upgrading to the latest JDBC driver without breaking the behavior of existing Java applications.
JDBC Support for Database Annotation
Annotation is a mechanism to store application metadata centrally in the database. Annotations can be specified at creation time (CREATE) or at modification time (ALTER). An individual annotation has a name and an optional value. Both the name and the value are freeform text fields. A schema object can have multiple annotations. JDBC furnishes the getAnnotations()
method with two signatures (as illustrated below). It returns the annotation associated with the specified table or view. It returns null
if there is no annotation for the given object.
getAnnotations?(java.lang.String objectName, java.lang.String domainName, java.lang.String domainOwner) throws java.sql.SQLException
getAnnotations?(java.lang.String objectName, java.lang.String columnName, java.lang.String domainName, java.lang.String domainOwner) throws java.sql.SQLException
This feature enables sharing metadata across applications and microservices thereby increasing metadata management and productivity.
JDBC Support for Pipelined Database Operations
In the previous releases, the JDBC driver would not allow another database call to start until the current call had been completed however, with asynchronous and reactive programming, Java applications could perform non-database operations, in the meantime. In this release, the database server and the Oracle JDBC-Thin both support pipelining database operations. Java applications can now asynchronously submit several SQL requests to the server without waiting for the return of the preceding calls.
The combination of Java reactive and asynchronous programming (JDBC Reactive Extension, Reactive Streams (R2DB and Virtual Threads) with database support for pipelining fosters high throughput.
JDBC Support for SQL BOOLEAN Data Type
This feature exposes the Oracle RDBMS BOOLEAN
data type to Java through a new BOOLEAN
data type in oracle.jdbc.OracleType Enum
, and DatabaseMetadata
. This feature also performs the implicit conversion of character and number data types to BOOLEAN
data types.
Java applications can take advantage of the new JDBC support for the standard JDBC BOOLEAN
data type. The benefits include: increased portability and the ease of development fostered by the implicit conversion of character and number to BOOLEAN
.
JDBC Support for Self-Driven Diagnosability
This feature eliminates the need to switch from the non-logging JAR files (for example, ojdbcXX.jar
) to the debug JAR files (for example, ojdbcXX_g.jar
) for logging purposes. In addition, it enables logging in the following three ways: logging per connection, logging at the tenant level, or logging globally.
This feature furnishes increased productivity and ease of use for Java applications. It greatly simplifies the debugging of Java applications by removing the need to switch from the production jars to the debug jars.
ODBC Support for SQL BOOLEAN Data Type
ODBC now supports the new SQL BOOLEAN
data type.
Using the SQL BOOLEAN
data type enables applications to represent the state more clearly.
Oracle Call Interface (OCI) Support for SQL BOOLEAN Data Type
Oracle Call Interface (OCI) now supports querying and binding of the new SQL BOOLEAN
data type.
Using the SQL BOOLEAN
data type enables applications to represent state more clearly.
Precompiler Support for SQL BOOLEAN Data Type
The Pro*C and Pro*COBOL precompilers now support querying and binding of the new SQL BOOLEAN
data type.
Using the new data type makes it easier to represent boolean state in applications instead of using a character column to indicate Y or N.
UCP Asynchronous Extension
Universal connection pool (UCP) is extended with asynchronous (reactive) database calls.
This extension furnishes high scalability and throughput to Java applications.
UCP Support for Self-Driven Diagnosability
The new universal connection pool (UCP) diagnosability feature provides the following capabilities:
- When logging is enabled (it is disabled by default), log records are written into an in-memory ring buffer.
- Tracing is enabled by default. A tracing event dumps the ring buffer into either a data-source-specific buffer or a common buffer.
This feature fosters productivity (for example, real-time debugging) and ease of use for Java applications using the UCP.