IBM Data Server Driver for JDBC and SQLJ のバージョン間での JDBC の相違点

JDBC アプリケーションを古いバージョンから新しいバージョンの IBM® Data Server Driver for JDBC and SQLJにアップグレードする前に、これらのドライバー間の相違点を理解する必要があります。

サポートされるメソッド

IBM Data Server Driver for JDBC and SQLJ がサポートするメソッドのリストについては、 JDBC API のドライバー・サポートに関する情報を参照してください。

JDBC ドライバーによる連続ストリーミングの使用

IBM Data Server Driver for JDBC and SQLJバージョン 3.50 以降のプログレッシブ・ストリーミング (動的データ形式とも呼ばれる) では、 Linux®、UNIX、および Windows システム上の Db2® バージョン 9.5 以降への接続の場合、LOB 検索のデフォルトの動作になります。

連続ストリーミングは、 IBM Data Server Driver for JDBC and SQLJ バージョン 3.1 以降でサポートされますが、 IBM Data Server Driver for JDBC and SQLJ バージョン 3.2 以降では、 Db2 for z/OS® バージョン 9.1 以降への接続の場合、連続ストリーミング動作が LOB および XML 検索のデフォルトです。

以前のバージョンの IBM Data Server Driver for JDBC and SQLJ は、プログレッシブ・ストリーミングをサポートしていませんでした。

重要: 連続ストリーミングでは、 ResultSet から LOB または XML 値を取り出してアプリケーション変数に入れると、カーソルを移動するか ResultSet上でカーソルをクローズするまで、そのアプリケーション変数の内容を操作することができます。 その後は、アプリケーション変数の内容は操作できなくなります。 アプリケーション変数内の LOB に対して何らかのアクションを実行すると、SQLException を受け取ります。 例えば、連続ストリーミングが有効で、以下のようなステートメントを実行するとします。
… 
ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM MY_TABLE");
rs.next();                // Retrieve the first row of the ResultSet 
Clob clobFromRow1  = rs.getClob(1); 
                          // Put the CLOB from the first column of
                          // the first row in an application variable
String substr1Clob = clobFromRow1.getSubString(1,50);
                          // Retrieve the first 50 bytes of the CLOB
rs.next();                // Move the cursor to the next row.
                          // clobFromRow1 is no longer available.
// String substr2Clob = clobFromRow1.getSubString(51,100);
                          // This statement would yield an SQLException
Clob clobFromRow2  = rs.getClob(1); 
                          // Put the CLOB from the first column of 
                          // the second row in an application variable
rs.close();               // Close the ResultSet. 
                          // clobFromRow2 is also no longer available.
rs.next() を実行してカーソルを ResultSet の 2 番目の行に置いた後は、clobFromRow1 内の CLOB 値は使用できなくなります。 同様に、 rs.close() を実行して ResultSetを閉じると、 clobFromRow1 および clobFromRow2 の値は使用できなくなります。

この動作の変更によるエラーを避けるには、以下のアクションのいずれかをとる必要があります。

  • アプリケーションを変更します。

    LOB データをアプリケーション変数に取り出すアプリケーションは、データの取り出しに使用されたカーソルが移動されるか閉じられるまでの間に限り、それらのアプリケーション変数のデータを操作できます。

  • 連続ストリーミングを使用不可にします。それには、progressiveStreaming プロパティーを DB2BaseDataSource.NO (2) に設定します。

ResultSet IBM Data Server Driver for JDBC and SQLJ のMetaData 値

IBM Data Server Driver for JDBC and SQLJ バージョン 4.0 以降の場合、 ResultSetMetaData.getColumnName および ResultSetMetaData.getColumnLabel のデフォルトの動作は、以前の JDBC ドライバーのデフォルトの動作とは異なります。

IBM Data Server Driver for JDBC and SQLJ バージョン 4.0 以降を使用する必要があるが、古い JDBC ドライバーで返された ResultSetMetaData.getColumnName 値および ResultSetMetaData.getColumnLabel 値をアプリケーションから返す必要がある場合は、 useJDBC4ColumnNameAndLabelSemantics Connection および DataSource プロパティーを DB2BaseDataSource.NO (2) に設定できます。

自動生成キーを使用したバッチ更新の結果はドライバーのバージョンによって異なる

IBM Data Server Driver for JDBC and SQLJ バージョン 3.52 以降では、自動生成キーを取得するための SQL ステートメントの準備がサポートされています。

IBM Data Server Driver for JDBC and SQLJ バージョン 3.50 またはバージョン 3.51では、自動生成キーを取得するための SQL ステートメントを準備し、バッチ更新に PreparedStatement オブジェクトを使用すると、 SQLExceptionが発生します。

バージョン 3.50 より前のバージョンの IBM Data Server Driver for JDBC and SQLJ は、自動生成キーを戻す準備ができている PreparedStatement オブジェクトでアプリケーションが addBatch または executeBatch メソッドを呼び出すときに、 SQLException をスローしません。 ただし、PreparedStatement オブジェクトは自動生成キーを戻しません。

Db2 for z/OS サーバー上のデータのバッチ更新の結果は、ドライバー・バージョンによって異なります。

executeBatch ステートメントが正常に呼び出されると、 IBM Data Server Driver for JDBC and SQLJ は配列を返します。 この配列の目的は、バッチで実行される各 SQL ステートメントによって影響を受ける行数を示すことです。

以下の条件に該当する場合、 IBM Data Server Driver for JDBC and SQLJ は配列エレメントで Statement.SUCCESS_NO_INFO (-2) を返します。

  • アプリケーションは、 Db2 for z/OS バージョン 8 以降の新機能モードのサブシステムに接続されています。
  • アプリケーションは、バージョン 3.1 以降の IBM Data Server Driver for JDBC and SQLJを使用しています。
  • IBM Data Server Driver for JDBC and SQLJ は、複数行 INSERT 操作を使用してバッチ更新を実行します。

これが生じるのは、複数行 INSERT を使用すると、データベース・サーバーがバッチ全体を 1 つの操作として実行するので、個々の SQL ステートメントの結果が戻されないためです。

旧バージョンの IBM Data Server Driver for JDBC and SQLJを使用している場合、または Db2 for z/OS バージョン 8 以降以外のデータ・ソースに接続している場合、配列エレメントには、各 SQL ステートメントの影響を受ける行数が含まれます。

Db2 for z/OS サーバー上のデータのバッチ更新およびバッチ削除には、ドライバー・バージョンごとに異なるサイズ制限があります。

IBM Data Server Driver for JDBC and SQLJ バージョン 3.59 または 4.9より前は、更新または削除バッチのサイズが 32KBより大きい場合に、エラー・コード -4499 の DisconnectExceptionIBM Data Server Driver for JDBC and SQLJ タイプ 4 接続 Db2 for z/OS にスローされていました。 バージョン 3.59 または 4.9 以降、この制限はもはや存在せず、例外はスローされなくなりました。

CURRENT CLIENT_ACCTNG 特殊レジスターの初期値

IBM Data Server Driver for JDBC and SQLJ バージョン 2.6 以降で実行される JDBC または SQLJ アプリケーションで、タイプ 4 接続を使用する場合、 Db2 for z/OS CURRENT CLIENT_ACCTNG 特殊レジスターの初期値は、 Db2 for z/OS バージョンと clientWorkステーション・プロパティーの値を連結したものになります。 JDBC ドライバー、バージョン、または接続のいずれかがそれとは異なる場合、初期値は設定されていません。

複数行 FETCH の使用を制御するプロパティー

バージョン 3.7 およびバージョン 3.51 より前の IBM Data Server Driver for JDBC and SQLJでは、複数行 FETCH サポートは、 useRowsetCursor プロパティーによって使用可能および使用不可になっていました。これは、両方向スクロール・カーソルの場合、および IBM Data Server Driver for JDBC and SQLJ タイプ 4 接続 から Db2 for z/OSへの場合にのみ使用可能でした。 バージョン 3.7 および 3.51 以降は、次のようになります。
  • Db2 for z/OSIBM Data Server Driver for JDBC and SQLJ タイプ 2 接続 の場合、 IBM Data Server Driver for JDBC and SQLJ は enableRowsetサポート・プロパティーのみを使用して、両方向スクロール・カーソルに対して複数行 FETCH を使用するかどうかを決定します。
  • IBM Data Server Driver for JDBC and SQLJ タイプ 4 接続 から z/OS または Db2 on Linux、UNIX、および Windows システム、または IBM Data Server Driver for JDBC and SQLJ タイプ 2 接続 on Db2 on Linux、UNIX、および Windows システム、 enableRowsetサポートが設定されている場合、ドライバーは enableRowsetサポート・プロパティーを使用して、両方向スクロール・カーソルに複数行 FETCH を使用するかどうかを決定します。 enableRowsetSupport が設定されていない場合、ドライバーでは、useRowsetCursor プロパティーを使用することによって、複数行 FETCH を使用するかどうかが決定されます。

JDBC 1 位置指定の更新および削除と複数行 FETCH

バージョン 3.7 およびバージョン 3.51 より前の IBM Data Server Driver for JDBC and SQLJでは、 Db2 for z/OS 表からの複数行 FETCH は、 useRowsetカーソル・プロパティーによって制御されていました。 アプリケーションに JDBC 1 位置付け更新操作または削除操作が含まれており、複数行 FETCH サポートが有効になっていた場合、 IBM Data Server Driver for JDBC and SQLJ は更新操作または削除操作を許可しましたが、予期しない更新または削除が発生する可能性があります。

IBM Data Server Driver for JDBC and SQLJのバージョン 3.7 および 3.51 以降、 enableRowsetサポート・プロパティーは、 Db2 for z/OS 表または Linux、UNIX、および Windows システム上の Db2 表からの複数行 FETCH を有効または無効にします。 enableRowsetSupport プロパティーは、useRowsetCursor プロパティーをオーバーライドします。 enableRowsetサポート・プロパティーによって複数行 FETCH が有効になっていて、アプリケーションに JDBC 1 位置付け更新または削除操作が含まれている場合、 IBM Data Server Driver for JDBC and SQLJSQLExceptionをスローします。

Db2 for z/OS ビューから自動生成キーを取得するための prepareStatement の有効な形式

バージョン 3.57 またはバージョン 4.7 の IBM Data Server Driver for JDBC and SQLJ以降、 Db2 for z/OS データ・サーバー上のビューにデータを挿入し、自動生成キーを取得する場合は、以下のいずれかの方法を使用して、ビューに行を挿入する SQL ステートメントを準備する必要があります。

Connection.prepareStatement(sql-statement, String [] columnNames);
Connection.prepareStatement(sql-statement, int [] columnIndexes);
Statement.executeUpdate(sql-statement, String [] columnNames);
Statement.executeUpdate(sql-statement, int [] columnIndexes);

setString を使用する TIMESTAMP(p) 列の更新におけるデータ損失

setString 呼び出しを使って入力値を TIMESTAMP(p) 列に渡す場合、9 より大きい精度の値をその列に送ることができます。

バージョン 3.59 またはバージョン 4.9 より前の IBM Data Server Driver for JDBC and SQLJでは、 sendDataAsIs プロパティーが falseに設定されていて、入力値の精度が 9 より大きい場合、データ損失が発生する可能性があります。

バージョン 3.59 およびバージョン 4.9 の IBM Data Server Driver for JDBC and SQLJ以降、TIMESTAMP (p) 列が入力値を収容できる大きさである場合、データ損失は発生しません。

java.sql.Timestamp 入力データの特殊な処理

バージョン 3.63 または 4.13 より前の IBM Data Server Driver for JDBC and SQLJでは、ターゲット・データ・タイプが不明で、ターゲット・データ・サーバーが TIMESTAMP WITH TIME ZONE をサポートし、入力データ・タイプが java.sql.Timestampの場合、ドライバーはターゲット・タイプとして TIMESTAMP WITH TIME ZONE を選択します。 バージョン 3.63 または 4.13 以降において、ターゲット・データ・タイプが不明であり、ターゲット・データ・サーバーが TIMESTAMP WITH TIME ZONE をサポートし、入力データ・タイプが java.sql.Timestamp であれば、ドライバーはターゲット・タイプとして TIMESTAMP WITH TIME ZONE を選択します。ただし、入力オブジェクトの値が 0001-01-01-00:00:00.000000 または 9999-12-31-23:59:59.999999 の場合は除きます。 これらの場合、ドライバーはタイム・ゾーンなしの TIMESTAMP タイプを選択します。 これらの 2 つの場合には、この TIMESTAMP データ・タイプを使用することで、暗黙のタイム・ゾーンに合わせて値を調整するためにオーバーフロー状況が発生するのを防止できます。 暗黙のタイム・ゾーンは、Java™ 仮想マシン (JVM) のタイム・ゾーンです。 バージョン 3.65 または 4.15 以降において、ドライバーがタイム・ゾーンなしの TIMESTAMP タイプを選択する対象とするタイム・スタンプは、0001-01-01 (任意の時刻) または 9999-12-31 (任意の時刻) です。

getColumns の結果セットの列名の変更

バージョン 4.12 以前の IBM Data Server Driver for JDBC and SQLJでは、 DatabaseMetaData.getColumns メソッドは、SCOPE_CATLOG という名前の列を含む結果セットを返しました。 バージョン 4.13 以降の IBM Data Server Driver for JDBC and SQLJでは、その列の名前は SCOPE_CATALOG です。 IBM Data Server Driver for JDBC and SQLJ で列名 SCOPE_CATLOG を引き続き使用する場合は、 DataSource または Connection プロパティー useJDBC41DefinitionForGetColumns を DB2BaseDataSource.NO (2) に設定します。

グローバル構成プロパティー db2.jcc.maxRefreshInterval、db2.jcc.maxTransportObjects、および db2.jcc.maxTransportObjectWaitTime のデフォルトの変更点

グローバル構成プロパティー db2.jcc.maxRefreshInterval、 db2.jcc.maxTransportObjects、および db2.jcc.maxTransportObjectWaitTime のデフォルト値は、 IBM Data Server Driver for JDBC and SQLJのバージョン 3.63 および 4.13 で変更されました。 次の表は、新旧のデフォルトを示しています。

構成プロパティー バージョン 3.63 および 4.13 より前のデフォルト バージョン 3.63 および 4.13 以降のデフォルト
db2.jcc.maxRefreshInterval 30 秒 10 秒
db2.jcc.maxTransportObjects -1 (無制限) 1000
db2.jcc.maxTransportObjectWaitTime -1 (無制限) 1 秒

Connection および DataSource のプロパティー timerLevelForQueryTimeOut のデフォルト値に対する変更点

Connection および DataSource のプロパティー timerLevelForQueryTimeOut のデフォルト値は、 IBM Data Server Driver for JDBC and SQLJのバージョン 4.26 で変更されました。 次の表は、新旧のデフォルトを示しています。

Connection および DataSource プロパティー バージョン 4.26 より前のデフォルト値 バージョン 4.26 以降のデフォルト値
timerLevelForQueryTimeOut 1 (QUERYTIMEOUT_STATEMENT_LEVEL) 2 (QUERYTIMEOUT_CONNECTION_LEVEL)

Connection および DataSource のプロパティー maxTransportObjects のデフォルト値に対する変更点

Connection プロパティーおよび DataSource プロパティーのデフォルト値 maxTransportオブジェクトは、 IBM Data Server Driver for JDBC and SQLJのバージョン 3.63 および 4.13 で変更されました。 次の表は、新旧のデフォルトを示しています。

Connection および DataSource プロパティー バージョン 3.63 および 4.13 より前のデフォルト値 バージョン 3.63 および 4.13 以降のデフォルト値
maxTransportObjects -1 (無制限) 1000

Db2 for z/OS データ共有グループへの接続のための自動クライアント・リルートの変更 (ドライバー・バージョン 3.72.52 および 4.25.13)

IBM Data Server Driver for JDBC and SQLJ バージョン 3.72.52 および 4.25.13以降、 Db2 for z/OS データ共有グループへの接続では、自動クライアント・リルート中に、データ共有グループに関連付けられている IP アドレスを使用して接続が 1 回再試行されます。

Db2 for z/OS データ共有グループへの接続のための Connection および DataSource プロパティー maxRetriesForClientReroute および retryIntervalForClientReroute のデフォルト値の変更

Db2 for z/OS データ共有グループへの接続の場合、 Connection プロパティーと DataSource プロパティー maxRetriesForClientReroute および retryIntervalForClientReroute のデフォルト値は、以下の表に示すように、 IBM Data Server Driver for JDBC and SQLJ のバージョンによって異なります。

Connection および DataSource プロパティー デフォルト値
maxRetriesForClientReroute
  • ドライバー・バージョン 3.64 または 4.14:

    10 分間再試行され、初回再試行からの経過時間が長くなるにつれて、再試行と再試行の間の待ち時間は長くなります。

  • 3.64 または 4.14 から 4.32.28:

    5

  • ドライバー・バージョン 4.33.31 以降の場合:

    1

retryIntervalForClientReroute
  • ドライバー・バージョン 3.64:

    10 分間再試行され、初回再試行からの経過時間が長くなるにつれて、再試行と再試行の間の待ち時間は長くなります。

  • ドライバー・バージョン 3.64 または 4.14以降の場合:

    0

Db2 ( Linux、UNIX、および Windows システムの場合) への接続のための Connection および DataSource プロパティー maxRetriesForClientReroute および retryIntervalForClientReroute のデフォルト値の変更

Db2 ( Linux、UNIX、および Windows システムの場合)への接続の場合、以下の表に示すように、 Connection プロパティーと DataSource プロパティーの maxRetriesForClientReroute および retryIntervalForClientReroute のデフォルト値は、 IBM Data Server Driver for JDBC and SQLJ のバージョンによって異なります。

Connection および DataSource プロパティー デフォルト値
maxRetriesForClientReroute および retryIntervalForClientReroute
  • ドライバー・バージョン 4.33.31:

    enableClientAffinitiesList が DB2BaseDataSource.NO (2) に設定されていて、 maxRetriesForClientReroute および retryIntervalForClientReroute が設定されていない場合、接続は 10 分間再試行されます。 初回再試行からの経過時間が長くなるにつれて、再試行と再試行の間の待ち時間は長くなります。

    enableClientAffinitiesList が DB2BaseDataSource.YES (1) の場合、デフォルトは 3 です。

  • ドライバー・バージョン 4.33.31 以降の場合:

    maxRetriesForClientReroute も retryIntervalForClientReroute も設定されていない場合、接続は 10 分間再試行されます。

Db2 for z/OS データ共有グループへの接続のための Connection および DataSource プロパティー maxRetriesForClientReroute の再試行の意味の変更

Db2 for z/OS データ共有グループへの接続に関する、バージョン 3.66 および 4.16、およびバージョン 4.25 の IBM Data Server Driver for JDBC and SQLJ での再試行の変更の意味。

以下の表は、 IBM Data Server Driver for JDBC and SQLJ の各バージョンにおける再試行の意味を示しています。

表 1. ドライバー・バージョン別の再試行の意味
ドライバー・バージョン 再試行動作
バージョン 3.66 および 4.16 より前 1 回の再試行は、データ共有グループの 1 メンバーへの接続を 1 回試行すること。
バージョン 3.66 から 3.72、およびバージョン 4.16 から 4.24 1 回の再試行は、失敗したメンバーを除くデータ共有グループの全メンバーへの接続と、グループ IP アドレスへの接続を 1 回試行すること。 この動作変更により、通常は、maxRetriesForClientReroute の値を低くすることが必要になります。
バージョン 4.25 以降 1 回の再試行は、データ共有グループのグループ IP アドレスへの接続を 1 回試行すること。

enableSysplexWLB プロパティーを trueに設定した場合、maxRetriesForClientReroute のデフォルト値は 1 です。

Linux、UNIX、および Windows システム上の Db2 Db2 pureScale インスタンス (ドライバー・バージョン 3.67 および 4.17) への接続の再試行の意味の変更

IBM Data Server Driver for JDBC and SQLJ のバージョン 3.67 および 4.17 における、 Linux、UNIX、および Windows システム上の Db2 Db2 pureScale® インスタンスへの接続に対する自動クライアント・リルートの再試行の意味。

以下の表に、以前の意味と新しい意味を示します。

バージョン 3.67 および 4.17 より前の再試行の意味 バージョン 3.67 および 4.17 以降の再試行の意味
Db2 pureScale インスタンスの 1 つのメンバーへの接続を 1 回試行します。 Db2 pureScale インスタンスのすべてのメンバーへの接続を 1 回試行します。 この変更により、maxRetriesForClientReroute の値を低くすることが必要になる場合があります。

Db2 for z/OS での IBM Data Server Driver for JDBC and SQLJ タイプ 2 接続 のクライアント情報プロパティーのデフォルト値の変更

Db2 for z/OSIBM Data Server Driver for JDBC and SQLJ タイプ 2 接続 のクライアント情報プロパティーのデフォルト値は、 IBM Data Server Driver for JDBC and SQLJのバージョン 3.64 で変更されました。 次の表は、新旧のデフォルトを示しています。

クライアント情報プロパティー バージョン 3.64 より前のデフォルト値 バージョン 3.64 以降のデフォルト値
clientApplicationInformation 空ストリング ストリング "db2jcc_application"
clientAccountingInformation 空ストリング 空ストリング
clientWorkstation 空ストリング ストリング "RRSAF"。
clientUser 空ストリング 接続に指定されたユーザー ID。 ユーザー ID が指定されなかった場合は、 RACF® ユーザー ID が使用されます。

Db2 for z/OS のクライアント情報プロパティーの最大長の変更

Db2 for z/OS のバージョン 3.66 および 4.16 の IBM Data Server Driver for JDBC and SQLJでの IBM Data Server Driver for JDBC and SQLJ タイプ 2 接続 のクライアント情報プロパティーの最大長が変更されました。 以下の表に、以前の長さと新しい長さを示します。

クライアント情報プロパティー バージョン 3.68 および 4.18 より前の最大長 バージョン 3.68 および 4.18 以降の最大長
clientApplicationInformation 32 255
clientAccountingInformation 22 255
clientWorkstation 18 255
clientUser 16 128

グローバル構成プロパティー db2.jcc.enableInetAddressGetHostName のデフォルトに対する変更

IBM Data Server Driver for JDBC and SQLJバージョン 3.65 および 4.15 以降では、 db2.jcc.enableInetAddressGetHostName のデフォルトは falseです。 バージョン 3.64 以前の場合、デフォルトは trueです。

xmlFormat プロパティーの動作の変更

IBM Data Server Driver for JDBC and SQLJのバージョン 4.15 以降、 xmlFormat Connection および DataSource プロパティーは、XML データの更新および検索ではなく、XML データの検索にのみ適用されます。 加えて、デフォルトの動作が変更されました。データ・サーバーがバイナリー XML 形式をサポートするかどうかに関係なく、テキスト XML 形式での XML データの取り出しがデフォルトの動作になりました。

XML 列のデータのアップデートに関して、xmlFormat が影響することはありません。 入力データがバイナリー XML データであり、データ・サーバーが バイナリー XML データをサポートしていない場合、入力データは テキスト XML データに変換されます。 そうでない場合は、変換はされません。

Connection および DataSource のプロパティー useCachedCursor のデフォルト値に対する変更

Linux、UNIX、および Windows システム上の Db2への接続の場合、 useCached「カーソル」 Connection および DataSource プロパティーのデフォルト値が変更されました。

デフォルトは次のとおりです。

  • ドライバーが以下のいずれかのレベルである場合は false
    • バージョン 3.67 または 4.17 以降
    • バージョン 3.64
  • ドライバーの他のすべてのバージョンの場合は true

ドライバー・バージョンが 3.67 または 4.17、あるいはそれ以降、あるいは 3.64 であり、 deferPrepares プロパティーが true に設定されている場合、ドライバーは、 useCachedカーソルの設定に関係なく、 useCachedカーソルが false に設定されているかのように動作します。

自動クライアント・リルート時のシームレス・フェイルオーバーの失敗に対するドライバーの動作に関する変更

バージョン 3.67 および 4.17 より前の IBM Data Server Driver for JDBC and SQLJでは、シームレス・フェイルオーバー・エラーの動作として、フェイルオーバー・サーバーへの再接続を 10 回試行し、以前に失敗した SQL ステートメントを実行した後に、ドライバーが SQL エラー・コード -20542 で SQLException を発行していました。

IBM Data Server Driver for JDBC and SQLJのバージョン 3.67 および 4.17 以降、シームレス・フェイルオーバー・エラーの動作は、フェイルオーバー・サーバーへの再接続を 1 回試行し、以前に失敗した SQL ステートメントを実行した後、ドライバーが SQL エラー・コード -4228 の SQLException を発行することです。

トレース・ポーリング・デフォルトの変更

db2.jcc.tracePolling のデフォルトは、バージョン 3.69 より前の IBM Data Server Driver for JDBC and SQLJでは false であり、バージョン 3.69 以降ではデフォルトは true です。

Db2 for z/OS への接続のシームレスなフェイルオーバーの失敗時のドライバーの動作の変更

IBM Data Server Driver for JDBC and SQLJのバージョン 4.32 より前のバージョンでは、 Db2 for z/OS データ共有グループへの接続のシームレスなフェイルオーバーが失敗すると、-4498、-30108、-20542 などの SQL エラーが戻されていました。

ドライバーのバージョン 4.32 以降、プロパティー enableSeamlessFailoverErrorCodes は、返される SQL エラー・コードを制御します。 デフォルトの動作では、すべてのシームレス・フェイルオーバー・エラーに対して SQL エラー -4499 が返されます。

デフォルトのセキュリティー・メカニズムの変更

IBM Data Server Driver for JDBC and SQLJのバージョン 4.33 より前のバージョンでは、デフォルトのセキュリティー・メカニズムは CLEAR_TEXT_PASSWORD_SECURITYです。 データ・サーバーが CLEAR_TEXT_PASSWORD_SECURITYをサポートしていないが、 ENCRYPTED_USER_AND_PASSWORD_SECURITYをサポートしている場合、ドライバーはセキュリティー・メカニズムを ENCRYPTED_USER_AND_PASSWORD_SECURITY に変更し、データ・サーバーへの接続を試みます。 リクエスターとデータ・サーバーの間でセキュリティー・メカニズム・サポートの他の不一致があると、エラーになります。

重要:
IBM Data Server Driver for JDBC and SQLJのバージョン 4.33 から、以下のようになりました。
  • デフォルトのセキュリティー・メカニズムは ENCRYPTED_USER_AND_PASSWORD_SECURITYです。 データ・サーバーが ENCRYPTED_USER_AND_PASSWORD_SECURITYをサポートしていないが、 CLEAR_TEXT_PASSWORD_SECURITYをサポートしている場合、ドライバーはセキュリティー・メカニズムを CLEAR_TEXT_PASSWORD_SECURITY に変更し、データ・サーバーへの接続を試みます。
    ドライバーが CLEAR_TEXT_PASSWORD_SECURITYを使用して接続を再試行すると、パフォーマンスが低下する可能性があります。 パフォーマンスへの影響を最小限に抑えるには、以下のいずれかのアクションを実行します。
    • クライアント・サイドで、セキュリティー・メカニズムを明示的に CLEAR_TEXT_PASSWORD_SECURITY に設定します。
    • ENCRYPTED_USER_AND_PASSWORD_SECURITY をサポートするようにデータ・サーバー設定を変更してください。

    リクエスターと、 CLEAR_TEXT_PASSWORD_SECURITY および ENCRYPTED_USER_AND_PASSWORD_SECURITY 以外のデータ・サーバーとの間でセキュリティー・メカニズム・サポートに不一致があると、エラーになります。

  • デフォルトのセキュリティー・メカニズム ENCRYPTED_USER_AND_PASSWORD_SECURITY および AES 暗号化を使用する Db2 for z/OS サブシステムまたはデータ共有グループへの接続が成功するのは、各サブシステムまたはデータ共有メンバーがインストールされている z/OS システムで z/OS Integrated Cryptographic Service Facility (ICSF) が使用可能になっている場合のみです。 ICSF は、ユーザー ID とパスワードを暗号化解除するために必要です。 ICSF がインストールされていない場合は、セキュリティー・メカニズムを CLEAR_TEXT_PASSWORD_SECURITYに設定する必要があります。

デフォルトの暗号化アルゴリズムの変更

IBM Data Server Driver for JDBC and SQLJのバージョン 4.33 より前のバージョンでは、デフォルトの暗号化アルゴリズムは 56 ビット DES 暗号化 (1) です。

IBM Data Server Driver for JDBC and SQLJのバージョン 4.33 以降では、デフォルトの暗号化は 256 ビット AES 暗号化 (2) です。

ホスト変数と列の間のデータ・タイプの不一致に対するドライバーの動作の変更

IBM Data Server Driver for JDBC and SQLJのバージョン 4.33 より前では、SQLJ プロファイル・カスタマイザー (db2sqljcustomize) がホスト変数を列にバインドし、ホスト変数データ・タイプと列データ・タイプの間に不一致があった場合、 db2sqljcustomize はアクションを実行しませんでした。

ドライバーのバージョン 4.33 以降、データ・タイプの不一致があり、 db2sqljcustomize オプション -onTypeMismatch が設定されていない場合、 db2sqljcustomize は警告を出し、カスタマイズ・プロセスを続行します。

入力データの切り捨て時のドライバーの動作の変更

IBM Data Server Driver for JDBC and SQLJのバージョン 4.33 より前では、値が列に挿入され、その値が列に対して大きすぎる場合、ドライバーはアクションを実行しませんでした。

ドライバーのバージョン 4.33 以降では、列に対して大きすぎるデータが列に挿入されると、デフォルトの動作としてドライバーが警告を発行します。 以前のバージョンのドライバーと同じ動作にするには、 Connection および DataSource プロパティー onDataTruncationDB2BaseDataSource.ON_DATA_TRUNCATION_NO_ACTION_VALUE (3) に設定するか、構成プロパティー db2.jcc.onDataTruncation または db2.jcc.override.onDataTruncation を 3 に設定します。