DB2 Universal JDBC ドライバーは、DB2 for VM/VSE データベースに対するタイプ 4 の接続をサポートしていません。「アプリケーション開発ガイド: クライアント・アプリケーションのプログラミング」のトピック『Windows Java 環境のセットアップ』と『DB2 Universal JDBC ドライバーのインストール』、および DB2 UDB Information Center では、DB2 Universal JDBC ドライバーが DB2 for VM/VSE データベースへのタイプ 4 の接続をサポートしていると述べていますが、これは誤りです。
DB2 UDB for z/OS(R) サーバーへのアクセスに DB2 Universal JDBC Driver type 4 connectivity を使用する Java アプリケーションは、接続コンセントレーターと Sysplex ワークロード・バランシング機能の利点を活用することができます。
それらの機能は、DB2 Connect の接続コンセントレーターと Sysplex ワークロード・バランシング機能に似ています。
DB2 Universal JDBC ドライバーの接続コンセントレーターは、DB2 UDB for z/OS(R) データベース・サーバーが多数のクライアント・アプリケーションをサポートするのに必要なリソース数を減らすことができます。つまり、1 つの物理接続が多数の接続オブジェクトによって使用されるようにすることで、データベース・サーバーへの物理接続の総数が減らされます。
DB2 Universal JDBC ドライバーの Sysplex ワークロード・バランシング機能は、データ共用グループの可用性を高めることができます。このドライバーは、データ共用グループのメンバーの状況情報を頻繁に取得するからです。 このドライバーはその情報を使って、次のトランザクションのルーティング先のデータ共用メンバーを判別します。 Sysplex ワークロード・バランシングにより、DB2 UDB for z/OS サーバーとWorkload Manager for z/OS (WLM) が、作業をデータ共用グループのメンバーに効率よく分散させ、しかも、データ共用グループの中のあるメンバーに障害が起きた場合は別のメンバーにその作業を転送させます。
DB2 Universal JDBC ドライバーは、トランスポート・オブジェクトとグローバル・トランスポート・オブジェクト・プールを使って、接続コンセントレーターと Sysplex ワークロード・バランシングをサポートします。 データベース・サーバーへの各物理接続ごとに、トランスポート・オブジェクトが 1 つあります。 接続コンセントレーターと Sysplex ワークロード・バランシングを使用可能にする場合、最大数のトランスポート・オブジェクトを設定することによって、どの時点でもデータベース・サーバーへの最大数の物理接続が用意されるように設定します。
ドライバー・レベルでは、DB2 Universal JDBC ドライバーの構成プロパティーを使って、トランスポート・オブジェクトの数に対する限度を設定します。
接続レベルで、DB2 Universal JDBC ドライバーの接続コンセントレーターと Sysplex ワークロード・バランシングを使用可能および使用不可にし、そして DataSource プロパティーを使って、トランスポート・オブジェクトの数に対する限度を設定します。
以下のいずれかの方法で、グローバル・トランスポート・オブジェクト・プールをモニターすることができます。
接続コンセントレーターおよび Sysplex ワークロード・バランシングに対して、以下の構成プロパティーがそれぞれ使用されます。
db2.jcc.dumpPool のデータ・タイプは整数 (int) です。 他のどの統計が作成されるよりも前に、db2.jcc.dumpPoolStatisticsOnSchedule と db2.jcc.dumpPoolStatisticsOnScheduleFile 構成プロパティーも統計の作成用に設定する必要があります。
db2.jcc.dumpPool プロパティーには、以下のタイプの統計を 1 つ以上指定することができます。
複数のイベント・タイプをトレースするには、トレースしたいイベント・タイプの値を加算します。 たとえば、DUMP_GET_OBJECT イベントと DUMP_CREATE_OBJECT イベントをトレースしたいと仮定します。 これらの値に相当する数値は 2 と 16 なので、db2.jcc.dumpPool 値には 18 を指定します。
デフォルトは 0 です。これは、グローバル・トランスポート・プールのサマリー統計だけが作成されることを意味します。
デフォルトは -1 です。これは、グローバル・トランスポート・プールの統計は作成されないことを意味します。
db2.jcc.dumpPoolStatisticsOnScheduleFile 構成プロパティーを指定しないと、グローバル・トランスポート・プールの統計は作成されません。
db2.jcc.maxTransportObjectIdleTime 構成プロパティーのデフォルト値は 60 です。 db2.jcc.maxTransportObjectIdleTime を 0 より小さい値に設定すると、未使用のトランスポート・オブジェクトは即時にプールから削除されます。 このアクションは、重大な性能低下の原因になる可能性があるので、お勧めしません。
db2.jcc.maxTransportObjectWaitTime 構成プロパティーのデフォルト値は -1 です。 負の値は、アプリケーションはいつまでも待機することを意味します。
db2.jcc.maxTransportObjects 構成プロパティーのデフォルト値は -1 です。これは、グローバル・トランスポート・オブジェクト・プール内のトランスポート・オブジェクト数には制限がないことを意味します。
db2.jcc.minTransportObjects 構成プロパティーのデフォルト値は 0 です。0 以下のすべての値は、グローバル・トランスポート・オブジェクト・プールは空になってもかまわないことを意味します。
以下の各 DB2 Universal JDBC ドライバー DataSource プロパティーが、接続コンセントレーターおよび Sysplex ワークロード・バランシングで使用されます。
enableConnectionConcentrator プロパティーのデータ・タイプはブールです。 デフォルトは false です。 ただし、enableSysplexWLB を true に設定した場合、デフォルトは true になります。
enableSysplexWLB プロパティーのデータ・タイプはブールです。 デフォルトは false です。 ただし、enableSysplexWLB を true に設定した場合、enableConnectionConcentrator はデフォルトで true に設定されます。
このプロパティーのデータ・タイプは整数 (int) です。
maxTransportObjects 値に達していない場合に、グローバル・トランスポート・オブジェクト・プール内に使用可能なトランスポート・オブジェクトがないと、そのプールで新規のトランスポート・オブジェクトが作成されます。 maxTransportObjects 値に達している場合は、アプリケーションは、db2.jcc.maxTransportObjectWaitTime 構成プロパティーで指定された期間待機します。 その期間が経過した後、プール内に使用可能なトランスポート・オブジェクトがまだない場合、プールは SQLException をスローします。
maxTransportObjects プロパティーが、db2.jcc.maxTransportObjects 構成プロパティーをオーバーライドすることはありません。 maxTransportObjects プロパティーには、他の DataSource オブジェクトからの接続に対する効力はありません。 maxTransportObjects 値のほうが db2.jcc.maxTransportObjects 値より大きくても、maxTransportObjects によって db2.jcc.maxTransportObjects 値が増やされることはありません。
maxTransportObjects プロパティーのデフォルト値は -1 です。これは、DataSource 用のトランスポート・オブジェクトの数は、ドライバーの db2.jcc.maxTransportObjects 値によってのみ制限を受けることを意味します。
以下に示す手順は、WebSphere(R) Application Server で DB2 Universal JDBC ドライバーの接続コンセントレーターと Sysplex ワークロード・バランシングの機能を使用可能にする例を示しています。
サーバーの要件は次のとおりです。
クライアントの要件は次のとおりです。
WebSphere Application Server で DB2 Universal JDBC ドライバーの接続コンセントレーターと Sysplex ワークロード・バランシングの機能を使用可能にするには、次のようにします。
java com.ibm.db2.jcc.DB2Jcc -version出力で次のような行を見つけます。
[ibm][db2][jcc] Driver: IBM DB2 JDBC Universal Driver Architecture n nn は、2.7 以上でなければなりません。
構成プロパティーを、DB2JccConfiguration.properties ファイルに設定します。
db2.jcc.minTransportObjects=0 db2.jcc.maxTransportObjects=1500 db2.jcc.maxTransportObjectWaitTime=-1 db2.jcc.dumpPool=0 db2.jcc.dumpPoolStatisticsOnScheduleFile= /home/WAS/logs/srv1/poolstats
WebSphere Application Server の管理コンソールで、アプリケーションがデータベース・サーバーに接続するのに使用するデータ・ソースに対して次のようなプロパティーを設定します。
DB2 Universal JDBC ドライバーの接続コンセントレーターと Sysplex ワークロード・バランシングの機能をモニターするには、グローバル・トランスポート・オブジェクト・プールをモニターする必要があります。 以下のいずれかの方法で、グローバル・トランスポート・オブジェクト・プールをモニターすることができます。
db2.jcc.dumpPool、db2.jcc.dumpPoolStatisticsOnSchedule、および db2.jcc.dumpPoolStatisticsOnScheduleFile 構成プロパティーによって、グローバル・トランスポート・オブジェクト・プールのトレースを制御します。
たとえば、以下の一連の構成プロパティーの設定では、Sysplex エラー・メッセージとダンプ・プール・エラー・メッセージが 60 秒ごとに /home/WAS/logs/srv1/poolstats というファイルに書き込まれることになります。
db2.jcc.dumpPool=DUMP_SYSPLEX_MSG|DUMP_POOL_ERROR db2.jcc.dumpPoolStatisticsOnSchedule=60 db2.jcc.dumpPoolStatisticsOnScheduleFile=/home/WAS/logs/srv1/poolstats
プール統計ファイル内の項目は次のようになります。
time Scheduled PoolStatistics npr:2575 nsr:2575 lwroc:439
hwroc:1764 coc:372 aooc:362 rmoc:362 nbr:2872 tbt:857520 tpo:10
各フィールドの意味は次のとおりです。
グローバル・トランスポート・オブジェクト・プールに関する統計を収集するアプリケーションを作成することができます。 そのようなアプリケーションは、DB2PoolMonitor クラスにオブジェクトを作成し、プールに関する情報を取得するためにメソッドを呼び出します。
たとえば、以下のコードは、グローバル・トランスポート・オブジェクト・プールをモニターするためのオブジェクトを作成します。
import com.ibm.db2.jcc.DB2PoolMonitor; DB2PoolMonitor transportObjectPoolMonitor = DB2PoolMonitor.getPoolMonitor (DB2PoolMonitor.TRANSPORT_OBJECT);
DB2PoolMonitor オブジェクトの作成後、以下のメソッドを使ってグローバル・トランスポート・オブジェクト・プールをモニターすることができます。
public int getMonitorVersion()
DB2 Universal JDBC ドライバーに付属している DB2PoolMonitor クラスのバージョンを取得します。
public int totalRequestsToPool()
プールの作成以降にプールに対して DB2 Universal JDBC ドライバーから出された要求の総数を取得します。
public int successfullRequestsFromPool()
プールの作成以降にプールに対して DB2 Universal JDBC ドライバーから出されて正常に完了した要求の数を取得します。 正常に完了した要求とは、プールからオブジェクトが戻されたことを意味します。
public int numberOfRequestsBlocked()
DB2 Universal JDBC ドライバーがプールに出した要求のうち、プールが最大容量に達したためにプールによりブロックされた要求の数を取得します。 ブロックされた要求が正常に完了するのは、db2.jcc.maxTransportObjectWaitTime 構成値を超えて例外がスローされる前にオブジェクトがプールに戻された場合です。
public long totalTimeBlocked()
プールでブロックされた要求のミリ秒単位の合計時間を取得します。 アプリケーションが複数のスレッドを使用する場合、この時間は、アプリケーションの実行経過時間よりはるかに長くなる可能性があります。
public int lightWeightReusedObjectCount()
再利用されたがプール内になかったオブジェクトの数を取得します。 これは、接続オブジェクトがトランザクション境界でトランスポート・オブジェクトを解放した場合に生じることがあります。 後で、その接続オブジェクトがトランスポート・オブジェクトを必要としたときに、元のトランスポート・オブジェクトが他のどの接続オブジェクトによってもまだ使用されていなければ、その接続オブジェクトは、そのトランスポート・オブジェクトを使用することができます。
public int heavyWeightReusedObjectCount()
プールから再利用されたオブジェクトの数を取得します。
public int createdObjectCount()
プールの作成以降に DB2 Universal JDBC ドライバーが作成したオブジェクトの数を取得します。
public int agedOutObjectCount()
db2.jcc.maxTransportObjectIdleTime 構成プロパティーで指定されていたアイドル時間を超過し、プールから削除されたオブジェクトの数を取得します。
public int removedObjectCount()
プールの作成以降にプールから削除されたオブジェクトの数を取得します。
public int totalPoolObjects()
現在プール内にあるオブジェクトの数。
OleDbReportIsLongForLongTypes キーワードは、以下のデータベース・サーバーでサポートされます。
OLE DB のクライアント・カーソル・エンジンと OLE DB .NET Data Provider の CommandBuilder は、IBM(R) DB2(R) OLE DB Provider により提供される列情報に基づいて更新および削除ステートメントを生成します。生成されたステートメントの WHERE 節に LONG タイプが使用されていると、LONG タイプは等価演算子での検索に使用できないため、ステートメントは失敗します。キーワード OleDbReportIsLongForLongTypes を 1 に設定すると、IBM DB2 OLE DB Provider は、DBCOLUMNFLAGS_ISLONG フラグを設定して、LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) を報告するようにします。これにより WHERE 節に長い列が使用されないようになります。
OleDbSQLColumnsSortByOrdinal キーワードは、以下のデータベース・サーバーでサポートされます。
Microsoft(R) OLE DB 仕様では、IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) が、TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME 列でソートされた行セットを戻すことが必要です。 IBM DB2 OLE DB Provider は、この仕様に準拠しています。ただし、Microsoft ODBC Bridge provider (MSDASQL) を使用するアプリケーションは通常、ORDINAL_POSITION でソートされた行セットを取得するようコード化されています。 OleDbSQLColumnsSortByOrdinal キーワードを 1 に設定すると、プロバイダーは ORDINAL_POSITION でソートされた行セットを戻します。
IBM DB2 OLE DB Provider には新規のプロパティー・グループ、DB2 Data Source が追加されました。 DB2 Data Source のプロパティー・セットは DBPROPSET_DB2DATASOURCE です。
プロパティー・セットの GUID は、{0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}} です。
DBPROPSET_DB2DATASOURCE には、次の 3 つのプロパティーがあります。
#define DB2PROP_REPORTISLONGFORLONGTYPES 4 Property group: DB2 Data Source Property set: DB2PROPSET_DATASOURCE Type: VT_BOOL Typical R/W: R/W Description: Report IsLong for Long Types
OLE DB のクライアント・カーソル・エンジンと OLE DB .NET Data Provider の CommandBuilder は、IBM DB2 OLE DB Provider により提供される列情報に基づいて更新および削除ステートメントを生成します。生成されたステートメントの WHERE 節に LONG タイプが使用されていると、LONG タイプは等価演算子での検索に使用できないため、ステートメントは失敗します。
値 | 意味 |
---|---|
VARIANT_TRUE | IBM DB2 OLE DB Provider が、DBCOLUMNFLAGS_ISLONG フラグを設定して、LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) を報告するようにします。これにより WHERE 節に長い列が使用されないようになります。 |
VARIANT_FALSE | DBCOLUMNFLAGS_ISLONG は、LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA には設定されません。これがデフォルトです。 |
#define DB2PROP_RETURNCHARASWCHAR 2 Property group: DB2 Data Source Property set: DB2PROPSET_DATASOURCE Type: VT_BOOL Typical R/W: R/W Description: Return Char as WChar
値 | 意味 |
---|---|
VARIANT_TRUE | OLE DB は、タイプ CHAR、VARCHAR、LONG VARCHAR、または CLOB の列を DBTYPE_WSTR として記述します。ISequentialStream で想定されるデータのコード・ページは、UCS-2 です。これがデフォルトです。 |
VARIANT_FALSE | OLE DB は、タイプ CHAR、VARCHAR、LONG VARCHAR、または CLOB の列を DBTYPE_STR として記述します。ISequentialStream で想定されるデータのコード・ページは、クライアントのローカル・コード・ページです。 |
#define DB2PROP_SORTBYORDINAL 3 Property group: DB2 Data Source Property set: DB2PROPSET_DATASOURCE Type: VT_BOOL Typical R/W: R/W Description: Sort By Ordinal
Microsoft OLE DB 仕様では、IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) が、TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME 列でソートされた行セットを戻すことが必要です。 IBM DB2 OLE DB Provider は、この仕様に準拠しています。ただし、Microsoft ODBC Bridge provider (MSDASQL) を使用するアプリケーションは通常、ORDINAL_POSITION でソートされた行セットを取得するようコード化されています。
値 | 意味 |
---|---|
VARIANT_TRUE | プロバイダーは ORDINAL_POSITION でソートされた行セットを戻します。 |
VARIANT_FALSE | プロバイダーは TABLE_CATALOG、TABLE_SCHEMA、 TABLE_NAME、COLUMN_NAME でソートされた行セットを戻します。これがデフォルトです。 |
トピック『DB2 Universal JDBC ドライバーのインストール』の DB2Binder 構文図では、DB2 Universal JDBC ドライバーの URL 構文が誤って定義されています。DB2Binder の URL 構文の正しい表現を次の図に示します。
クライアント・アプリケーションは、Linux、(TM)UNIX、(R)および Windows(R) 版 DB2 Universal Database(TM) (UDB) の自動クライアント転送機能を使用すると、サーバーとの通信の消失からリカバリーできるため、最小限の中断で作業を継続することができます。
サーバーがロックすると、そのサーバーに接続している各クライアントは通信エラーを受け取り、接続が終了して、アプリケーション・エラーになります。 可用性が重要である場合は、重複セットアップまたはフェイルオーバー・サポートが必要です。 フェイルオーバーは、別のサーバーが失敗したときに、操作を引き継ぐサーバーの機能です。 いずれの場合にも、DB2 Universal JDBC ドライバー・クライアントは、新規サーバーまたは元のサーバーへの接続を再確立しようとします。接続先はフェイルオーバー・ノード上で実行している可能性があります。 接続が再確立された場合、アプリケーションはトランザクション障害を通知する SQLException を受け取りますが、アプリケーションは次のトランザクションを続行できます。
データベース管理者がサーバー・インスタンスの特定のデータベースで代替サーバーのロケーションを指定した後、1 次および代替サーバーのロケーションが接続時にクライアントに戻されます。 DB2 Universal JDBC ドライバーは、Referenceable オブジェクト DB2ClientRerouteServerList を作成して、そのインスタンスを一時メモリーに格納します。通信が失われた場合、DB2 Universal JDBC ドライバーは、サーバーから戻されたサーバー情報を使用して、接続の再確立を試行します。
clientRerouteServerListJNDIName DataSource プロパティーは、追加のクライアント転送サポートをクライアントで提供します。clientRerouteServerListJNDIName には次の 2 つの機能があります。
clientRerouteServerListJNDIName は、代替サーバー情報の JNDI リポジトリー内で DB2ClientRerouteServerList インスタンスへの JNDI 参照を識別します。1 次サーバーへの接続が成功すると、そのサーバーからの情報により、clientRerouteServerListJNDIName によって提供される代替サーバー情報が上書きされます。 DB2 Universal JDBC ドライバーは、clientRerouteServerListJNDIName プロパティーが定義されていると、フェイルオーバー後に、更新された情報を JNDI ストアに伝搬しようとします。 clientRerouteServerListJNDIName が指定されると、DB2ClientRerouteServerList に指定された 1 次サーバー情報が接続に使用されます。1 次サーバーが指定されない場合は、データ・ソースに指定された serverName 情報が使用されます。
DB2ClientRerouteServerList は、次の 4 つのプロパティーを持つシリアライズ可能な Java(TM) Bean です。
これらのプロパティーにアクセスする getter および setter メソッドが用意されています。DB2ClientRerouteServerList クラスの定義は、次のとおりです。
package com.ibm.db2.jcc; public class DB2ClientRerouteServerList implements java.io.Serializable, javax.naming.Referenceable { public String[] alternateServerName; public synchronized void setAlternateServerName(String[] alternateServer); public String[] getAlternateServerName(); public int[] alternatePortNumber; public synchronized void setAlternatePortNumber(int[] alternatePortNumberList); public int[] getAlternatePortNumber(); public synchronized void setPrimaryServerName (String primaryServerName); public String getPrimaryServerName (); public synchronized void setPrimaryPortNumber (int primaryPortNumber) public int getPrimaryPortNumber (); }
新しく確立されたフェイルオーバー接続は、サーバー名とポート番号は除き、元のデータ・ソース・プロパティーで構成されます。 さらに、元の接続中に変更されたすべての DB2 UDB 特殊レジスターは、DB2 Universal Driver JDBC ドライバーにより、フェイルオーバー接続で再確立されます。
通信障害が発生すると、DB2 Universal JDBC ドライバーは、まず 1 次サーバーに対するリカバリーを試行します。 これに失敗すると、ドライバーは代替ロケーションに接続しようとします (フェイルオーバー)。 接続が再確立された後、ドライバーは、SQLCODE -4498 とともに java.sql.SQLException をアプリケーションにスローし、 代替サーバーへの接続が自動的に再接続されたことをアプリケーションに通知します。 その後、アプリケーションはトランザクションを再試行できます。
ストレージをセットアップして DB2ClientRerouteServerList を永続にするには、以下の手順を実行します。
// Create a starting context for naming operations InitialContext registry = new InitialContext(); // Create a DB2ClientRerouteServerList object DB2ClientRerouteServerList address=new DB2ClientRerouteServerList(); // Set the port number and server name for the primary server address.setPrimaryPortNumber(50000); address.setPrimaryServerName("mvs1.sj.ibm.com"); // Set the port number and server name for the alternate server int[] port = {50002}; String[] server = {"mvs3.sj.ibm.com"}; address.setAlternatePortNumber(port); address.setAlternateServerName(server); registry.rebind("serverList", address);
datasource.setClientRerouteServerListJNDIName("serverList");
DB2 Universal JDBC ドライバーの構成プロパティーによって、そのドライバー全体にわたる有効範囲を持つプロパティー値を設定できます。 それらの設定値は、アプリケーションおよび DataSource インスタンス全体に適用されます。 アプリケーションのソース・コードや DataSource の特性を変更せずに、設定値を変更できます。
それぞれの DB2 Universal JDBC ドライバー構成プロパティー設定の形式は、次のとおりです。
property=value
構成プロパティーが db2.jcc.override で始まる場合は、構成プロパティーはすべての接続に適用でき、同じプロパティー名を持つ Connection または DataSource プロパティーをオーバーライドします。 構成プロパティーが db2.jcc または db2.jcc.default で始まる場合は、構成プロパティー値がデフォルトになります。 その値は Connection または DataSource プロパティー設定値でオーバーライドされます。
構成プロパティーを設定するには、以下のようにします。
スタンドアロン Java アプリケーションの場合、java コマンドの実行時にそれぞれの構成プロパティーに対して -Dproperty=value を指定することにより、構成プロパティーを Java システム・プロパティーとして設定できます。
スタンドアロン Java アプリケーションの場合、java コマンドの実行時に -Ddb2.jcc.propertiesFile=path オプションを指定することによって構成プロパティーを設定できます。
DB2JccConfiguration.properties は、スタンドアロン・ファイルである場合と、JAR ファイルに組み込まれている場合があります。
DB2JccConfiguration.properties がスタンドアロン・ファイルの場合は、DB2JccConfiguration.properties のパスが CLASSPATH 連結内にある必要があります。
DB2JccConfiguration.properties が JAR ファイル内にある場合は、JAR ファイルが CLASSPATH 連結内にある必要があります。
以下の DB2 Universal JDBC ドライバー構成プロパティーを設定できます。 すべてのプロパティーはオプションです。
db2.jcc.override.traceFile プロパティー値の完全修飾ファイル名を指定します。
db2.jcc.override.traceFile プロパティーは、Connection または DataSource オブジェクトの traceFile プロパティーをオーバーライドします。
例えば、以下の設定を db2.jcc.override.traceFile に対して指定すると、DB2 Universal JDBC ドライバー Java コードの、/SYSTEM/tmp/jdbctrace という名前のファイルへのトレースが使用可能に設定されます。
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
トレース・プロパティーは、IBM ソフトウェア・サポートの指示を受けて設定してください。
db2secFreeToken 関数 (トークンによって保持される空きメモリー) が、db2secGssapiServerAuthFunctions_1 ユーザー認証プラグイン API の一部ではなくなりました。
セキュリティー・プラグインのデプロイメントが適切にコード化、検討、およびテストされていないと、DB2 Universal Database (UDB) インストールの整合性が損なわれることがあります。DB2 UDB では一般的な種類の多くの障害に対して予防措置を講じていますが、ユーザー作成のセキュリティー・プラグインがデプロイされた場合、完全な整合性を保証できません。
独自のカスタマイズ済みセキュリティー・プラグインを使用する場合、CLP または動的 SQL ステートメントによって発行される接続ステートメントで、最大 255 文字のユーザー ID を使用できます。
db2secGetGroupsForUser、db2secValidatePassword、および db2secGetAuthIDs API の場合、入力パラメーター dbname はヌルでも問題ありません。 その場合、それに対応する長さ入力パラメーター dbnamelen は 0 に設定されます。
.so は、すべての Linux および UNIX プラットフォームで、ユーザー作成のセキュリティー・プラグイン・ライブラリーのファイル名拡張子として受け入れられるようになりました。
AIX(R) では、セキュリティー・プラグイン・ライブラリーの拡張子は .a または .so とすることができます。 両方のバージョンのプラグイン・ライブラリーが存在する場合は、.a バージョンが使用されます。
PA-RISC 上の HP-UX では、セキュリティー・プラグイン・ライブラリーの拡張子は .sl または .so とすることができます。 両方のバージョンのプラグイン・ライブラリーが存在する場合は、.sl バージョンが使用されます。
他のすべての Linux および UNIX プラットフォームでは、.so が、セキュリティー・プラグイン・ライブラリーに対してサポートされる唯一のファイル名拡張子です。
AIX では、セキュリティー・プラグイン・ライブラリーのファイル名拡張子は .a または .so とすることができます。 プラグイン・ライブラリーをロードするために使用されるメカニズムは、使用される拡張子によって異なります。
例えば、32 ビットのアーカイブ・スタイル・プラグイン・ライブラリーを作成するには、次のようにします。
xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp ar rv MyPlugin.a shr.o
xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp
AIX 以外の他のすべてのプラットフォームの場合、セキュリティー・プラグイン・ライブラリーは常に動的ロード可能共用オブジェクトであると見なされます。
| | |DB2 UDB バージョン 8.2 for Linux、UNIX、Windows のリリースによって、プラグイン (ロード可能なライブラリー) の形式で独自の認証メカニズムを作成することができます。DB2 UDB エンジンは、これらのプラグインをロードし、アクセスしてユーザー認証を実行します。Java で書かれたカスタマー・アプリケーションをサポートするため、DB2 Universal JDBC ドライバーは、DB2 UDB V8.2 フィックスパック 4 でセキュリティー・プラグイン・サポートを提供します。
|プラグイン認証の実行に DB2 Universal JDBC ドライバーを使用する Java アプリケーションの場合、ユーザーは抽象クラス com.ibm.db2.jcc.DB2JCCPlugin を拡張し、以下のプロパティーを設定することにより、独自のプラグインをインプリメントする必要があります。
|次の例に注目してください。
|java.util.Properties properties = new java.util.Properties(); | properties.put("user", "db2admin"); | properties.put("password", "admindb2"); | properties.put("pluginName", "gssapi_simple"); | properties.put("securityMechanism", | new String(""+com.ibm.db2.jcc.DB2BaseDataSource.PLUGIN_SECURITY+"")); | properties.put("plugin", new JCCSimpleGSSPlugin()); | Connection con = java.sql.DriverManager.getConnection(url, properties);
GSS-API 認証は、クライアントからサーバーへの 1 つのトークンのフロー、およびサーバーからのクライアントへの 1 つのトークンのフローに制限されています。これらのトークンは、クライアントの場合 gss_init_sec_context()、サーバーの場合 gss_accept_sec_context() で取得できます。GSS-API プラグインが追加フローを試みると、セキュリティー・プラグインの予期しないエラーが発生し、接続が失敗します。
メッセージ暗号化と署名は、GSS-API セキュリティー・プラグインでは使用できません。
オペレーティング・システムに関係なく、アプリケーションの終了 (正常または異常) が生じると必ず、未解決の作業単位が暗黙的にロールバックします。
DB2 Universal Database (UDB) バージョン 8.2 の「新機能」の『DB2 Universal JDBC ドライバーの改善』セクションにおいて分散トランザクション・サポートの情報が誤っています。 このセクションの最後の文は不正確です。正しい情報は、以下のとおりです。
バージョン 8.2 では、DB2 UDB は、XA 仕様に準拠する分散トランザクション処理をサポートします。 このサポートで、Java 2 プラットフォーム Enterprise Edition (J2EE) Java トランザクション・サービス (JTS) および Java Transaction API (JTA) 仕様を実装します。
[ ページのトップ |前ページ | 次ページ | 目次 ]