Common IBM Data Server Driver for JDBC and SQLJ properties for all supported database products
Most of the IBM Data Server Driver for JDBC and SQLJ properties apply to all database products that the driver supports.
Unless otherwise noted, all properties are in com.ibm.db2.jcc.DB2BaseDataSource.
Those properties are:
- affinityFailbackInterval
- Specifies the length of the interval, in seconds, that the IBM Data Server Driver for JDBC and
SQLJ waits between attempts to fail back an
existing connection to the primary server. A value that is less than or equal to 0 means that the
connection does not fail back. The default is
DB2BaseDataSource.NOT_SET
(0).Attempts to fail back connections to the primary server are made at transaction boundaries after the specified interval elapses.
affinityFailbackInterval is used only if the values of properties enableSeamlessFailover and enableClientAffinitiesList are
DB2BaseDataSource.YES
(1).affinityFailbackInterval applies only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- allowNextOnExhaustedResultSet
- Specifies how the IBM Data Server Driver for JDBC and
SQLJ handles
a ResultSet.next() call for a forward-only cursor
that is positioned after the last row of the ResultSet.
The data type of this property is int.
Possible values are:
DB2BaseDataSource.YES
(1)- For a ResultSet that is defined as TYPE_FORWARD_ONLY, ResultSet.next() returns false if the cursor was previously positioned after the last row of the ResultSet. ResultSet.next() returns false, regardless of whether the cursor is open or closed.
DB2BaseDataSource.NO
(2)- For a ResultSet that is defined as TYPE_FORWARD_ONLY, when ResultSet.next() is called, and the cursor was previously positioned after the last row of the ResultSet, the driver throws a java.sql.SQLException with error text "Invalid operation: result set is closed." This value is the default.
- allowNullResultSetForExecuteQuery
- Specifies whether the IBM Data Server Driver for JDBC and
SQLJ returns
null when Statement.executeQuery, PreparedStatement.executeQuery,
or CallableStatement.executeQuery is used to execute
a CALL statement for a stored procedure that does not return any result
sets.
Possible values are:
DB2BaseDataSource.NOT_SET
(0)- The behavior is the same as for
DB2BaseDataSource.NO
. DB2BaseDataSource.YES
(1)- The IBM Data Server Driver for JDBC and SQLJ returns null when Statement.executeQuery, PreparedStatement.executeQuery, or CallableStatement.executeQuery is used to execute a CALL statement for a stored procedure that does not return any result sets. This behavior does not conform to the JDBC standard.
DB2BaseDataSource.NO
(2)- The IBM Data Server Driver for JDBC and SQLJ throws an SQLException when Statement.executeQuery, PreparedStatement.executeQuery, or CallableStatement.executeQuery is used to execute a CALL statement for a stored procedure that does not return any result sets. This behavior conforms to the JDBC standard.
- atomicMultiRowInsert
- Specifies whether batch operations that use PreparedStatement methods to
modify a table are atomic or non-atomic. The data type of this property is
int.
For connections to Db2® for z/OS®, this property applies only to batch INSERT operations.
For connections to Db2 on Linux®, UNIX, and Windows systems or IBM Informix®, this property applies to batch INSERT, MERGE, UPDATE, or DELETE operations.
Possible values are:
- DB2BaseDataSource.YES (1)
- Batch operations are atomic. Insertion of all rows in the batch is considered to be a single
operation. If insertion of a single row fails, the entire operation fails with a
BatchUpdateException. Use of a batch statement that returns auto-generated keys
fails with a BatchUpdateException.If atomicMultiRowInsert is set to
DB2BaseDataSource.YES
(1):- If the target data source is Db2 for z/OS
the following operations are not allowed:
- Insertion of more than 32767 rows in a batch results in a BatchUpdateException.
- Calling more than one of the following methods against the same parameter in different rows
results in a BatchUpdateException:
- PreparedStatement.setAsciiStream
- PreparedStatement.setCharacterStream
- PreparedStatement.setUnicodeStream
- If the target data source is Db2 for z/OS
the following operations are not allowed:
- DB2BaseDataSource.NO (2)
- Batch inserts are non-atomic. Insertion of each row is considered to be a separate execution.
Information on the success of each insert operation is provided by the
int[]
array that is returned by Statement.executeBatch. - DB2BaseDataSource.NOT_SET (0)
- Batch inserts are non-atomic. Insertion of each row is considered to be a separate execution.
Information on the success of each insert operation is provided by the
int[]
array that is returned by Statement.executeBatch. This value is the default.
- autocommit
- Sets the default autocommit value for a Connection or DataSource instance. All connections that are derived from a DataSource inherit the autocommit property set on the DataSource.
- blockingReadConnectionTimeout
- The amount of time in seconds before a connection socket read times out. This property applies only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity, and affects all requests that are sent to the data source after a connection is successfully established. The default is 0. A value of 0 means that there is no timeout.
- clientBidiStringType
-
Used if enableBidiLayoutTransformation is enabled. Specifies the string type that is used by the client application. Possible values for the property and their corresponding text attributes are specified in the following table:
Table 1. String type values and corresponding attributes for the clientBidiStringType and serverBidiStringType properties Text Attributes String type value integer constant String type value Type of text Orientation Symmetric swapping Numeral shape Text shapes 4 DB2BaseDataSource.BIDI_ST4
Visual Left-to-right No Nominal Shaped 5 DB2BaseDataSource.BIDI_ST5
Implicit Left-to-right Yes Nominal Nominal 6 DB2BaseDataSource.BIDI_ST6
Implicit Right-to-left Yes Nominal Nominal 7 DB2BaseDataSource.BIDI_ST7
Visual Right-to-left No Nominal Shaped 8 DB2BaseDataSource.BIDI_ST8
Visual Right-to-left No Nominal Shaped 9 DB2BaseDataSource.BIDI_ST9
Implicit Right-to-left Yes Nominal Shaped 10 DB2BaseDataSource.BIDI_ST10
Implicit Contextual left-to-right Yes Nominal Nominal 11 DB2BaseDataSource.BIDI_ST11
Implicit Contextual right-to-left Yes Nominal Nominal - clientDebugInfo
- Specifies a value for the CLIENT DEBUGINFO connection attribute to notify the data server that
stored procedures and user-defined functions that are using the connection are running in debug
mode. CLIENT DEBUGINFO is used by the Db2
Unified Debugger. The data type of this property is String. The maximum length is 254 bytes.
This property applies only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- clientRerouteAlternateServerName
- Specifies one or more server names for client reroute. The data type of this property is String.
When enableClientAffinitiesList=DB2BaseDataSource.YES (1), clientRerouteAlternateServerName must contain the name of the primary server as well as alternate server names. The server that is identified by serverName and portNumber is the primary server. That server name must appear at the beginning of the clientRerouteAlternateServerName list.
If more than one server name is specified, delimit the server names with commas (,) or spaces. The number of values that is specified for clientRerouteAlternateServerName must match the number of values that is specified for clientRerouteAlternatePortNumber.
clientRerouteAlternateServerName applies to:
- IBM Data Server Driver for JDBC and SQLJ type 4 connectivity to all supported database products
- IBM Data Server Driver for JDBC and SQLJ type 2 connectivity to Db2 on Linux, UNIX, and Windows systems
- clientRerouteAlternatePortNumber
- Specifies one or more port numbers for client reroute. The data type of this property is String.
When
enableClientAffinitiesList=DB2BaseDataSource.YES
(1), clientRerouteAlternatePortNumber must contain the port number for the primary server as well as port numbers for alternate servers. The server that is identified by serverName and portNumber is the primary server. That port number must appear at the beginning of the clientRerouteAlternatePortNumber list.If more than one port number is specified, delimit the port numbers with commas (,) or spaces. The number of values that is specified for clientRerouteAlternatePortNumber must match the number of values that is specified for clientRerouteAlternateServerName.
clientRerouteAlternatePortNumber applies to:
- IBM Data Server Driver for JDBC and SQLJ type 4 connectivity to all supported database products
- IBM Data Server Driver for JDBC and SQLJ type 2 connectivity to Db2 on Linux, UNIX, and Windows systems
- clientRerouteServerListJNDIName
- Identifies a JNDI reference to a DB2ClientRerouteServerList instance
in a JNDI repository of reroute server information. clientRerouteServerListJNDIName
applies only to IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity,
and to connections that are established through the DataSource interface.If the value of clientRerouteServerListJNDIName is not null, clientRerouteServerListJNDIName provides the following functions:
- Allows information about reroute servers to persist across JVMs
- Provides an alternate server location if the first connection to the data source fails
- clientRerouteServerListJNDIContext
- Specifies the JNDI context that is used for binding and lookup of the
DB2ClientRerouteServerList instance. clientRerouteServerListJNDIContext applies
only to IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity, and to connections that
are established through the DataSource interface.
If clientRerouteServerListJNDIContext is not set, the IBM Data Server Driver for JDBC and SQLJ creates an initial context by using system properties or the jndi.properties file.
clientRerouteServerListJNDIContext can be set only by using the following method:public void setClientRerouteServerListJNDIContext(javax.naming.Context registry)
- commandTimeout
- Specifies the maximum time in seconds that an application that runs under the IBM Data Server Driver for JDBC and
SQLJ waits for SQL operations to complete
before the driver throws an SQLException. The wait time includes time to obtain a
transport, perform failover if needed, send the request, and wait for a response. The data type of
this parameter is int. The default is 0, which means that there is no
timeout.
If the java.sql.Statement.setQueryTimeout method is invoked, the query timeout value that is set through Statement.setQueryTimeout overrides the commandTimeout value.
commandTimeout applies to the execution of Statement, PreparedStatement, and CallableStatement methods execute, executeQuery, and executeUpdate. commandTimeout also applies to the executeBatch method if property queryTimeoutInterruptProcessingMode has the value INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2).
The SQL error code that is returned with the SQLException depends on the data server and the value of property queryTimeoutInterruptProcessingMode:
- For IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity to Db2 for z/OS data servers, the
queryTimeoutInterruptProcessingMode value is always
INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2).
- If Sysplex workload balancing is enabled, SQL error code -30108 is returned.
- If automatic client reroute processing is enabled, and Sysplex workload balancing is disabled, SQL error code -4498 is returned.
- If neither Sysplex workload balancing nor automatic client reroute processing is enabled, SQL error code -4499 is returned.
Automatic client reroute processing is not initiated if the commandTimeout value is exceeded.
- For connections to other data servers:
- If the queryTimeoutInterruptProcessingMode value is INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL (1), -952 is returned.
- If the queryTimeoutInterruptProcessingMode value is
INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2):
- If Db2 workload balancing is enabled, SQL error -30108 is returned.
- If automatic client reroute processing is enabled, and Db2 workload is disabled, SQL error -4498 is returned.
- If neither automatic client reroute processing nor Db2 workload is enabled, SQL error -4498 is returned.
If configuration property db2.jcc.enableInetAddressGetHostName is set to true, the following situations might occur:
- Actual wait times might exceed the commandTimeout value. This situation can occur when the driver needs to do several DNS lookup operations to resolve IP addresses to host names. The amount by which the wait time exceeds the commandTimeout value depends on the number of DNS lookup operations, and the amount of time that each DNS lookup operation takes.
- The extra time that is required for DNS lookup operations might cause more timeout conditions than if db2.jcc.enableInetAddressGetHostName is set to false.
- For IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity to Db2 for z/OS data servers, the
queryTimeoutInterruptProcessingMode value is always
INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2).
- connectionCloseWithInFlightTransaction
- Specifies whether the IBM Data Server Driver for JDBC and
SQLJ throws
an SQLException or rolls back a transaction without
throwing an SQLException when a connection is closed
in the middle of the transaction. Possible values are:
- DB2BaseDataSource.NOT_SET (0)
- The behavior is the same as for DB2BaseDataSource.CONNECTION_CLOSE_WITH_EXCEPTION.
- DB2BaseDataSource.CONNECTION_CLOSE_WITH_EXCEPTION (1)
- When a connection is closed in the middle of a transaction, an SQLException with error -4471 is thrown.
- DB2BaseDataSource.CONNECTION_CLOSE_WITH_ROLLBACK (2)
- When a connection is closed in the middle of a transaction, the transaction is rolled back, and no SQLException is thrown.
- DB2BaseDataSource.CONNECTION_CLOSE_WITH_COMMIT (3)
- When a connection is closed in the middle of a transaction, the transaction is committed, and no SQLException is thrown. Use this option only when migrating applications to Db2.
- connectionTimeout
- Specifies the maximum time in seconds that the IBM Data Server Driver for JDBC and
SQLJ waits for a reply from a group of data
servers when the driver attempts to establish a connection. If the driver does not receive a reply
after the amount of time that is specified by connectionTimeout, the driver throws an
SQLException with SQL error code -4499. The data type of this parameter is int.
The default value is
0.
If connectionTimeout is set to a positive value, that value overrides any other timeout values that are set on a connection, such as loginTimeout. A connection is attempted to the member of the group of data servers with the greatest load capacity. If none of the members are up, a connection is attempted to the group IP address that is specified on the DataSource. If the connection cannot be established with any of the data servers within the amount of time that is specified by connectionTimeout, an SQLException is thrown.
If connectionTimeout is set to 0, and automatic client reroute is not enabled, there is no time limit.
If connectionTimeout is set to 0, and automatic client reroute is enabled against a Db2 for z/OS data sharing group, Db2 pureScale® instance, or IBM Informix high availability cluster, automatic client reroute properties such as maxRetriesForClientReroute and retryIntervalForClientReroute control the amount of time that is needed to establish the connection.
If configuration property db2.jcc.enableInetAddressGetHostName is set to true, the following situations might occur:
- Actual wait times might exceed the connectionTimeout value. This situation can occur when the driver needs to do several DNS lookup operations to resolve IP addresses to host names. The amount by which the wait time exceeds the connectionTimeout value depends on the number of DNS lookup operations, and the amount of time that each DNS lookup operation takes.
- The extra time that is required for DNS lookup operations might cause more timeout conditions than if db2.jcc.enableInetAddressGetHostName is set to false.
- databaseName
- Specifies the name for the data source. This name is used as the database portion
of the connection URL. The name depends on whether IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity or IBM Data Server Driver for JDBC and
SQLJ type 2 connectivity is
used. For IBM Data Server Driver for JDBC and SQLJ type 4 connectivity:
- If the connection is to a Db2 for z/OS
server, the databaseName value is the Db2
location name that is defined during installation. All characters in this value must be uppercase
characters. You can determine the location name by executing the following SQL statement on the
server:
SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1;
- If the connection is to a Db2 on Linux, UNIX, and Windows systems server, the databaseName value is the database name that is defined during installation.
- If the connection is to an IBM Informix server, database is the database name. The name is case-insensitive. The server converts the name to lowercase.
- If the connection is to an IBM
Cloudscape server, the databaseName
value is the fully qualified name of the file that contains the database. This name must be enclosed
in double quotation marks ("). For example:
"c:/databases/testdb"
For IBM Data Server Driver for JDBC and SQLJ type 2 connectivity:- The databaseName value is the database name that is defined during installation, if the value of the serverName connection property is null. If the value of serverName property is not null, the databaseName value is a database alias.
- If the connection is to a Db2 for z/OS
server, the databaseName value is the Db2
location name that is defined during installation. All characters in this value must be uppercase
characters. You can determine the location name by executing the following SQL statement on the
server:
- decimalSeparator
- Specifies the decimal separator for input and output, for decimal, floating point, or decimal
floating-point data values. The data type of this property is int.
If the value of the sendDataAsIs property is true, decimalSeparator affects only output values.
Possible values are:
DB2BaseDataSource.DECIMAL_SEPARATOR_NOT_SET
(0)- A period is used as the decimal separator. This value is the default.
DB2BaseDataSource.DECIMAL_SEPARATOR_PERIOD
(1)- A period is used as the decimal separator.
DB2BaseDataSource.DECIMAL_SEPARATOR_COMMA
(2)- A comma is used as the decimal separator.
When DECIMAL_SEPARATOR_COMMA is set, the result of ResultSet.getString on a decimal, floating point, or decimal floating-point value has a comma as a separator. However, if the toString method is executed on a value that is retrieved with a ResultSet.getXXX method that returns a decimal, floating point, or decimal floating-point value, the result has a decimal point as the decimal separator.
- decimalStringFormat
- Specifies the string format for data that is retrieved from a
DECIMAL or DECFLOAT column when the SDK for Java™ is Version 1.5 or later. The data type
of this property is int. Possible values are:
DB2BaseDataSource.DECIMAL_STRING_FORMAT_NOT_SET
(0)- The IBM Data Server Driver for JDBC and
SQLJ returns decimal values in
the format that the java.math.BigDecimal.toString method returns them. This value
is the default.
For example, the value 0.0000000004 is returned as 4E-10.
DB2BaseDataSource.DECIMAL_STRING_FORMAT_TO_STRING
(1)- The IBM Data Server Driver for JDBC and
SQLJ returns
decimal values in the format that the java.math.BigDecimal.toString method
returns them.
For example, the value 0.0000000004 is returned as 4E-10.
DB2BaseDataSource.DECIMAL_STRING_FORMAT_TO_PLAIN_STRING
(2)- The IBM Data Server Driver for JDBC and
SQLJ returns
decimal values in the format that the java.math.BigDecimal.toPlainString method
returns them.
For example, the value 0.0000000004 is returned as 0.0000000004.
This property has no effect for earlier versions of the SDK for Java. For those versions, the IBM Data Server Driver for JDBC and SQLJ returns decimal values in the format that the java.math.BigDecimal.toString method returns them.
- defaultIsolationLevel
- Specifies the default transaction isolation level for new connections. The data type of this
property is int. When defaultIsolationLevel is set on a DataSource, all
connections that are created from that DataSource have the default isolation
level that is specified by defaultIsolationLevel.
For Db2 data sources, the default is
java.sql.Connection.TRANSACTION_READ_COMMITTED
.For IBM Informix databases, the default depends on the type of data source. The following table shows the defaults.
Table 2. Default isolation levels for IBM Informix databases Type of data source Default isolation level ANSI-compliant database with logging java.sql.Connection.TRANSACTION_SERIALIZABLE Database without logging java.sql.Connection.TRANSACTION_READ_UNCOMMITTED Non-ANSI-compliant database with logging java.sql.Connection.TRANSACTION_READ_COMMITTED - deferPrepares
- Specifies whether invocation of the Connection.prepareStatement method
results in immediate preparation of an SQL statement on the data source,
or whether statement preparation is deferred until the PreparedStatement.execute method
is executed. The data type of this property is boolean.
deferPrepares is supported for IBM Data Server Driver for JDBC and SQLJ type 2 connectivity to Db2 on Linux, UNIX, and Windows systems, and for IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
Possible values are:- true
- Statement preparation on the data source does not occur until the PreparedStatement.execute method is executed. This value is the default.
- false
- Statement preparation on the data source occurs when the Connection.prepareStatement method is executed.
Deferring prepare operations can reduce network delays. However, if you defer prepare operations, you need to ensure that input data types match table column types.
- description
- A description of the data source. The data type of this property is String.
- downgradeHoldCursorsUnderXa
- Specifies whether cursors that are defined WITH HOLD can be opened under XA
connections.downgradeHoldCursorsUnderXa applies to:
- IBM Data Server Driver for JDBC and SQLJ type 4 connectivity to Db2 for z/OS servers.
- IBM Data Server Driver for JDBC and SQLJ type 4 connectivity or IBM Data Server Driver for JDBC and SQLJ type 2 connectivity to Db2 on Linux, UNIX, and Windows systems servers.
The default is false, which means that a cursor that is defined WITH HOLD cannot be opened under an XA connection. An exception is thrown when an attempt is made to open that cursor.
If downgradeHoldCursorsUnderXa is set to true, a cursor that is defined WITH HOLD can be opened under an XA connection. However, the cursor has the following restrictions:- When the cursor is opened under an XA connection, the cursor does not have WITH HOLD behavior. The cursor is closed at XA End.
- A cursor that is open before XA Start on a local transaction is closed at XA Start.
- driverType
- For the DataSource interface, determines which driver to use for connections. The data type of this property is int. Valid values are 2 or 4. 2 is the default.
- enableClientAffinitiesList
- Specifies whether the IBM Data Server Driver for JDBC and
SQLJ enables client affinities for cascaded failover support. The data type of this property is int. Possible values are:
DB2BaseDataSource.YES
(1)- The IBM Data Server Driver for JDBC and
SQLJ enables client affinities for cascaded failover support. Therefore, only servers that are specified in the clientRerouteAlternateServerName and clientRerouteAlternatePortNumber properties are retried. The driver does not attempt to reconnect to any other servers.
For example, suppose that clientRerouteAlternateServerName contains the following string:
Also suppose that clientRerouteAlternatePortNumber contains the following string:host1,host2,host3
port1,port2,port3
When client affinities are enabled, the retry order is:- host1:port1
- host2:port2
- host3:port3
DB2BaseDataSource.NO
(2)- The IBM Data Server Driver for JDBC and SQLJ does not enable client affinities for cascaded failover support.
DB2BaseDataSource.NOT_SET
(0)- The IBM Data Server Driver for JDBC and SQLJ does not enable client affinities for cascaded failover support. This value is the default.
This property applies only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- enableNamedParameterMarkers
- Specifies whether support for named parameter markers is enabled
in the IBM Data Server Driver for JDBC and
SQLJ.
The data type of this property is int. Possible values are:
DB2BaseDataSource.YES
(1)- Named parameter marker support is enabled in the IBM Data Server Driver for JDBC and SQLJ.
DB2BaseDataSource.NO
(2)- Named parameter marker support is not enabled in the IBM Data Server Driver for JDBC and
SQLJ. The driver sends an SQL statement with named parameter markers to the target data source without modification. The success or failure of the statement depends on a number of factors, including the following ones:
- Whether the target data source supports named parameter markers.
- Whether the deferPrepares property value is true or false.
- Whether the sendDataAsIs property value is true or false.
Recommendation: To avoid unexpected behavior in an application that uses named parameter markers, set enableNamedParameterMarkers to YES. DB2BaseDataSource.NOT_SET
(0)- The behavior is the same as the behavior for
DB2BaseDataSource.NO
(2). This value is the default.
- enableBidiLayoutTransformation
-
Specifies whether the driver needs to perform BiDi (bidirectional) Layout transformation on SQL statements, input parameters, or data received from the database. The data type of this property is boolean and the default value is false.
- enableSeamlessFailover
- Specifies whether the IBM Data Server Driver for JDBC and
SQLJ uses
seamless failover for client reroute. The data type of this property is int.
For connections to Db2 for z/OS, if enableSysplexWLB is set to true, enableSeamlessFailover has no effect. The IBM Data Server Driver for JDBC and SQLJ uses seamless failover regardless of the enableSeamlessFailover setting.
Possible values of enableSeamlessFailover are:
DB2BaseDataSource.YES
(1)- The IBM Data Server Driver for JDBC and
SQLJ uses seamless failover.
Therefore, the driver does not throw an SQLException with SQL error code -4498,
after a failed connection is reestablished, if the following conditions are true:
- The connection was not being used for a transaction at the time the failure occurred.
- There are no outstanding global resources, such as global temporary tables or open, held cursors, or connection states that prevent a seamless failover to another server.
When seamless failover occurs after the connection to a new data source is established, the driver reissues the SQL statement that was being processed when the original connection failed.
Recommendation: Set the queryCloseImplicit property to
DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_NO
(2) when you set enableSeamlessFailover toDB2BaseDataSource.YES
, if the application uses held cursors. DB2BaseDataSource.NO
(2)- The IBM Data Server Driver for JDBC and
SQLJ does not use seamless
failover.
When this setting is in effect, if a server goes down, the driver tries to fail back or fail over to an alternate server. If failover or failback is successful, the driver throws an SQLException with SQL error code -4498, which indicates that a connection failed but was successfully reestablished. An SQLException with SQL error code -4498 informs the application that it must retry the transaction during which the connection failure occurred. If the driver cannot reestablish a connection, it throws an SQLException with SQL error code -4499.
DB2BaseDataSource.NOT_SET
(0)- The IBM Data Server Driver for JDBC and SQLJ does not use seamless failover. This value is the default.
- enableSysplexWLB
- Indicates whether the Sysplex workload balancing function of the IBM Data Server Driver for JDBC and
SQLJ is enabled. The data type of enableSysplexWLB is boolean. The default is false.
enableSysplexWLB is supported only for IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
For connections to Db2 on Linux, UNIX, and Windows systems, enableSysplexWLB can have a value of
true
only if the servers are in a pureScale environment. For other supported database products, enableSysplexWLB can have a value oftrue
only if the servers have Sysplex workload balancing enabled. - fetchSize
- Specifies the default fetch size for ResultSet objects that are generated
from Statement objects. The data type of this property is int.
The fetchSize default can be overridden by the Statement.setFetchSize method. The fetchSize property does not affect Statement objects that exist when fetchSize is set.
Possible values of fetchSize are:
- 0 or positive-integer
- The default fetchSize value for newly created Statement objects. If the fetchSize property value is invalid, the IBM Data Server Driver for JDBC and SQLJ sets the default fetchSize value to 0.
- DB2BaseDataSource.FETCHSIZE_NOT_SET (-1)
- Indicates that the default fetchSize value for Statement objects is 0. This value is the property default.
The fetchSize property differs from the queryDataSize property. fetchSize affects the number of rows that are returned, and queryDataSize affects the number of bytes that are returned.
- fullyMaterializeLobData
- Indicates whether the driver retrieves LOB locators for FETCH operations. The data type of this
property is boolean. The effect of fullyMaterializeLobData depends on whether the data source supports progressive streaming, which is also known as dynamic data format:
- If the data source does not support progressive streaming:
If the value of fullyMaterializeLobData is true, LOB data is fully materialized within the JDBC driver when a row is fetched. If the value is false, LOB data is streamed. The driver uses locators internally to retrieve LOB data in chunks as needed. It is highly recommended that you set this value to false when you retrieve LOBs that contain large amounts of data. The default is true.
- If the data source supports progressive streaming:
The JDBC driver ignores the value of fullyMaterializeLobData if the progressiveStreaming property is set to
DB2BaseDataSource.YES
orDB2BaseDataSource.NOT_SET
.
This property has no effect on stored procedure parameters or on LOBs that are fetched by using scrollable cursors. LOB stored procedure parameters are always fully materialized. LOBs that are fetched by using scrollable cursors use LOB locators if progressive streaming is not in effect.
- If the data source does not support progressive streaming:
- implicitRollbackOption
- Specifies the actions that the IBM Data Server Driver for JDBC and
SQLJ takes
when a transaction encounters a deadlock or a timeout. Possible values
are:
DB2BaseDataSource.IMPLICIT_ROLLBACK_OPTION_NOT_CLOSE_CONNECTION
(1)- The IBM Data Server Driver for JDBC and SQLJ throws an SQLException with an SQL error code that indicates that a deadlock or timeout occurred. The SQL error code is the SQL error code that is generated by the data server after a deadlock or timeout. The driver does not close the connection.
DB2BaseDataSource.IMPLICIT_ROLLBACK_OPTION_CLOSE_CONNECTION
(2)- The IBM Data Server Driver for JDBC and SQLJ throws a DisconnectException with SQL error code -4499 when a deadlock or timeout occurs. The driver closes the connection. If automatic client reroute or Sysplex workload balancing is enabled, the driver disables automatic failover behavior.
DB2BaseDataSource.IMPLICIT_ROLLBACK_OPTION_NOT_SET
(0)- This value is the default. The IBM Data Server Driver for JDBC and SQLJ throws an SQLException with an SQL error code that indicates that a deadlock or timeout occurred. The SQL error code is the SQL error code that is generated by the data server after a deadlock or timeout. The driver does not close the connection.
- interruptProcessingMode
- Specifies the behavior of the IBM Data Server Driver for JDBC and
SQLJ
when an application executes the Statement.cancel method. Possible values are:
DB2BaseDataSource.INTERRUPT_PROCESSING_MODE_DISABLED
(0)- Interrupt processing is disabled. When an application executes Statement.cancel, the IBM Data Server Driver for JDBC and SQLJ does nothing.
DB2BaseDataSource.INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL
(1)- When an application executes Statement.cancel, the IBM Data Server Driver for JDBC and SQLJ cancels the currently executing statement, if the data server supports interrupt processing. If the data server does not support interrupt processing, the IBM Data Server Driver for JDBC and SQLJ throws an SQLException that indicates that the feature is not supported. INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL is the default.
DB2BaseDataSource.INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET
(2)- When an application executes Statement.cancel, the IBM Data Server Driver for JDBC and
SQLJ drops the underlying socket. The
connection is not closed and can be reused to resubmit the statement. When the connection is reused,
the driver obtains a new socket.
For connections to Db2 for z/OS data servers, the IBM Data Server Driver for JDBC and SQLJ always uses this value, regardless of the value that is specified.
If interruptProcessingMode is set to
DB2BaseDataSource.INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL
orDB2BaseDataSource.INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET
, and Statement.cancel is executed while an application is executing a method on a ResultSet object, the operation on the ResultSet object might not be canceled. When the Statement.cancel statement is executed, if the underlying processing for the ResultSet method is in the data server, execution of the operation is canceled. If the underlying processing for the ResultSet method is in the driver, execution of the operation is not canceled. - keepAliveTimeOut
- The maximum time in seconds before each TCP KeepAlive signal is sent to the data server. The
data type of this property is int. The default is 15 seconds.
IBM Data Server Driver for JDBC and SQLJ type 4 connectivity uses the TCP/IP protocol to communicate with data servers. To prevent potential failover issues that are caused by timeouts within the TCP/IP layer, it is necessary to adjust the TCP/IP KeepAlive parameters on the client. Decreasing the KeepAlive values on the client improves timely detection of server failures.
A value of 0 means that the timeout value is the default system timeout value.
keepAliveTimeOut is supported only for IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- loginTimeout
- The maximum time in seconds to wait for a connection to a data source. After the number of seconds that are specified by loginTimeout have elapsed, the driver closes the connection to the data source. The data type of this property is int. The default is 0. A value of 0 means that the timeout value is the default system timeout value. This property is not supported for IBM Data Server Driver for JDBC and
SQLJ type 2 connectivity on Db2 for z/OS.
If the data server environment is a Db2 pureScale environment, the wait time for a connection is determined by a combination of loginTimeout, maxRetriesForClientReroute, and retryIntervalForClientReroute. loginTimeout determines only the time for a single attempt to establish a connection to a data server. There might be multiple attempts to establish a connection, based on the maxRetriesForClientReroute value. There might also be gaps between attempts to establish a connection, based on the retryIntervalForClientReroute value.
During automatic client reroute processing, the memberConnectTimeout property takes precedence over the loginTimeout property.
- logWriter
- The character output stream to which all logging and trace messages for the DataSource object are printed. The data type of this property is java.io.PrinterWriter. The default value is null, which means that no logging or tracing for the DataSource is output.
- maxStatements
- Controls an internal statement cache that is associated with a Connection.
The data type of this property is int. Possible values are:
- positive integer
- Enables the internal statement cache for a Connection, and specifies the number of statements that the IBM Data Server Driver for JDBC and SQLJ keeps open in the cache.
- 0 or negative integer
- Disables internal statement caching for the Connection. 0 is the default.
com.ibm.db2.jcc.DB2SimpleDataSource.maxStatements controls the internal statement cache that is associated with a Connection only when the Connection object is created. com.ibm.db2.jcc.DB2SimpleDataSource.maxStatements has no effect on caching in an existing Connection object.
com.ibm.db2.jcc.DB2SimpleDataSource.maxStatements applies only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- password
- The password to use for establishing connections. The data type
of this property is String. When you use the DataSource interface
to establish a connection, you can override this property value by
invoking this form of the DataSource.getConnection method:
getConnection(user, password);
- portNumber
- The port number where the DRDA server is listening for requests. The data type of this property is int.
- progressiveStreaming
- Specifies whether the JDBC driver uses progressive streaming when progressive streaming is
supported on the data source.
Db2 for z/OS Version 9.1 and later supports progressive streaming for LOBs and XML objects. Db2 on Linux, UNIX, and Windows systems Version 9.5 and later, and IBM Informix Version 11.50 and later support progressive streaming for LOBs.
With progressive streaming, also known as dynamic data format, the data source dynamically determines the most efficient mode in which to return LOB or XML data. This step is based on the size of the LOBs or XML objects. The value of the streamBufferSize parameter determines whether the data is materialized when it is returned.
The data type of progressiveStreaming is int. Valid values are
DB2BaseDataSource.YES
(1) andDB2BaseDataSource.NO
(2). If the progressiveStreaming property is not specified, the progressiveStreaming value isDB2BaseDataSource.NOT_SET
(0).If the connection is to a data source that supports progressive streaming, and the value of progressiveStreaming is
DB2BaseDataSource.YES
orDB2BaseDataSource.NOT_SET
, the JDBC driver uses progressive streaming to return LOBs and XML data.If the value of progressiveStreaming is
DB2BaseDataSource.NO
, or the data source does not support progressive streaming, the way in which the JDBC driver returns LOB or XML data depends on the value of the fullyMaterializeLobData property. - queryCloseImplicit
- Specifies whether cursors are closed immediately after all rows are fetched. queryCloseImplicit
applies only to connections to IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity to
z/OS Version 8 or later, and IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity or
IBM Data Server Driver for JDBC and
SQLJ type 2 connectivityDb2 on Linux, UNIX, and Windows systems Version 9.7 or later. Possible values are:
- DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_YES (1)
- Close cursors immediately after all rows are fetched.
A value of
DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_YES
can provide better performance because this setting results in less network traffic. - DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_NO (2)
- Do not close cursors immediately after all rows are fetched.
- DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_COMMIT (3)
- Perform these actions:
- Implicitly close the cursor after all rows are fetched.
- If the application is in autocommit mode, implicitly send a commit request to the data source for the current unit of work.
Important: When this value is set, there might be impacts on other resources, just as an explicit commit operation might impact other resources. For example, other non-held cursors are closed, LOB locators go out of scope, progressive references are reset, and scrollable cursors lose their position.Restriction: The following restrictions apply to QUERY_CLOSE_IMPLICIT_COMMIT behavior:- This behavior applies only to SELECT statements that are issued by the application. It does not apply to SELECT statements that are generated by the IBM Data Server Driver for JDBC and SQLJ.
- If QUERY_CLOSE_IMPLICIT_COMMIT is set, and the application is not in autocommit mode, the driver uses the default behavior (QUERY_CLOSE_IMPLICIT_NOT_SET behavior). If QUERY_CLOSE_IMPLICIT_COMMIT is the default behavior, the driver uses QUERY_CLOSE_IMPLICIT_YES behavior.
- If QUERY_CLOSE_IMPLICIT_COMMIT is set, and the data source does not support QUERY_CLOSE_IMPLICIT_COMMIT behavior, the driver uses QUERY_CLOSE_IMPLICIT_YES behavior.
- This behavior is not supported for batched statements.
- This behavior is supported on an XA Connection only when the connection is in a local transaction.
- DB2BaseDataSource.QUERY_CLOSE_IMPLICIT_NOT_SET (0)
- This value is the default. The following table describes the behavior for a connection to each
type of data source.
Data source Version Data sharing environment Behavior Db2 for z/OS Version 10 Data sharing or non-data sharing QUERY_CLOSE_IMPLICIT_COMMIT Db2 for z/OS Version 9 with APAR PK68746 Non-data sharing, or in a data sharing group but not in coexistence mode with Version 8 members QUERY_CLOSE_IMPLICIT_COMMIT Db2 for z/OS Version 9 without APAR PK68746 Non-data sharing, or in a data sharing group but not in coexistence mode with Version 8 members QUERY_CLOSE_IMPLICIT_YES Db2 for z/OS Version 9 with APAR PK68746 In a data sharing group in coexistence mode with Version 8 members QUERY_CLOSE_IMPLICIT_COMMIT Db2 for z/OS Version 9 without APAR PK68746 In a data sharing group in coexistence mode with Version 8 members QUERY_CLOSE_IMPLICIT_YES Db2 for z/OS Version 8 with or without APAR PK68746 QUERY_CLOSE_IMPLICIT_YES Db2 on Linux, UNIX, and Windows systems Version 9.7 QUERY_CLOSE_IMPLICIT_YES
- queryDataSize
- Specifies a hint that is used to control the amount of query data, in bytes, that is returned from the data source on each fetch operation. This value can be used to optimize the application by controlling the number of trips to the data source that are required to retrieve data.
Use of a larger value for queryDataSize can result in less network traffic, which can result in better performance. For example, if the result set size is 50 KB, and the value of queryDataSize is 32767 (32 KB), two trips to the database server are required to retrieve the result set. However, if queryDataSize is set to 65535 (64 KB), only one trip to the data source is required to retrieve the result set.
The following table lists minimum, maximum, and default values of queryDataSize for each data source.
- queryTimeoutInterruptProcessingMode
- Specifies what happens when the query timeout interval for a Statement object
expires. Valid values are:
- DB2BaseDataSource.INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL (1)
- Specifies that when the query timeout interval for a Statement object
expires, the IBM Data Server Driver for JDBC and
SQLJ cancels the
currently executing SQL statement. The IBM Data Server Driver for JDBC and
SQLJ also throws an exception with SQL error
-952, if the data server supports the interruption of SQL statements. If the data server does not
support the interruption of SQL statements, the driver throws an exception that indicates that the
feature is not supported.
For connections to data servers other than Db2 for z/OS, INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL is the default.
For connections to Db2 for z/OS data servers, INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL is not a possible value. If it is specified, the driver uses INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET instead.
- DB2BaseDataSource.INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2)
- When the queryTimeout interval for a Statement object expires, one of the following actions occurs:
- For IBM Data Server Driver for JDBC and SQLJ type 4 connectivity, the underlying socket is dropped and the connection is closed.
- For IBM Data Server Driver for JDBC and SQLJ type 2 connectivity on Db2 for z/OS, the data server issues a CANCEL THREAD LOCAL command and terminates the underlying RRSAF thread. As a result, the connection is closed.
- For IBM Data Server Driver for JDBC and SQLJ type 2 connectivity on Db2 on Linux, UNIX, and Windows systems, DB2BaseDataSource.INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET is not supported. An exception with SQL error -4450 is thrown.
For connections to data servers other than Db2 for z/OS, when the Statement object times out:
- If automatic client reroute is not enabled and enableSysplexWLB is set to false, an exception with SQL error code -4499 is thrown. Any subsequent operations on the Statement object, or on any other Statement objects that were created from the same connection receive an Exception that indicates that the connection is closed. After a Statement object times out, the application must establish a new connection before it can execute a new transaction.
- If automatic client reroute is enabled, and enableSysplexWLB is set to false, the IBM Data Server Driver for JDBC and
SQLJ tries to reestablish a connection. If a new connection is successfully reestablished, the driver returns an SQL error code of -4498. However, the driver does not execute the timed-out SQL statements again, even if enableSeamlessFailover is set to
DB2BaseDataSource.YES
(1). - If enableSysplexWLB is set to true, the IBM Data Server Driver for JDBC and
SQLJ tries to reestablish a connection. If a new connection is successfully reestablished, the driver returns an SQL error code of -30108. However, the driver does not execute the timed-out SQL statements again, even if enableSeamlessFailover is set to
DB2BaseDataSource.YES
(1).
For connections to Db2 for z/OS, when the Statement object times out:
- If enableSysplexWLB is set to false, an exception with SQL error code -4499 is thrown. Any subsequent operations on the Statement object, or on any other Statement objects that were created from the same connection receive an Exception that indicates that the connection is closed. After a Statement object times out, the application must establish a new connection before it can execute a new transaction.
- If enableSysplexWLB is set to true, the IBM Data Server Driver for JDBC and SQLJ tries to reestablish a connection. If a new connection is successfully reestablished, the driver returns an SQL error code of -30108. However, the driver does not execute the timed-out SQL statements again, even if enableSeamlessFailover is set to DB2BaseDataSource.YES (1).
- resultSetHoldability
- Specifies whether cursors remain open after a commit operation.
The data type of this property is int. Valid values are:
- DB2BaseDataSource.HOLD_CURSORS_OVER_COMMIT (1)
- Leave cursors open after a commit operation.
This setting is not valid for a connection that is part of a distributed (XA) transaction.
- DB2BaseDataSource.CLOSE_CURSORS_AT_COMMIT (2)
- Close cursors after a commit operation.
- DB2BaseDataSource.NOT_SET (0)
- This value is the default. The behavior is:
- For connections that are part of distributed (XA) transactions, cursors are closed after a commit operation.
- For connections that are not part of a distributed transaction:
- For connections to all versions of Db2 for z/OS, Db2 on Linux, UNIX, and Windows systems, or Db2 for IBM i servers, or to Cloudscape Version 8.1 or later servers, cursors remain open after a commit operation.
- For connections to all versions of IBM Informix, or to Cloudscape versions earlier than Version 8.1, cursors are closed after a commit operation.
- retrieveMessagesFromServerOnGetMessage
- Specifies whether JDBC SQLException.getMessage or
SQLWarning.getMessage calls cause the IBM Data Server Driver for JDBC and
SQLJ to invoke a Db2 for z/OS stored procedure that retrieves the
message text for the error. The data type of this property is boolean. The default is
false, which means that the full message text is not returned to the client.For example, if retrieveMessagesFromServerOnGetMessage is set to true, a message similar to this one is returned by SQLException.getMessage after an attempt to perform an SQL operation on nonexistent table ADMF001.NO_TABLE:
ADMF001.NO_TABLE IS AN UNDEFINED NAME. SQLCODE=-204, SQLSTATE=42704, DRIVER=3.50.54
If retrieveMessagesFromServerOnGetMessage is set to false, a message similar to this one is returned:DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, DRIVER=3.50.54
An alternative to setting this property to true is to use only the
DB2Sqlca.getMessage
method for IBM Data Server Driver for JDBC and SQLJ in applications. Both techniques result in a stored procedure call, which starts a unit of work. - securityMechanism
- Specifies the DRDA security mechanism. The data type of this property is int. Possible values are:
CLEAR_TEXT_PASSWORD_SECURITY
(3)- User ID and password
USER_ONLY_SECURITY
(4)- User ID only
ENCRYPTED_PASSWORD_SECURITY
(7)- User ID, encrypted password
ENCRYPTED_USER_AND_PASSWORD_SECURITY
(9)- Encrypted user ID and password
KERBEROS_SECURITY
(11)- Kerberos. This value does not apply to connections to IBM Informix.
ENCRYPTED_USER_AND_DATA_SECURITY
(12)- Encrypted user ID and encrypted security-sensitive data. This value applies to connections to Db2 for z/OS only.
ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY
(13)- Encrypted user ID and password, and encrypted security-sensitive data. This value does not apply to connections to IBM Informix.
PLUGIN_SECURITY
(15)- Plug-in security. This value applies to connections to Db2 on Linux, UNIX, and Windows systems only.
ENCRYPTED_USER_ONLY_SECURITY
(16)- Encrypted user ID. This value does not apply to connections to IBM Informix.
TLS_CLIENT_CERTIFICATE_SECURITY
(18)- Client certificate security, by using SSL. This value applies to connections to Db2 for z/OS Version 10 and later only.
If securityMechanism is specified, the specified security mechanism is the only mechanism that is used. If the security mechanism is not supported by the connection, an exception is thrown.
The default value for securityMechanism is provided by the db2.jcc.securityMechanism configuration property. If the db2.jcc.securityMechanism configuration property is also not specified, the default value for securityMechanism is CLEAR_TEXT_PASSWORD_SECURITY.
If the data server does not support CLEAR_TEXT_PASSWORD_SECURITY but supports ENCRYPTED_USER_AND_PASSWORD_SECURITY, the IBM Data Server Driver for JDBC and SQLJ driver upgrades the security mechanism to ENCRYPTED_USER_AND_PASSWORD_SECURITY and attempts to connect to the server. Any other mismatch in security mechanism support between the requester and the server results in an error.
This property does not apply to IBM Data Server Driver for JDBC and SQLJ type 2 connectivity on Db2 for z/OS.
Security mechanisms ENCRYPTED_PASSWORD_SECURITY, ENCRYPTED_USER_AND_PASSWORD_SECURITY, ENCRYPTED_USER_AND_DATA_SECURITY, ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY, and ENCRYPTED_USER_ONLY_SECURITY use DRDA encryption. DRDA encryption is not intended to provide confidentiality and integrity of passwords or data over a network that is not secure, such as the Internet. DRDA encryption uses an anonymous key exchange, Diffie-Hellman, which does not provide authentication of the server or the client. DRDA encryption is vulnerable to man-in-the-middle attacks.
- sendDataAsIs
- Specifies that the IBM Data Server Driver for JDBC and
SQLJ does not
convert input parameter values to the target column data types. The data type of this property is
boolean. The default is false.
You must use this property only for applications that always ensure that the data types in the application match the data types in the corresponding database tables.
- serverBidiStringType
-
Used if enableBidiLayoutTransformation is enabled. Specifies the string type that is used by the server. The data type of this property is int. serverBidiStringType takes on the same possible values as clientBidiStringType.
- serverName
- The host name or the TCP/IP address of the data source. The data type of this property is String.
- sqljAvoidTimeStampConversion
- Specifies whether the IBM Data Server Driver for JDBC and
SQLJ prevents Java's adjustment of a timestamp value, and returns an unadjusted value during data retrieval, in either of the following cases:
- When the date portion of the value is in the range of October 5, 1582 to October 14, 1582, inclusive.
- When the system on which the data server resides adjusts for daylight saving time. Adjusting for daylight saving time means:
- Moving the clock forward by one hour on a specified date in the spring. The length of that day is 23 hours.
- Moving the clock backward by one hour on a specified date in the fall. The length of that day is 25 hours.
Possible values for sqljAvoidTimeStampConversion are:
- true
- During data retrieval, the a timestamp value is not adjusted.
When you set the sqljAvoidTimeStampConversion property to
true
, you need to use the ResultSet.getString method to retrieve timestamp values in String format. If you use ResultSet methods that specify a Java Calendar parameter and return a Timestamp object, Java application programming interfaces modify the data, and the driver cannot control timestamp conversion. - false
- During data retrieval, a timestamp value is adjusted.
false
is the default.
This property applies to SQLJ and JDBC applications.
- sslCertLocation
- Specifies that an application can configure the location of a trusted certificate file. For
applications that have the database server certificate, sslCertLocation is the only property that is
needed to be configured to instruct IBM Data Server Driver for JDBC and
SQLJ to trust the certificate for SSL connections. This property removes the need to import the
certificate into a Java truststore database and related driver
configurations.
The default value for sslCertLocation is provided by the db2.jcc.sslCertLocation configuration property. If the db2.jcc.sslCertLocation configuration property is not specified, sslTruststoreLocation, and sslCertLocation properties are not configured, and sslConnection is set to true, IBM Data Server Driver for JDBC and SQLJ uses the default truststore for the Java runtime environment.
The sslCertLocation property accepts certificate location values in the following forms:
- File extensions: .arm, .pem, .cert, .crt, and .der.
- Full path to the certificate file: sslCertLocation=/path/to/cert.arm
- Path relative to the current class path:sslCertLocation=classpath:relative/cert.arm
- DER-encoded certificates in binary or Base64 ASCII encoding. If the certificate is provided in
Base64 encoding, the file content must be bound at the beginning by
-----BEGIN CERTIFICATE-----
and at the end by-----END CERTIFICATE-----
.
- sslCipherSuites
-
Specifies the set of cipher suites to use when you establish SSL connections to the server. Configure this property only when you would not like to use the default cipher suites from the JRE (Java Runtime Environment). Specify the names of cipher suites as string values separated by commas.
- sslConnection
- Specifies whether the IBM Data Server Driver for JDBC and
SQLJ uses an
SSL socket to connect to the data source. If sslConnection is set to true, the
connection uses an SSL socket. If sslConnection is set to false, the connection
uses a plain
socket.
The default value for sslConnection is provided by the db2.jcc.sslConnection configuration property. If the db2.jcc.sslConnection configuration property is also not specified, the default value for sslConnection is false.
This property is applicable only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- sslTrustStoreLocation
- Specifies the name of the Java truststore on the client
that contains the server certificate for an SSL connection.
The IBM Data Server Driver for JDBC and SQLJ uses this option only if the sslConnection property is set to true.
If sslTrustStoreLocation is set, and sslConnection is set to true, the IBM Data Server Driver for JDBC and SQLJ uses the sslTrustStoreLocation value instead of the value in the javax.net.ssl.trustStore Java property.
The default value for sslTrustStoreLocation is provided by the db2.jcc.sslTrustStoreLocation configuration property. If the db2.jcc.sslTrustStoreLocation configuration property is also not specified, the default value for sslTrustStoreLocation is null.
This property is applicable only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- sslTrustStorePassword
- Specifies the password for the Java truststore on the
client that contains the server certificate for an SSL connection.
The IBM Data Server Driver for JDBC and SQLJ uses this option only if the sslConnection property is set to true.
If sslTrustStorePassword is set, and sslConnection is set to true, the IBM Data Server Driver for JDBC and SQLJ uses the sslTrustStorePassword value instead of the value in the javax.net.ssl.trustStorePassword Java property.
The default value for sslTrustStorePassword is provided by the db2.jcc.sslTrustStorePassword configuration property. If the db2.jcc.sslTrustStorePassword configuration property is also not specified, the default value for sslTrustStorePassword is null.
This property is applicable only to IBM Data Server Driver for JDBC and SQLJ type 4 connectivity.
- sslTrustStoreType
- Specifies the type of a trusted certificate file. The
sslTrustStoreType
property is for Db2 for z/OS, Db2 on Linux, UNIX, and Windows systems, and IBM Informix of a T4 SSL connection.The default value of
sslTrustStoreType
is NULL (NOT SET). IfsslTrustStoreType
is NULL, then the JRE’s default trust store type is applied to load the trust Store file for the SSL connection. - sslVersion
- Specifies the version that the application can configure to enable the driver for TLS protocol
level for an SSL connection. The default value of
sslVersion
is null (not set). IfsslVersion
is not defined on the Connection or Data Source object, then the JRE's default TLS level or SSL version is applied for the SSL connection.The property
sslVersion
applies only to Db2 for z/OS, Db2 on Linux, UNIX, and Windows systems, and IBM Informix. - stripTrailingZerosForDecimalNumbers
- Specifies whether the IBM Data Server Driver for JDBC and
SQLJ removes
trailing zeroes when it retrieves data from a DECFLOAT, DECIMAL, or
NUMERIC column. This property is meaningful only if the SDK for Java is Version 1.5 or later. The
data type of this property is int.
Possible values are:
DB2BaseDataSource.NOT_SET
(0)- The IBM Data Server Driver for JDBC and SQLJ does not remove trailing zeroes from the retrieved value. This value is the default.
DB2BaseDataSource.YES
(1)- The IBM Data Server Driver for JDBC and
SQLJ removes
trailing zeroes when it retrieves a value from a DECFLOAT, DECIMAL,
or NUMERIC column as a java.math.BigDecimal object.
For example, when the driver retrieves the value 234.04000, it returns the value 234.04 to the application.
DB2BaseDataSource.NO
(2)- The IBM Data Server Driver for JDBC and SQLJ does not remove trailing zeroes from the retrieved value.
- timerLevelForQueryTimeOut
- Specifies the level at which the IBM Data Server Driver for JDBC and
SQLJ creates
a java.util.Timer object for waiting for query
execution to time out. Possible values are:
DB2BaseDataSource.QUERYTIMEOUT_STATEMENT_LEVEL
(1)- The IBM Data Server Driver for JDBC and SQLJ creates a Timer object for each Statement object. When the Statement object is closed, the driver deletes the Timer object. This value is the default before IBM Data Server Driver for JDBC and SQLJ version 4.26.
DB2BaseDataSource.QUERYTIMEOUT_CONNECTION_LEVEL
(2)- The IBM Data Server Driver for JDBC and
SQLJ creates a Timer object for each Connection object. When the Connection object is closed, the driver deletes the Timer object. This value is the default for IBM Data Server Driver for JDBC and
SQLJ version 4.26 or later.
When timerLevelForQueryTimeOut is set to QUERYTIMEOUT_CONNECTION_LEVEL in a connection pooling environment, the number of Timer objects in the process is equal to the number of Connection objects in the pool. The timer thread is active for the lifetime of all Connection objects in the pool.
DB2BaseDataSource.QUERYTIMEOUT_DISABLED
(-1)- The IBM Data Server Driver for JDBC and SQLJ does not create a Timer object to control query execution timeout.
- timestampFormat
- Specifies the format in which the result of the
ResultSet.getString
orCallableStatement.getString
method against a TIMESTAMP column is returned. The data type of timestampFormat is int.Possible values of timestampFormat are:The default isConstant Integer value Format com.ibm.db2.jcc.DB2BaseDataSource.ISO
1 yyyy-mm-dd-hh.mm.ss.nnnnnnnnn1 com.ibm.db2.jcc.DB2BaseDataSource.JDBC
5 yyyy-mm-dd hh:mm:ss.nnnnnnnnn1 Note:- The number of digits in the fractional part of the timestamp depends on the precision of the TIMESTAMP(p) column in the source table. If p<9, p digits are returned. If p>=9, 9 digits are returned, and the remaining digits are truncated.
com.ibm.db2.jcc.DB2BaseDataSource.JDBC
.timestampFormat affects the format of output only.
- timestampPrecisionReporting
- Specifies whether trailing zeroes are truncated in the result
of a Resultset.getString call for a TIMESTAMP value.
The data type of this property is int. Possible values are:
- TIMESTAMP_JDBC_STANDARD (1)
- Trailing zeroes are truncated in the result of a Resultset.getString call for
a TIMESTAMP value. This value is the default.For example:
- A TIMESTAMP value of 2009-07-19-10.12.00.000000 is truncated to 2009-07-19-10.12.00.0 after retrieval.
- A TIMESTAMP value of 2009-12-01-11.30.00.100000 is truncated to 2009-12-01-11.30.00.1 after retrieval.
- TIMESTAMP_ZERO_PADDING (2)
- Trailing zeroes are not truncated in the result of a Resultset.getString call for a TIMESTAMP value.
- traceDirectory
- Specifies a directory into which trace information is written.
The data type of this property is
String
. When traceDirectory is specified, trace information for multiple connections on the same DataSource is written to multiple files.When traceDirectory is specified, a connection is traced to a file named traceFile_origin_n.
n is the nth connection for a DataSource.
origin indicates the origin of the log writer that is in use. Possible values of origin are:
- cpds
- The log writer for a DB2ConnectionPoolDataSource object.
- driver
- The log writer for a DB2Driver object.
- global
- The log writer for a DB2TraceManager object.
- sds
- The log writer for a DB2SimpleDataSource object.
- xads
- The log writer for a DB2XADataSource object.
- traceFile
- Specifies the name of a file into which the IBM Data Server Driver for JDBC and
SQLJ writes
trace information. The data type of this property is
String
. The traceFile property is an alternative to the logWriter property for directing the output trace stream to a file. - traceFileAppend
- Specifies whether to append to or overwrite the file that is specified by the traceFile property. The data type of this property is boolean. The default is false, which means that the file that is specified by the traceFile property is overwritten.
- traceLevel
- Specifies what to trace. The data type of this property is int.
You can specify one or more of the following traces with the traceLevel property:
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_NONE
(X'00')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTION_CALLS
(X'01')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_STATEMENT_CALLS
(X'02')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_CALLS
(X'04')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRIVER_CONFIGURATION
(X'10')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS
(X'20')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS
(X'40')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_META_DATA
(X'80')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_PARAMETER_META_DATA
(X'100')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DIAGNOSTICS
(X'200')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SQLJ
(X'400®')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_XA_CALLS (X'800') (IBM Data Server Driver for JDBC and SQLJ type 2 connectivity for Db2 on Linux, UNIX, and Windows systems only)
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_META_CALLS
(X'2000')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DATASOURCE_CALLS
(X'4000')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_LARGE_OBJECT_CALLS
(X'8000')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SYSTEM_MONITOR
(X'20000')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_TRACEPOINTS
(X'40000')com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SYSPLEX
(X'80000') (for version 3.68 or 4.18, or later, of the IBM Data Server Driver for JDBC and SQLJ, and connections to Db2 for z/OS data sharing groups)com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL
(X'FFFFFFFF')
To specify more than one trace, use one of these techniques:- Use bitwise OR (|) operators with two or more trace values. For
example, to trace DRDA flows
and connection calls, specify this value for traceLevel:
TRACE_DRDA_FLOWS|TRACE_CONNECTION_CALLS
- Use a bitwise complement (~) operator with a trace value to specify
all except a certain trace. For example, to trace everything except DRDA flows, specify this value
for traceLevel:
~TRACE_DRDA_FLOWS
- traceFileCount
- Specifies the maximum number of trace files for circular tracing.
The IBM Data Server Driver for JDBC and
SQLJ uses
this property only when traceOption is set to
DB2BaseDataSource.TRACE_OPTION_CIRCULAR
(1). The data type of this property is int. The default value is 2. - traceFileSize
- Specifies the maximum size of each trace file, for circular tracing.
The IBM Data Server Driver for JDBC and
SQLJ uses
this property only when traceOption is set to
DB2BaseDataSource.TRACE_OPTION_CIRCULAR
(1). The data type of this property is int. The default value is 10485760 (10 MB). - traceOption
- Specifies how trace data is collected. The data type of this property is int. Possible values are:
DB2BaseDataSource.NOT_SET
(0)- Specifies that a single trace file is generated, and that there is no limit to the size of the
file. This value is the default.
If the value of traceOption is NOT_SET, the traceFileSize and traceFileCount properties are ignored.
DB2BaseDataSource.TRACE_OPTION_CIRCULAR
(1)- Specifies that the IBM Data Server Driver for JDBC and
SQLJ does
circular tracing. Circular tracing is done as follows:
- When an application writes its first trace record, the driver creates a file.
- The driver writes trace data to the file.
- When the size of the file is equal to the value of property traceFileSize, the driver creates another file.
- The driver repeats steps 2 and 3 until the number of files to where data is written is equal to the value of property traceFileCount.
- The driver writes data to the first trace file, overwriting the existing data.
- The driver repeats steps 3 through 5 until the application completes.
The file names for the trace files are the file names that are determined by the traceFile or traceDirectory property. The file name is appended with .1 for the first file, .2 for the second file, and so on.
- useJDBC41DefinitionForGetColumns
- Specifies whether the DatabaseMetaData.getColumns method returns a result set with a column with the name SCOPE_CATALOG or SCOPE_CATLOG. Possible values are:
DB2BaseDataSource.NOT_SET
(0)- Specifies that for version 4.13 or later of the IBM Data Server Driver for JDBC and SQLJ, the result set from DatabaseMetaData.getColumns contains a column named SCOPE_CATALOG. For version 4.12 or earlier of the IBM Data Server Driver for JDBC and SQLJ, that column is named SCOPE_CATLOG.
DB2BaseDataSource.YES
(1)- Specifies that for version 4.13 or later of the IBM Data Server Driver for JDBC and SQLJ, the result set from DatabaseMetaData.getColumns contains a column named SCOPE_CATALOG. For version 4.12 or earlier of the IBM Data Server Driver for JDBC and SQLJ, that column is named SCOPE_CATLOG.
DB2BaseDataSource.NO
(2)- Specifies that for all versions of the IBM Data Server Driver for JDBC and SQLJ, the result set from DatabaseMetaData.getColumns contains a column named SCOPE_CATLOG.
- user
- The user ID to use for establishing connections. The data type
of this property is String. When you use the DataSource interface
to establish a connection, you can override this property value by
invoking this form of the DataSource.getConnection method:
getConnection(user, password);
- xaNetworkOptimization
- Specifies whether XA network optimization is enabled for IBM Data Server Driver for JDBC and
SQLJ type 4 connectivity. You might need to disable the XA network
optimization in an environment in which an XA Start and XA End are issued from one Java process, and an XA Prepare and an XA Commit are issued from another Java process. With XA network optimization, the XA Prepare can
reach the data source before the XA End, which results in an XAER_PROTO error. To prevent the
XAER_PROTO error, disable the XA network optimization.
The default is true, which means that XA network optimization is enabled. If xaNetworkOptimization is false, which means that XA network optimization is disabled, the driver closes any open cursors at XA End time.
xaNetworkOptimization can be set on a DataSource object, or in the url parameter in a getConnection call. The value of xaNetworkOptimization cannot be changed after a connection is obtained.