Oracle® Fusion Middleware Oracle WebLogic Server タイプ4 JDBCドライバ 11g リリース1(10.3.3) B61001-01 |
|
前 |
次 |
次の項では、DB2用のWebLogic タイプ4 JDBCドライバの構成方法と使用方法について説明します。
WebLogic タイプ4 JDBC DB2ドライバのドライバ・クラスは次のとおりです。
XA: weblogic.jdbcx.db2.DB2DataSource Non-XA: weblogic.jdbc.db2.DB2Driver
WebLogic ServerドメインにJDBCデータ・ソースを構成する場合に、これらのドライバ・クラスを使用します。
Informixリソース・アダプタ用のManagedConnectionFactoryクラスは、次のとおりです。
com.weblogic.resource.spi.InformixManagedConnectionFactory
DB2ドライバの接続URLの形式は次のとおりです。
jdbc:weblogic:db2://hostname:port[;property=value[;...]]
説明:
hostname
は、接続するサーバーのIPアドレスまたはTCP/IPホスト名です。IPアドレスの使用については、「IPアドレスの使用」を参照してください。
注意: 信頼性のないアプレットから、そのホスト以外のマシンへのソケットを開くことはできません。 |
port
は、TCP/IPポートの番号です。
property=value
は、接続プロパティを指定します。接続プロパティの一覧および各プロパティに指定できる値については、「DB2接続プロパティ」を参照してください。
例:
Linux、UNIX、Windows上のDB2 UDB
jdbc:weblogic:db2://server1:50000;DatabaseName=jdbc;User=test;Password=secret
z/OSおよびiSeries上のDB2 UDB
jdbc:weblogic:db2://server1:446;LocationName=Sample;User=test;Password=secret
表3-1では、DB2ドライバでサポートされるJDBC接続プロパティを示し、各プロパティについて説明します。WebLogic ServerドメインのJDBCデータ・ソースの構成でこれらの接続プロパティを使用できます。
注意: すべての接続プロパティ名で大文字と小文字は区別されません。たとえば、Passwordはpasswordと同じです。必須のプロパティかどうかが記載されています。各接続プロパティで示されているデータ型は、JDBCデータ・ソースのプロパティ値に使用されるJavaデータ型です。 |
プロパティを指定するには、JDBCデータ・ソースの構成で次の形式を使用します。 property=value
。
表3-1 DB2接続プロパティ
プロパティ | 説明 |
---|---|
AccountingInfo |
データベースに格納する会計情報。この値で、データベースの データ型: String 有効な値: |
AddToCreateTable |
すべての データ型: String 有効な値: |
AllowImplicitResultSetCloseForXA |
注意: このメカニズムには問題があることが確認されています。問題を回避するには、データ・ソースの構成のプロパティに デフォルトは |
AlternateID |
未修飾のSQL識別子が使用するデフォルトのDB2スキーマを指定値に設定します。 Linux/UNIX/Windows上のDB2およびiSeries上のDB2の場合、このプロパティで、 z/OS上のDB2場合、このプロパティで、 有効な値:
|
AlternateServers |
選択したフェイルオーバー・メソッドに応じて、新規接続または切断接続の場合に使用される代替データベース・サーバーのリスト。フェイルオーバー・メソッドの選択については、FailoverModeプロパティを参照してください。 データ型: String 有効な値:
各代替サーバー・エントリでサーバー名( たとえば、次のURLには、server2およびserver3の代替サーバー・エントリが含まれます。代替サーバー・エントリには、オプションの
デフォルト: なし |
ApplicationName |
データベースに格納するアプリケーション名。この値で、データベースの 有効な値: データ型: String デフォルトは空の文字列です。 |
AuthenticationMethod |
ドライバが接続を確立する際に使用する認証方法を指定します。 有効な値:
DB2サーバーでサポートされていない認証方式を指定すると、接続に失敗して例外がスローされます。 デフォルトは DB2ドライバによる認証の使用方法については、「認証」を参照してください。 |
BatchPerformanceWorkaround |
DB2ドライバでは、ネイティブのDB2バッチ・メカニズムが使用されます。このプロパティは、データ変換を容易にするために特定の制限を行うかどうかを決定します。 有効な値:
デフォルトは 詳細は、「バッチ挿入とバッチ更新」を参照してください。 注意: DB2用のWebLogic タイプ4 JDBCドライバを使用して、JMS JDBCストアとして使用されるデータ・ソースの場合は、 |
BulkLoadBatchSize |
データをバルク・ロードするときにデータベースに一度にロードする行数に関して、ドライバに提案します。少数のネットワーク・ラウンド・トリップが必要となるため、ドライバから一度にロードされる行数を増やすことでパフォーマンスが改善されます。ロードされる行数を増やすと、ドライバからクライアントのより多くのメモリーが消費される場合があります。 注意:
有効な値: データ型: long |
CatalogIncludesSynonyms |
データ型:
このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは |
CatalogOptions |
アプリケーションでDatabaseMetaDataメソッドが呼び出されたとき、結果セットにどのメターデタ情報が含まれるかを指定します。 有効な値: 0 | 2 | 6。デフォルトは、2です。 データ型: int 0の場合、結果セットにシノニムが含まれません。 2の場合、結果セットに、次の 6の場合、行の情報をデータベース・カタログに問い合せるかわりに |
CatalogSchema |
カタログ関数に使用するDB2スキーマ。値は有効なDB2スキーマの名前であることが必要です。デフォルトは、DB2データベースのプラットフォームによって異なります。 有効な値: データ型: String パフォーマンスを向上させるため、システム・カタログ表のビューをデフォルト・カタログ・スキーマ以外のスキーマで作成できます。このプロパティにカタログ表のビューを含むスキーマを指定すると、ドライバでそれらのビューを使用できます。カタログ・メソッドを正しく機能させるには、特定のカタログ表のビューが指定したスキーマに存在している必要があります。必要となるビューは、使用しているDB2データベースによって異なります。必要となるカタログ表のビューについては、「カタログ・メソッドのデフォルト以外のスキーマ」を参照してください。 このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 |
CharsetFor65535 |
|
ClientHostName |
データベースに格納するクライアント・マシンのホスト名。この値で、データベースの 有効な値: データ型: String |
ClientUser |
データベースに格納するユーザーID。この値で、データベースの 有効な値: データ型: String |
CodePageOverride |
データ型: String デフォルトで、 |
CollectionId (非推奨) |
このプロパティは下位互換性を確保するため存続していますが、DB2パッケージをバインドするコレクションまたはライブラリ(パッケージのグループ)の名前を指定する場合は、代わりに |
ConnectionRetryCount |
正常な接続を確立できるまで、ドライバで接続を再試行する回数。 有効な値: 0 | データ型: int 0に設定すると、ドライバからの接続の最初の試行が失敗した場合でも、ドライバは接続の再試行をしません。 Xに設定すると、ドライバで、指定された回数まで接続が再試行されます。再試行で接続が確立されないと、接続を試行した最後のデータベース・サーバーによって生成された例外がドライバから戻されます。 再試行の待機間隔は、 デフォルトは5です。 |
ConnectionRetryDelay |
有効な値: 0 | 0に設定すると、ドライバでは再試行の間に遅延がありません。
デフォルトは1です。 |
ConvertNull |
データ変換におけるnull値の処理方法を制御します。 有効な値: 0 | 1 データ型: int 0の場合、列の値がnullであると、ドライバでデータ型がチェックされません。これによって、リクエストした型および列の型間の変換が定義されていない場合も、null値が戻されます。 1(デフォルト)の場合、データが格納される表の列のデータ型のためにリクエストしたデータ型がドライバからチェックされます。リクエストした型および列の型間の変換が定義されていない場合、ドライバから、列の値のデータ型にかかわらず、「サポートされないデータ変換」例外が生成されます。 |
CreateDefaultPackage |
要求されたDB2パッケージがドライバによって自動的に作成されるかどうかを指定します。 有効な値:
Linux/UNIX/Windows上のDB2では、このプロパティを z/OSおよびiSeries上のDB2では、 DB2パッケージの作成の詳細は、「DB2パッケージの作成」を参照してください。 |
CurrentFunctionPath |
動的にプリペアドSQL文内のデータ型参照および非修飾の関数名を解決するために使用するDB2スキーマ名のリスト。これは、CALL文に指定された非修飾のストアド・プロシージャ名を解決するためにも使用されます。このプロパティで、データベースのCURRENT PATHレジスタが設定されます。 有効な値: データ型: String デフォルトはnullです。 |
データベース |
|
DatabaseName (必須) |
接続先のデータベースの名前。このプロパティは、Linux/UNIX/Windows上のDB2のみでサポートされます。 注意: このプロパティは、z/OSまたはiSeries上のDB2に接続する場合の、 有効な値: データ型: StringAlias:
関連項目: 「Database接続プロパティ」。 |
DynamicSections |
DB2ドライバが、どの時点においても開くことのできるプリペアド文の最大数。値は正の整数であることが必要です。 デフォルトは200です。 |
EnableBulkLoad |
ドライバから、バッチ挿入のためにバッチ・メカニズムのかわりにデータベース内のネイティブな一括ロード・プロトコルが使用されるかどうかを指定します。バッチ操作の追加のパフォーマンスとして、データベースから実行されたデータ解析が一括ロードでバイパスされます。このプロパティでは、バッチ挿入のある既存のアプリケーションで、アプリケーション・コードを変更しないで一括ロードが使用できます。 有効な値:
データ型: boolean デフォルトは |
EnableCancelTimeout |
クエリがタイムアウトしたためドライバから送信された取消しリクエストに、取り消す文と同じ問合せタイムアウト値を適用するかどうかを指定します。 有効な値: データ型: boolean
|
EncryptionMethod |
ドライバとデータベース・サーバーの間でネットワークを介してデータを転送するときに、データが暗号化されるか復号化されるかを指定します。 注意: ドライバがSSL用に構成されているのにデータベース・サーバーでSSLがサポートされていないと、接続のハングが発生する可能性があります。SSLをサポートしていないサーバーに接続した場合に発生する問題を回避するには、LoginTimeoutプロパティを使用してログイン・タイムアウトを設定します。 有効な値:
データ型: String デフォルトは |
FailoverGranularity |
ドライバが、接続の欠落について接続の再確立を試行しているときに例外が発生する場合、プロセスを続行するか全体のフェイルオーバー・プロセスに失敗するかを指定します。 有効な値:
データ型: String デフォルトは |
FailoverMode |
ドライバから使用されるフェイルオーバー・メソッドのタイプを指定します。 有効な値:
注意:
データ型: String デフォルトは |
FailoverPreconnect |
ドライバが一度にプライマリおよび代替サーバーに接続しようとするかどうかを指定します。 有効な値:
注意: データ型: boolean デフォルトは |
Grantee |
DB2パッケージの 有効な値: データ型: String 重要: デフォルトは |
GrantExecute |
DB2パッケージの 有効な値: データ型: boolean
デフォルトは |
HostNameInCertificate |
SSL暗号化が有効になっている場合(EncryptionMethod=SSL)および検証が有効になっている場合(ValidateServerCertificate=true)、に、証明書の検証に使用するホスト名を指定します。このプロパティはオプションであり、ドライバが接続されているサーバーが実際にリクエストされたサーバーであることを保証することにより、介在者の攻撃(man-in-the-middle attack(MITM))を防ぐための追加のセキュリティを提供します。 注意:
有効な値:
データ型: String デフォルトは空の文字列です。 |
ImportStatementPool |
文プールの内容をロードするために使用されるファイルのファイル名およびパスを指定します。このプロパティが指定されている場合、文が、指定されたファイルから文プールにインポートされます。接続を確立するとき、指定されたファイルがドライバから見つけられない場合、接続に失敗して例外がスローされます。 有効な値: データ型: String デフォルトは空の文字列です。 |
InitializationString |
ドライバがデータベースへの接続を確立し、その接続のすべての初期化を実行した後に実行する1つまたは複数のSQLコマンドを指定します。SQLコマンドの実行が失敗した場合、接続試行も失敗し、どのSQLコマンドが失敗したかを示す例外が、ドライバからスローされます。 有効な値: 注意: 複数のコマンドを指定する場合はセミコロンで区切る必要があります。また、このプロパティを接続URL内に指定する場合、複数のコマンドを指定するには値全体をカッコで囲む必要があります。 例: 次の接続URLでは、
注意: データ型: String |
InsensitiveResultSetBufferSize |
ドライバがインセンシティブな結果セット・データのキャッシュに使用するメモリーの量を指定します。 有効な値: -1 | 0 | データ型: int -1の場合、ドライバはすべてのインセンシティブな結果セット・データをメモリーにキャッシュします。結果セットのサイズが利用できるメモリー容量を超えると、 0の場合、ドライバは2GBを限度としてすべてのインセンシティブな結果セット・データをメモリーにキャッシュします。結果セット・データのサイズが利用できるメモリー容量を超えると、その結果セット・データがディスクにページングされます。結果セット・データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがあります。 xの場合、xは正の整数であり、インセンシティブな結果セット・データのキャッシュに使用するメモリー・バッファのサイズ(KB単位)を指定します。結果セットのサイズがバッファ・サイズを超えると、結果セットがディスクにページングされます。結果セット・データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがあります。バッファ・サイズとして2の累乗を指定すると、メモリーの使用がより効率的になります。 デフォルトは2048 (KB)です。 |
JavaDoubleToString |
double値やfloat値をstring値に変換する際に、ドライバの内部変換アルゴリズムとJVM変換アルゴリズムのどちらを使用するかを指定します。 有効な値:
デフォルトは |
JDBCBehavior |
ドライバでJDBC 4.0データ型のNCHAR、NVARCHAR、NLONGVARCHAR、NCLOBおよびSQLXMLにマップするデータベース・データ型を表す方法を決定します。このプロパティは、アプリケーションでJava SE 6が使用される場合にのみ適用できます。 有効な値: 0 | 1 データ型: int 0の場合、ドライバによって、Java SE 6を使用するときJDBC 4.0データ型としてデータ型が表されます。 1の場合、JVMとは関係なく、ドライバによってJDBC 3.0同等データ型を使用してデータ型が表されます。これによって、アプリケーションはJava SE 6環境のJDBC 3.0型を継続して使用できます。また、JDBC 4.0メソッド デフォルトは1です。 |
KeyPassword |
SSLが有効になっていて( このプロパティは、キーストア・ファイル内のいずれかのキーに、キーストア・ファイルと異なるパスワードが保持されている場合に有用。 有効な値: データ型: String デフォルト: なし |
KeyStore |
SSLが有効になっていて( このプロパティによって、 注意: キーストア・ファイルとトラスト・ストア・ファイルは同じファイルでもかまいません。 有効な値: データ型: String デフォルト: なし |
KeyStorePassword |
SSLが有効になっていて( この値によって、 注意: キーストア・ファイルとトラスト・ストア・ファイルは同じファイルでもかまいません。 有効な値: データ型: String デフォルト: なし |
LoadBalancing |
ドライバでのデータベース・サーバー(プライマリおよび代替)への接続試行にクライアント・ロード・バランシングが使用されるかどうかを指定します。 有効な値:
デフォルト: データ型: boolean |
LocationName (必須) |
アクセスするDB2ロケーションの名前。 z/OS上のDB2では、システム管理者が次のコマンドを使用して、DB2ロケーションの名前を指定する必要があります。 iSeries上のDB2では、システム管理者が次のコマンドを使用して、DB2ロケーションの名前を指定する必要があります。このプロパティに使用すべき値は、*LOCALとしてリストされているデータベースの名前。
有効な値: string。ここでは、stringはDB2ロケーションです。 デフォルト: なし データ型: String 別名: |
LoginTimeout |
ドライバが接続が確立されるのを待機する時間(秒単位)。この時間が経過すると、制御がアプリケーションに返され、タイムアウト例外がスローされます。 有効な値: 0 | 0に設定すると、ドライバにより接続リクエストがタイムアウトされません。
デフォルト: 0 データ型: int |
MaxPooledStatements |
この接続のプールされたプリペアド文の最大数。 有効な値: 0 | 0の場合、ドライバ内部のプリペアド文プーリングが有効になっていません。
このプロパティの値が、アプリケーションで使用されるプリペアド文数より多い場合は、アプリケーションで作成されたすべてのプリペアド文がキャッシュされます。 例: このプロパティの値を20に設定すると、アプリケーションによって作成された最後の20個のプリペアド文がキャッシュされます。 デフォルト: 0 データ型: int 別名: |
MaxStatements |
|
PackageCollection |
DB2パッケージをバインドするコレクションまたはライブラリ(パッケージのグループ)の名前。 このプロパティは、Linux/UNIX/Windows上のDB2では無視されます。 注意: このプロパティは、 DB2パッケージの作成の詳細は、「DB2パッケージの作成」を参照してください。 デフォルトはNULLIDです。 |
PackageOwner |
作成されたすべてのDB2パッケージで使用するオーナー。 DB2パッケージの作成の詳細は、「DB2パッケージの作成」を参照してください。 デフォルトはNULLです。 データ型: String |
Password |
DB2データベースに接続する場合に使用するパスワード。大文字と小文字を区別します。パスワードは、データベースでセキュリティが有効化されている場合にのみ必要となります。その場合は、システム管理者に連絡してパスワードを取得します。 有効な値: デフォルト: なし データ型: String |
PortNumber |
データベース・サーバーが接続をリスニングするTCPポート。デフォルトは50000です。 |
ProgramID |
データベースに格納するクライアントのドライバのバージョンおよび製品の情報。この値で、データベースの 有効な値:
例: DDJ04100 デフォルト: 空の文字列 データ型: String |
QueryTimeout |
整数、-1、またはゼロ(0)。接続によって作成されるすべての文のデフォルトの問合せタイムアウトを秒単位で設定します。 正の整数に設定すると、その値が接続によって作成されるすべての文のデフォルト・タイムアウトとして使用されます。この接続オプションで設定したデフォルト・タイムアウトをオーバーライドするには、 -1に設定すると、問合せタイムアウト機能が無効になります。ドライバは、通知なしで 0 (デフォルト)に設定すると、デフォルトの問合せタイムアウトは無限大となります(問合せはタイムアウトしません)。 デフォルトは0です。 |
ReplacePackage |
現在のバインド・プロセスで、ドライバが使用する既存のDB2パッケージを置き換えるかどうかを指定します。 Linux/UNIX/Windows上のDB2では、このプロパティを 有効な値:
デフォルト: データ型: boolean |
ResultSetMetaDataOptions |
アプリケーションで表名情報が必要な場合は、ドライバによって、Select文のResultSetメタデータに表名情報を含めて戻すことができます。 有効な値: 0 | 1 0 (デフォルト)に設定した場合は、 1に設定した場合は、 このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは0です。 データ型: int |
SecurityMechanism (非推奨) |
このプロパティは下位互換性を確保するため存続していますが、ドライバで使用する認証方法を設定する場合は、代わりに |
SendStreamAsBlob |
32Kバイト未満のバイナリ・ストリーム・データを、Long Varchar for Bit DataまたはBlobデータとしてデータベースに送信するかどうかを指定します。32Kバイトを超えるバイナリ・ストリームはBlob列にのみ挿入できます。ドライバは、常に、32Kバイトを超えるバイナリ・ストリーム・データをBlobデータとしてデータベースに送信します。 有効な値:
このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは データ型: boolean |
ServerName (必須) |
データベース・サーバーのIPv4またはIPv6形式のIPアドレスを指定するか、(ネットワークで名前付きのサーバーがサポートされている場合は)サーバー名を指定します。 このプロパティは、データ・ソース接続でのみサポートされます。 有効な値: 例: 122.23.15.12またはDB2Serverデフォルト: なし データ型: String |
SpyAttributes |
アプリケーションのかわりにドライバで発行された呼出しの詳細情報をログするために、DataDirect Spyを有効にします。Spyはデフォルトで有効になりません。 有効な値:
デフォルト: なし データ型: String |
StripNewlines |
SQL文の改行文字をDB2サーバーに送信するかどうかを指定します。アプリケーションで使用されるSQL文に改行文字が含まれていないことがわかっている場合は、改行文字を削除しないことを指定することでDB2サーバーによる解析が不要になり、ドライバのパフォーマンスが向上します。 有効な値:
デフォルト: データ型: boolean このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 |
TrustStore |
このプロパティは、 有効な値: デフォルト: なし データ型: String |
TrustStorePassword |
EncryptionMethodプロパティでSSLが有効になっており、サーバー認証を使用している場合に、トラストストア・ファイルにアクセスするために使用するパスワードを指定します。トラストストア・ファイルには、クライアントが信頼する認証局(CA)のリストが格納されています。 この値によって、 このプロパティは、 有効な値: デフォルト: なし データ型: String |
UseCurrentSchema |
スキーマが指定されていない状態で 有効な値:
このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトはfalseです。 データ型: boolean |
User |
DB2データベースに接続する場合に使用するユーザー名。大文字と小文字を区別します。 有効な値: データ型: String |
ValidateServerCertificate |
SSL暗号化が有効(EncryptionMethod=SSL)になっている場合に、データベース・サーバーから送信された証明書を検証するかどうかを指定します。SSLサーバー認証を使用する場合、サーバーから送信されるすべての証明書は、信頼性のある認証局(CA)で発行される必要があります。テスト環境においては、信頼性のあるCAが発行した証明書でなくても、サーバーから戻されたすべての証明書をドライバが信頼するようにすることで、テスト環境内の各クライアントでトラストストア情報を指定する必要がなくなり役立ちます。 有効な値:
注意: トラストストア情報は、 デフォルト: データ型: boolean |
WithHoldCursors |
コミット時にカーソルを開いたままにするかどうかを指定します。DB2は、コミット後にオープン・カーソルをすべて閉じます(Delete cursors)か開いたままにします(Preserve cursors)。トランザクションのロールバック時には、このプロパティの指定にかかわらずすべてのカーソルが閉じられます。 有効な値: true | false
デフォルトは データ型: boolean |
XMLDescribeType |
ドライバが、XMLデータ型を、BLOBまたはCLOBのどちらのデータ型にマップするかを指定します。 有効な値:
詳細は、「返されるXMLデータとその挿入/更新」を参照してください。 デフォルトは データ型: String |
以下に示すDB2ドライバの接続プロパティを設定すると、アプリケーションのパフォーマンスを向上させることができます。
DatabaseMetaData.getColumns
メソッドは、表に関連付けられたシノニムや別名など、表に関する特性を判別するためによく使用されます。アプリケーションがLinux/UNIX/Windows上のDB2 v7.x、z/OS上のDB2、またはiSeries上のDB2にアクセスしていて、データベース表のシノニムを使用していない場合は、この情報を無視することでパフォーマンスを向上させることができます。Linux/UNIX/Windows上のDB2 v8以上にアクセスしている場合は、ドライバはDatabaseMetaData.getColumns()
メソッドに対して常にシノニムを返します。
シノニム情報を取得するのにはコストがかかります。アプリケーションでこの情報を戻す必要がない場合、ドライバによりパフォーマンスを向上できます。デフォルトでは、次のDatabaseMetaDataメソッドへの呼出し結果セット内のシノニムがドライバに含まれます。 getColumns()
、getExportedKeys()
、getFunctionColumns()
、getFunctions()
、getImportedKeys()
、getIndexInfo()
、getPrimaryKeys()
、getProcedureColumns()
およびgetProcedures()
。アプリケーションでgetColumns()
呼出しのシノニムを戻す必要がある場合、列情報のデータベース・カタログの問合せのかわりに、ResultSetMetaData
オブジェクトを使用して、ドライバによりgetColumns()
呼出しがエミュレートできます。getColumns()
を使用してSQL文を作成することに比べて、エミュレーションでSQL文を作成することはより簡単であるため、エミュレーションを使用するとパフォーマンスが向上されます。
パフォーマンスを向上させるため、システム・カタログ表のビューをデフォルト以外のカタログ・スキーマで作成できます。このプロパティが、ビューを含むスキーマの名前に設定されている場合、DB2ドライバはカタログ表のビューにアクセスできます。デフォルトのカタログ・スキーマは、Linux/UNIX/Windows上のDB2の場合はSYSCAT、z/OS上のDB2の場合はSYSIBM、iSeries上のDB2の場合はQSYS2です。
カタログ・メソッドを正しく機能させるには、特定のカタログ表のビューが指定したスキーマに存在している必要があります。必要となるビューは、使用しているDB2データベースによって異なります。指定されたスキーマに存在している必要があるカタログ表のビューの詳細は、「カタログ・メソッドのデフォルト以外のスキーマ」を参照してください。
バッチ挿入のために、ドライバによって、バッチ・メカニズムのかわりにネイティブな一括ロード・プロトコルを使用できます。バッチ操作の追加のパフォーマンスとして、データベースから実行されたデータ解析が一括ロードでバイパスされます。このプロパティをtrueに設定すると、バッチ挿入との既存のアプリケーションに、コードを変更しないで一括ロードが使用できます。
データの暗号化と復号化により余分なオーバーヘッド(主にCPUの使用率)がかかるため、パフォーマンスが低下する場合があります。
スクロール・インセンシティブな結果セットを使用する場合のパフォーマンスを向上させるため、ドライバは結果セット・データをディスクに書き込む代わりに、メモリーにキャッシュできます。デフォルトでは、ドライバはインセンシティブな結果セット・データを2 MBまでメモリーにキャッシュし、残りの結果セット・データをディスクに書き込みます。パフォーマンスを向上させるには、ドライバがデータをディスクに書き込む前に使用するメモリーの量を増やすか、ドライバがインセンシティブな結果セット・データをディスクに書込めないようにします。最大キャッシュ・サイズの設定は2 GBです。
ドライバがアプリケーション・サーバー内部から実行されない場合、または独自のプリペアド文のプールを提供しない別のアプリケーション内部から実行されない場合は、パフォーマンスを向上させるため、ドライバ独自の内部プリペアド文のプールを有効にする必要があります。ドライバの内部プリペアド文のプールを有効にすると、ドライバは、アプリケーションによって作成された特定数のプリペアド文をキャッシュします。たとえば、MaxPooledStatements
プロパティを20に設定した場合、ドライバは、アプリケーションによって作成された最後の20個のプリペアド文をキャッシュします。このプロパティに設定された値が、アプリケーションが使用するプリペアド文の数よりも大きい場合、すべてのプリペアド文がキャッシュされます。
挿入または更新する大きなバイナリ・オブジェクトがBlobとして格納される場合は、バイナリ・ストリームをBlobデータとして送信すると、パフォーマンスを向上させることができます。その場合、このプロパティはtrueに設定してください。
アプリケーションで使用されるSQL文に改行文字が含まれていないことが分かっている場合は、改行文字の削除に必要な解析を省略することで、ドライバのパフォーマンスを向上させることができます。
アプリケーションが現在のユーザーのみに所有されている表およびビューにアクセスする必要がある場合は、このプロパティをtrueに設定することでアプリケーションのパフォーマンスを向上させることができます。このプロパティをtrueに設定した場合、getTables()
およびgetColumns()
メソッドを実行すると、ドライバは現在のユーザーのみに所有されている表およびビューを返します。このプロパティをtrueに設定することは、getTables()
またはgetColumns()
の呼出しのschemaPattern
引数として、接続で使用されているユーザーIDを渡すことと同じになります。
AS//400上で動作するDB2データベースに接続する場合、locationName
プロパティを設定する必要があります。
AS/400上でWRKRDBDIRE
コマンドを実行して、「Relational Database」の値を取得します。
次のような出力が表示されます。
,Relational,,Remote,Option,,Database,,Location,,Text, , ,, , ,,S10B757B,,*LOCAL ,, ,
Javaクライアントに、DB2接続プロパティ「user」および「password」を指定したProperties
オブジェクトを設定します(「DB2接続プロパティ」を参照)。
Driver.connect()
に、パラメータとして次の文字列とPropertiesオブジェクトを指定します。
jdbc:weblogic:db2://<Host>:<Port>;LocationName=RelationalDatabaseName
この例では、RelationalDatabaseName
は、WRKRDBDIRE
コマンドを実行した結果から取得されたDatabase
の値です。
以下にJavaクライアントの一部を示します。
... Properties props = new Properties(); props.put("user", user); props.put("password", password); ... myDriver = (Driver)Class.forName("weblogic.jdbc.db2.DB2Driver").newInstance(); conn = myDriver.connect("jdbc:weblogic:db2://10.1.4.1:446;LocationName=S10B757B", props); stmt = conn.createStatement(); stmt.execute("select * from MYDATABASE.MYTABLE"); rs = stmt.getResultSet(); ...
DB2パッケージは、プログラムの準備中に生成され、SQL文の実行に使用されるDB2サーバー上の制御構造です。DB2ドライバは接続時に必要なすべてのDB2パッケージを自動的に作成します。パッケージがすでに存在する場合、ドライバは既存のパッケージを使用して接続を確立します。
注意: 接続用に作成する必要のあるパッケージの数やサイズによっては、初期接続に2、3分かかる場合があります。以降の接続ではこの遅延は発生しません。パッケージの作成が完了すると、「DB2 packages created」というメッセージが標準出力に書き込まれます。 |
デフォルトでは、DB2ドライバによって作成されるDB2パッケージには200の動的セクションが含まれており、NULLIDコレクション(またはライブラリ)の中に作成されます。ほとんどの場合、DB2ドライバが接続時に自動的に作成するため、DB2パッケージを作成する必要はありません。必要な場合は、次のいずれかの方法でDB2パッケージを作成できます。
WebLogic Serverのdbping
ユーティリティを使用して、手動でDB2ドライバにパッケージを作成させます。「dbpingを使用してDB2パッケージを作成する」を参照してください。
接続URLまたはデータ・ソース内に特定の接続プロパティを設定して、パッケージを自動的に作成します。「接続プロパティを使用したDB2パッケージの作成」を参照してください。
注意: ユーザーIDにデータベースに対するCREATE PACKAGE権限がなければなりません。ない場合は、データベース管理者が代わりにパッケージを作成する必要があります。JDBCデータ・ソースの構成に示されたユーザーIDはパッケージのオーナーでなければなりません。 DB2パッケージを作成する際のユーザーIDには、データベースに対するBINDADD権限が付与されている必要があります。適切な権限が付与されているかどうか不明な場合は、データベース管理者に問い合わせてください。 |
WebLogic タイプ4 JDBC DB2ドライバでDB2サーバー上にパッケージを作成するには、WebLogic Server dbping
ユーティリティを使用できます。dbping
ユーティリティは、JDBCドライバを介したクライアント・マシンおよびDBMS間の接続のテストに使用されます。WebLogic タイプ4 JDBC DB2ドライバはDB2パッケージがまだ存在しない場合は自動的に作成するため、このユーティリティを実行するとDB2サーバー上にデフォルトのDB2パッケージが作成されます。
dbping
ユーティリティを使用したDB2パッケージの作成の詳細は、『Oracle WebLogic Serverコマンド・リファレンス』のdbpingを使用したDB2パッケージの作成に関する項を参照してください。
初期接続URL内に特定の接続プロパティを設定すると、DB2パッケージを自動的に作成できます。表3-2に、DB2パッケージを作成する場合に初期接続URLで使用する接続プロパティを示します。
注意: WebLogic Server JDBCデータ・ソースでは、データ・ソースのすべての接続が同じURLと接続プロパティを使用するため、この方法の使用はお勧めしません。複数の接続を持つJDBCデータ・ソースを作成すると、データベース接続が作成されるたびにパッケージが再作成されます。 |
表3-2 DB2パッケージを作成する場合の初期接続URLの接続プロパティ
プロパティ | データベース |
---|---|
PackageCollection=collection_name、( |
z/OSおよびiSeries上のDB2 |
CreateDefaultPackage=true |
Linux/UNIX/Windows、z/OS、およびiSeries上のDB2 |
ReplacePackage=true |
Linux/UNIX/Windows上のDB2 |
DynamicSections=x、(xは正の整数) |
Linux/UNIX/Windows、z/OS、およびiSeries上のDB2 |
CreateDefaultPackage=TRUE
を使用するとデフォルトの名前のパッケージが作成されます。CreateDefaultPackage=TRUE
を使用して、CollectionIdを指定しない場合、NULLID CollectionIdが作成されます。
注意: Linux/UNIX/Windows上のDB2で新しいDB2パッケージを作成するには、ReplacePackage=true をCreateDefaultPackage=true と一緒に使用する必要があります。DB2パッケージがすでに存在する場合は、ReplacePackage=true の場合にそのパッケージは置き換えられます。 |
次のURLでは、400の動的セクションを持つDB2パッケージが作成されます。DB2パッケージがすでに存在している場合は、新しく作成したパッケージで置き換えられます。
jdbc:weblogic:db2://server1:50000;DatabaseName=SAMPLE; CreateDefaultPackage=TRUE;ReplacePackage=TRUE;DynamicSections=400
動的セクションは実在する実行可能オブジェクトで、動的SQLリクエストに応答するために必要なロジックが含まれています。これらのセクションは、ハンドルやプリペアド文、およびそれに関連付けられた結果セットで使用します。
場合によっては、デフォルトの数(200)より多くの動的セクションを持つDB2パッケージを作成する必要があります。アプリケーションで多数の動的セクションを持つDB2パッケージが必要な場合は、次の情報を考慮してください。
多数の動的セクションを持つDB2パッケージを作成すると、特定のサーバー・リソースを使い果たすおそれがあります。具体的には、データベース・パラメータPCKCACHE_SZ
を増やして、多数のパッケージを作成できるようにした方がよい場合があります。
より多くの動的セクションを作成すると、DB2パッケージを最初に作成するときの速度が低下します。
多数の動的セクションを持つDB2パッケージを使用すると、アプリケーションのパフォーマンスに影響を与えるおそれがあります。一度に少数のセクションが使用される場合は、アプリケーションに影響を与えません。一度に多数のセクションが使用される場合、データベースは開いたすべてのセクションのロックをチェックするためにリソースを消費するので、アプリケーションのパフォーマンスが低下します。
開いたセクションの数が増えるにつれて、デッドロック状況が発生する可能性が高くなります。
アプリケーションの大部分でselect文を実行する場合は、データベースを自動的にコミットするデフォルト・モードでの処理をお薦めします。動的セクションは、アプリケーションで文が閉じられた場合でも、データベースがコミットされるまでDB2パッケージで解放されません。このモードでは、データベースはSQL文が実行されるたびにコミットし、開かれていたすべてのセクションを解放します。手動コミット・モードで処理する必要がある場合は、データベースをできるだけ頻繁にコミットして、すべてのサーバー・リソースが適時に解放されるようにすることをお薦めします。
WebLogic Serverのプリペアド文キャッシュにキャッシュされた文は、プリペアド文を再利用できるようにセクションを使用中のままにしておく。
DB2ドライバでは動的セクションに対する制限があります。サーバーで許可されているよりも多くのセクションを作成することはできません。
表3-3に、DB2ドライバでサポートされるデータ型と、それらがJDBCデータ型へどのようにマップされるかを示します。
表3-3 DB2データ型
DB2データ型 | JDBCのデータ型 |
---|---|
Bigint脚注1 |
BIGINT |
Binary脚注2 |
BINARY |
Blob脚注3 |
BLOB |
Char |
CHAR |
Char for Bit Data |
BINARY |
Clob |
CLOB 注意: |
Date |
DATE |
DBClob脚注4 |
CLOB |
Decfloat脚注5 |
DECIMAL |
Decimal |
DECIMAL |
Double |
DOUBLE |
Float |
FLOAT |
Graphic |
CHAR 注意: |
整数 |
INTEGER |
Long Varchar |
LONGVARCHAR |
Long Varchar for Bit Data |
LONGVARBINARY |
Long Vargraphic |
LONGVARCHAR 注意: |
数値 |
NUMERIC |
Real |
REAL |
Rowid脚注6 |
VARBINARY |
Smallint |
SMALLINT |
Time |
TIME |
タイムスタンプ |
TIMESTAMP |
Varbinary |
VARBINARY |
Varchar |
VARCHAR |
Varchar for Bit Data |
VARBINARY |
Vargraphic |
VARCHAR 注意: |
XML |
CLOB 注意: |
脚注1 Linux/UNIX/Windows上のDB2 v8.1およびv8.2でのみサポートされます。
脚注 2 Linux/UNIX/Windows向けのDB2バージョン8.1およびバージョン8.2でのみサポートされます。
脚注 3 Linux/UNIX/Windows向けのDB2バージョン8.1およびバージョン8.2、z/OS向けのDB2、およびiSeries向けのDB2 V5R2およびV5R3でのみサポートされます(Large Object (LOB)のサポートを参照してください)。
脚注 4 Linux/UNIX/Windows向けのDB2バージョン8.1およびバージョン8.2、z/OS上のDB2 7.x、バージョン8.1、およびバージョン8.2、およびiSeries向けのDB2 V5R2およびV5R3でのみサポートされます(Large Object (LOB)のサポートを参照してください)。
脚注 5 Linux/UNIX/Windows向けのDB2向けのバージョン8.1およびバージョン8.2、z/OS向けのDB2 7.x、バージョン8.1、およびバージョン8.2、およびiSeries向けのDB2 V5R2およびV5R3でのみサポートされます(Large Object (LOB)のサポートを参照してください)。
脚注 6 z/OS向けのDB2、およびiSeries向けのDB2 V5R2およびV5R3でのみサポートされます。
Blob、Clob、およびDBClobデータ型の詳細は、「 Large Object (LOB)のサポート」を参照してください。 XMLデータ型の詳細は、「返されるXMLデータとその挿入/更新」を参照してください。データ型の詳細は、付録B「GetTypeInfo」を参照してください。
Linux/UNIX/Windows向けのDB2バージョン9.1では、DB2ドライバでXMLデータ型がサポートされます。XMLデータ型は、デフォルトではJDBC CLOBデータ型にマップされますが、XMLDescribeType
接続プロパティの値をblobに設定することでBLOBデータ型にマップすることも可能です。
ドライバからは、XMLデータを文字データまたはバイナリ・データとして返すことができます。たとえば、あるデータベース表を次のように定義したとします。
CREATE TABLE xmlTable (id int, xmlCol xml NOT NULL)
そして、次のようにコーディングしたとします。
String sql="SELECT xmlCol FROM xmlTable"; ResultSet rs=stmt.executeQuery(sql);
この場合、データベースから返されるXMLデータが文字データになるかバイナリ・データになるかは、XMLDescribeType
プロパティの設定によって決まります。XMLデータ型は、デフォルトではJDBC CLOBデータ型にマップされます。次の接続URLのようにXMLデータ型がBLOBデータ型にマップされている場合は、ドライバによって返されるXMLデータが文字データではなくバイナリ・データになります。
jdbc:weblogic:db2://server1:50000;DatabaseName=jdbc;User=test; Password=secret;XMLDescribeType=blob
XMLDescribeType=clob
に設定すると、XMLデータは文字データとして返されます。結果セット列は、列型のCLOBで表現され、列型名はxmlとなります。
XMLDescribeType=clob
に設定した場合は、アプリケーションで以下のメソッドを使用することで、XML列に文字データとして格納されているデータを返すことができます。
ResultSet.getString() ResultSet.getCharacterStream() ResultSet.getClob() CallableStatement.getString() CallableStatement.getClob()
データベース・サーバーから返されたXMLデータは、データベース・サーバーで使用するUTF-8エンコーディングから、UTF-16 Java文字列エンコーディングに変換されます。
アプリケーションで次のメソッドを使用することで、XML列にASCIIデータとして格納されているデータを返すことができます。
ResultSet.getAsciiStream()
データベース・サーバーから返されたXMLデータは、データベース・サーバーで使用するUTF-1エンコーディングから、ISO-8859-1 (latin1)エンコーディングに変換されます。
注意: getAsciiStream()メソッドを使用して変換を行う場合に、コンテンツ・エンコーディングがデフォルト・エンコーディングではなく、コンテンツ・エンティティを指定するXML宣言が含まれていないと、整形式でないXMLが作成される場合があります。アプリケーションで整形式のXMLが必要になる場合は、getAsciiStream()メソッドを使用しないようにしてください。 |
XMLDescribeType=blob
に設定した場合は、この項で説明した文字データ用のメソッドを使用しないでください。使用すると、JDBC文字からバイナリへの標準の変換がデータに適用され、文字データの16進表現が返されます。
XMLDescribeType=blob
に設定した場合、XMLデータはバイナリ・データとして返されます。結果セット列は、列型のBLOBで表現され、列型名はxmlとなります。
XMLDescribeType=blob
に設定した場合は、アプリケーションで以下のメソッドを使用することで、XMLデータをバイナリ・データとして返すことができます。
ResultSet.getBytes() ResultSet.getBinaryStream() ResultSet.getBlob() ResultSet.getObject() CallableStatement.getBytes() CallableStatement.getBlob() CallableStatement.getObject()
データベース・サーバーから返されるXMLデータにはデータ変換は適用されません。これらのメソッドは、UTF-8としてエンコードされたXMLデータを格納するバイト配列またはバイナリ・ストリームを返します。
XMLDescribeType=clob
に設定した場合は、この項で説明したバイナリ・データ用のメソッドを使用しないでください。使用すると、JDBCバイナリから文字への標準の変換がデータに適用され、バイナリ・データの16進表現が返されます。
XMLデータは、XMLDescribeType
接続プロパティの設定に関係なく、文字データまたはバイナリ・データとして挿入したり更新したりできます。
アプリケーションで以下のメソッドを使用することで、XMLデータを文字データとして挿入または更新できます。
PreparedStatement.setString() PreparedStatement.setCharacterStream() PreparedStatement.setClob() PreparedStatement.setObject() ResultSet.updateString() ResultSet.updateCharacterStream() ResultSet.updateClob() ReultSet.updateObject()
データの文字表現がデータベース・サーバーで使用するXML文字セットに変換され、変換後のXMLデータがサーバーに送信されます。XML処理手順が、ドライバによって解析されたり削除されたりすることはありません。
アプリケーションで以下のメソッドを使用することで、XMLデータをASCIIデータとして更新できます。
PreparedStatement.setAsciiStream() ResultSet.updateAsciiStream()
これらのメソッドに渡すデータは、ISO-8859-1 (latin 1)エンコーディングで解釈されます。ISO-8859-1のデータがデータベース・サーバーで使用するXML文字セットに変換され、変換後のXMLデータがサーバーに送信されます。
アプリケーションで以下のメソッドを使用することで、XMLデータをバイナリ・データとして挿入または更新できます。
PreparedStatement.setBytes() PreparedStatement.setBinaryStream() PreparedStatement.setBlob() PreparedStatement.setObject() ResultSet.updateBytes() ResultSet.updateBinaryStream() ResultSet.updateBlob() ReultSet.updateObject()
XMLデータがデータベース・サーバーに送信される際に、データ変換が適用されることはありません。
認証では、ユーザーの識別情報を保護することで、悪意のあるハッカーが転送中のユーザー資格証明を傍受できないようになっています。概要については「認証」を参照してください。
DB2ドライバでは、以下の認証方法がサポートされます。
ユーザーID/パスワード認証:データベースでのユーザー名とパスワードを使用して、データベースにアクセスするユーザーを認証します。指定した方法に応じて、以下のいずれかの資格証明セットがDB2データベース・サーバーに渡されます。
暗号化されたユーザーIDおよびパスワード
クリア・テキストのユーザーIDと暗号化されたパスワード
クリア・テキストのユーザーIDおよびパスワード
Kerberos認証: Kerberos (信頼性のあるサード・パーティ認証サービスの1つ)を使用してユーザーの識別情報を検証します。Kerberos認証では、オペレーティング・システムに保持されているユーザー名とパスワードを利用して、データベースにアクセスするユーザーを認証できます。それ以外のユーザー資格証明セットを使用することも可能です。
この方法を指定する場合は、Kerberos環境を構成するための知識が必要になります。また、Windows Active Directory KerberosおよびMIT Kerberosがサポートされている必要があります。
クライアント認証:ドライバを実行しているシステムにログインしたユーザーのユーザーIDを使用して、データベースにアクセスするユーザーを認証します。クライアントでのみ認証が実施され、DB2データベース・サーバーによる追加の認証は提供されません。
注意: クライアント認証を使用する場合は、データベース・サーバーでのユーザー認証が実施されません。この認証方法は、信頼性のあるクライアントだけがデータベース・サーバーにアクセスすることを保証できる場合のみ使用してください。 |
ドライバのAuthenticationMethod
接続プロパティは、ドライバが接続を確立する際に使用する認証メカニズムを指定するために使用します。このプロパティに設定する値の詳細は、「AuthenticationMethodプロパティの使用」を参照してください。
AuthenticationMethod
接続プロパティは、ドライバが接続を確立する際に使用する認証メカニズムを指定するために使用します。
AuthenticationMethod=kerberos
に設定すると、接続を確立する際にKerberos認証が使用されます。UserプロパティとPasswordプロパティに指定された値は無視されます。
AuthenticationMethod=encryptedUIDPassword
、AuthenticationMethod=encryptedPassword
、またはAuthenticationMethod=clearText
(デフォルト)に設定すると、接続を確立する際にユーザーID/パスワード認証が使用されます。UserプロパティはユーザーIDを提供します。Passwordプロパティはパスワードを提供します。DB2サーバーに渡される資格証明のセットは、指定した値によって変わってきます。
AuthenticationMethod=encryptedUIDPassword
に設定した場合は、暗号化されたユーザーIDおよびパスワードがDB2サーバーに渡されます。
AuthenticationMethod=encryptedPassword
に設定した場合は、クリア・テキストのユーザーIDと暗号化されたパスワードがDB2サーバーに渡されます。
AuthenticationMethod=clearText
に設定した場合は、クリア・テキストのユーザーIDおよびパスワードがDB2サーバーに渡されます。
これらの値のいずれかを設定した場合は、EncryptionMethod
プロパティに設定した方法でデータを暗号化することも可能です。
AuthenticationMethod=client
を設定すると、接続を確立する際に、ドライバを実行しているシステムにログインしたユーザーのユーザーIDが使用されます。クライアントでのみ認証が実施され、DB2データベース・サーバーによる追加の認証は提供されません。User
プロパティとPasswordプロパティに指定された値は無視されます。
ユーザーID/パスワード認証を構成するには:
AuthenticationMethod
プロパティをencryptedUIDPassword、encryptedPassword、またはclearText (デフォルト)に設定します。このプロパティに設定する値の詳細は、「AuthenticationMethodプロパティの使用」を参照してください。
User
プロパティにユーザーIDを設定します。
Password
プロパティにパスワードを設定します。
この項では、DB2ドライバにKerberos認証を構成する場合の要件と手順について説明します。
ドライバにKerberos認証を構成する前に、使用している環境が表3-4の要件を満たしていることを確認してください。
表3-4 DB2ドライバにKerberos認証を構成する場合の要件
コンポーネント | 要件 |
---|---|
データベース・サーバー |
データベース・サーバーは、以下のいずれかのバージョンでなければなりません。
|
Kerberosサーバー |
Kerberosサーバーは、認証に使用するユーザーIDを管理します。Kerberos KDCもKerberosサーバーで管理します。
|
クライアント |
J2SE 1.4.2以上がインストールされている必要があります。 |
WebLogic Server JDBCドライバをインストールする際には、Kerberos認証で必要となる以下のファイルがWL_HOME
\server\lib
フォルダにインストールされます。なお、WL_HOMEはWebLogic Serverのインストール・ディレクトリです。
krb5.conf。KerberosレルムやそのレルムのKDC名を保持するKerberos構成ファイルです。WebLogic Serverでは汎用ファイルがインストールされるため、使用している環境に合わせて変更する必要があります。
JDBCDriverLogin.confファイル。Kerberos認証に使用するJAAS (Java Authentication and Authorization Service)ログイン・モジュールを指定する構成ファイルです。java.security.auth.login.configシステム・プロパティで別の構成ファイルをロードするように設定されていない限り、このファイルが自動的にロードされます。このファイルを変更することは可能ですが、JAASログイン・モジュールを構成するためには、このファイル内、または指定されている他のログイン構成ファイル内に、JDBC_DRIVER_01エントリが含まれていなければなりません。このファイルの構成オプションの設定については、使用しているJ2SEのドキュメントを参照してください。
ドライバを構成するには:
AuthenticationMethod
プロパティをkerberosに設定します。このプロパティに設定する値の詳細は、「AuthenticationMethodプロパティの使用」を参照してください。
krb5.conf
ファイルをテキスト・エディタで編集するか、java.security.krb5.realm
およびjava.security.krb5.kdc
システム・プロパティを指定して、Kerberosレルム名とそのKDC名を指定します。
注意: Windows Active Directoryを使用している場合、Kerberosレルム名はWindowsドメイン名、KDC名はWindowsドメイン・コントローラ名となります。 |
たとえば、Kerberosレルム名がXYZ.COM、KDC名がkdc1である場合、krb5.conf
ファイルは次のようになります。
[libdefaults] default_realm = XYZ.COM [realms] XYZ.COM = { kdc = kdc1 }
krb5.conf
ファイルに有効なKerberosレルム名とKDC名が指定されていない場合は、次の例外がスローされます。
Message:[OWLS][DB2 JDBC Driver]Could not establish a connection using integrated security: No valid credentials provided
java.security.krb5.conf
システム・プロパティで別のKerberos構成ファイルをロードするように設定されていないかぎり、WebLogic JDBCドライバと一緒にインストールされたkrb5.conf
ファイルが自動的にロードされるように構成されます。
Java 2プラットフォームのセキュリティ・マネージャでKerberos認証を使用する場合は、アプリケーションとドライバにセキュリティ権限を付与する必要があります。詳細は、「Kerberos認証のための権限」を参照してください。
Kerberos認証を使用する場合、デフォルトでは、オペレーティング・システムに保持されているユーザーIDとパスワードを使用して、データベースにアクセスするユーザーの認証が行われます。オペレーティング・システムで使用されているユーザー名とパスワードをデータベースでも使用できるため、有効なオペレーティング・システム・アカウントにログインしているユーザーであれば、ユーザー名とパスワードを入力せずにデータベースにログインできます。
デフォルト以外のユーザー資格証明を使用することも可能です。たとえば、アプリケーション・サーバーやWebサーバーの多くは、サーバー・ユーザーとしてではなく、アプリケーションが実行されているマシンにログオンしたクライアント・ユーザーの代理として処理を実行します。
サーバー・ユーザーのオペレーティング・システム資格証明ではなく、それ以外のユーザー資格証明を使用する場合は、次のようなコードをアプリケーションに追加し、認証に使用するjavax.security.auth.Subjectを取得してドライバに渡します。
import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; import java.sql.*; // The following code creates a javax.security.auth.Subject instance // used for authentication. Refer to the Java Authentication // and Authorization Service documentation for details on using a // LoginContext to obtain a Subject. LoginContext lc = null; Subject subject = null; try { lc = new LoginContext("JaasSample", new TextCallbackHandler()); lc.login(); subject = lc.getSubject(); } catch (Exception le) { ... // display login error } // This application passes the javax.security.auth.Subject // to the driver by executing the driver code as the subject Connection con = (Connection) Subject.doAs(subject, new PrivilegedExceptionAction() { public Object run() { Connection con = null; try { Class.forName("com.ddtek.jdbc.db2.DB2Driver"); String url = "jdbc:weblogic:db2://myServer:50000; DatabaseName=jdbc"; con = DriverManager.getConnection(url); } catch (Exception except) { ... //log the connection error Return null; } return con; } }); // This application now has a connection that was authenticated with // the subject. The application can now use the connection. Statement stmt = con.createStatement(); String sql = "select * from employee"; ResultSet rs = stmt.executeQuery(sql); ... // do something with the results
アプリケーション・ユーザーがKerberos認証を使用する場合は、まずKerberosサーバーからKerberosチケット認可チケット(TGT)を取得する必要があります。Kerberosサーバーでは、TGTに格納されている資格証明を使用して、ユーザーの識別情報を検証し、サービスへのアクセスを制御します。
アプリケーションがWindowsクライアントからKerberos認証を使用する場合は、アプリケーション・ユーザーが明示的にTGTを取得する必要はありません。ユーザーのTGTは、Windows Active Directoryによって自動的に取得されます。
アプリケーションがUNIXまたはLinuxクライアントからKerberos認証を使用する場合は、ユーザーが明示的にTGTを取得する必要があります。ユーザーがTGTを明示的に取得するには、kinitコマンドを使用してKerberosサーバーにログインする必要があります。たとえば、次に示すコマンドは、存続期間が10時間で5日間更新可能なTGTをサーバーにリクエストしています。
kinit -l 10h -r 5d user
ここで、userはアプリケーション・ユーザーです。
kinitコマンドの使用とユーザーのTGTの取得については、Kerberosドキュメントを参照してください。
AuthenticationMethod
プロパティをclientに設定します。このプロパティに設定する値の詳細は、「AuthenticationMethodプロパティの使用」を参照してください。
DB2ドライバでは、iSeries上のDB2 V5R3以上でSSL暗号化がサポートされるようになりました。SSLが提供する暗号化と認証によって、データの整合性を確保できます。DB2ドライバでは、SSLサーバー認証とSSLクライアント認証の両方がサポートされます。
詳細は、「SSL暗号化」を参照してください。
注意: データの暗号化と復号化により余分なオーバーヘッド(主にCPUの使用率)がかかるため、パフォーマンスが低下する場合があります。 |
注意: ドライバがSSL用に構成されているのにデータベース・サーバーでSSLがサポートされていないと、接続のハングが発生する可能性があります。SSLをサポートしていないサーバーに接続した場合に発生する問題を回避するには、LoginTimeoutプロパティを使用してログイン・タイムアウトを設定します。 |
SSL暗号化を構成するには:
EncryptionMethod
プロパティをSSLに設定します。
SSLサーバー認証に使用するトラスト・ストア・ファイルの場所とパスワードを指定します。TrustStore
およびTrustStorePassword
プロパティ、またはそれぞれに対応するJavaシステム・プロパティ(javax.net.ssl.trustStore
およびjavax.net.ssl.trustStorePassword
)を設定します。
データベース・サーバーから送信された証明書を検証する場合は、ValidateServerCertificate
プロパティをtrueに設定します。
必要に応じて、証明書の検証に使用するホスト名をHostNameInCertificate
プロパティに設定します。HostNameInCertificate
プロパティは、ドライバが接続されているサーバーが実際にリクエストされたサーバーであることを保証することにより、介在者の攻撃(man-in-the-middle attack)を防ぐための追加のセキュリティを提供します。
データベース・サーバーがSSLクライアント認証用に構成されている場合は、使用するキーストア情報を構成します。
キーストア・ファイルの場所とパスワードを指定します。KeyStore
およびKeyStorePassword
プロパティ、またはそれぞれに対応するJavaシステム・プロパティ(javax.net.ssl.keyStore
およびjavax.net.ssl.keyStorePassword
)を設定します。
キーストア・ファイル内のいずれかのキー・エントリがパスワードで保護されている場合は、KeyPasswordプロパティにキー・パスワードを設定します。
CatalogSchema
プロパティがデフォルト以外のスキーマに設定されている場合に、カタログ・メソッドが適切に機能するためには、表3-5に示すカタログ表のビューが、指定されたスキーマに存在している必要があります。必要となるビューは、使用しているDB2データベースによって異なります。
表3-5 DB2のカタログ表
データベース | カタログ表 |
---|---|
Linux/UNIX/Windows上のDB2 |
SYSCAT.TABLES SYSCAT.COLUMNS SYSCAT.PROCEDURES SYSCAT.PROCPARAMS SYSCAT.COLAUTH SYSCAT.TABAUTH SYSCAT.KEYCOLUSE SYSCAT.INDEXES SYSCAT.INDEXCOLUSE SYSCAT.REFERENCES SYSCAT.SYSSCHEMATA SYSCAT.TYPEMAPPINGS SYSCAT.DBAUTH |
z/OS上のDB2 |
SYSIBM.SYSTABCONST SYSIBM.SYSTABLES SYSIBM.SYSSYNONYMS SYSIBM.SYSCOLUMNS SYSIBM.SYSPROCEDURES SYSIBM.SYSROUTINES SYSIBM.SYSPARMS SYSIBM.SYSCOLAUTH SYSIBM.SYSTABAUTH SYSIBM.SYSKEYS SYSIBM.SYSINDEXES SYSIBM.SYSRELS SYSIBM.SYSFOREIGNKEYS SYSIBM.SYSSCHEMAAUTH SYSIBM.SYSDBAUTH |
iSeries上のDB2 |
QSYS2.SYSCST QSYS2.SYSKEYCST QSYS2.SYSPROCS QSYS2.SYSPARMS QSYS2.SYSTABLES QSYS2.SYSSYNONYM QSYS2.SYSCOLUMNS QSYS2.SQLTABLEPRIVILEGES QSYS2.SYSKEYS QSYS2.SYSINDEXES QSYS2.SYSREFCSTS |
DB2ドライバでは、次のデータベースの再認証がサポートされます。
Linux/UNIX/Windows向けのDB2バージョン9.1以上。スイッチを実行するユーザーにSETSESSIONUSER権限が付与されている必要があります。
Linux/UNIX/Windows向けのDB2バージョン8.1.4以上。スイッチを実行するユーザーにSYSADM権限が付与されている必要があります。
別のユーザーへの接続に切り替える前に、アプリケーションでは、1つのユーザーとして作成されたすべての結果セットまたは文がクローズしたことを確認してから再認証を実行する必要があります。
接続のユーザーを切り替えるには、アプリケーションによってExtConnection
インタフェースのsetCurrentUser()
メソッドを使用できます。
setCurrentUser()
メソッドでは、ドライバ固有の再認証オプションを受け入れます。DB2向けにサポートされるオプションは、次のオプションです。
CURRENT_SCHEMA
現在のスキーマ名を指定します。値は、有効なDB2スキーマ名である必要があります。
setCurrentUser()
メソッドが呼出され、このオプションが指定されていない場合、または値が#USER#
に設定されている場合、スキーマが現在のユーザーのスキーマに切り替えられます。setCurrentUser()
メソッドが呼出され、このオプションが空の文字列として指定されている場合、ユーザーのみが切り替えられ、スキーマが切り替えられません。
CURRENT_PATH
ストアド・プロシージャとファンクション検索のときデータベースで使用される現在のパスを指定します。値は、DB2 CURRENT PATH
特殊レジスタの有効なパス名であることです。
setCurrentUser()
メソッドが呼出され、このオプションが指定されていない場合、または値が#USER#
に設定されている場合、パスが現在のユーザーのパスに切り替えられます。setCurrentUser()
メソッドが呼出され、このオプションが空の文字列として指定されている場合、ユーザーのみが切り替えられ、パスが切り替えられません。
DB2ドライバでサポートされるSQLエスケープ・シーケンスについては、付録C「JDBCのSQLエスケープ・シーケンス」を参照してください。
DB2ドライバでサポートされる分離レベルを表3-6に示します。JDBC分離レベルは、表に示す適切なDB2トランザクション分離レベルにマップされています。デフォルトの分離レベルはRead Committed
です。
表3-6 サポートされる分離レベル
JDBC分離レベル | DB2分離レベル |
---|---|
なし |
No Commit脚注1 |
Read Committed |
Cursor Stability |
Read Uncommitted |
Uncommitted Read |
Repeatable Read |
Read Stability |
Serializable |
Repeatable Read |
脚注1 ジャーナリングが有効になっていないDB2 iSeriesバージョン用にサポートされています。
DB2ドライバは、スクロール・インセンシティブな結果セット、および更新可能な結果セットをサポートしています。
注意: DB2ドライバが、リクエストされた結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入ったSQLWarningを生成します。 |
DB2ドライバでJTAを介して分散トランザクションを使用するには、以下のいずれかのバージョンのデータベースを使用する必要があります。
Linux/UNIX/Windows上のDB2 v8.x以上
iSeries上のDB2 V5R4
z/OS上のDB2 v9.1
Blobの取得および更新は、DB2ドライバと以下のデータベースでサポートされます。
Linux/UNIX/Windows上のDB2 v8.x以上
z/OS上のDB2
iSeries上のDB2 V5R2以上
Clobの取得および更新は、DB2ドライバとサポート対象のすべてのDB2データベースでサポートされます。DB2ドライバは以下のDB2データベースで、最大2 GBのClobをサポートします。
Linux/UNIX/Windows上のDB2 v8.x以上
z/OS上のDB2
iSeries上のDB2 V5R2以上
上記以外のサポート対象のDB2データベースの場合、DB2ドライバは最大32KBのClobの取得および更新をサポートします。
DBClobの取得および更新は、DB2ドライバと以下のデータベースでサポートされます。
Linux/UNIX/Windows上のDB2 v8.x以上
z/OS上のDB2
iSeries上のDB2 V5R2以上
DB2ドライバでは、ネイティブのDB2バッチ・メカニズムが使用されます。デフォルトでは、PreparedStatementを使用して実行されるバッチ処理のパラメータ値を設定するのに使用するメソッドは、パラメータが関連付けられる列のデータベース・データ型に一致する必要があります。
DB2サーバーでは暗黙的なデータ変換を実行しないため、列のデータ型に一致しないパラメータ値を指定すると、DB2サーバーはエラーを生成します。たとえば、ストリームまたは配列の長さが32KB未満の場合にそのストリームまたはバイト配列を使用してBlobパラメータの値を設定するには、setObject()
メソッドを使用し、対象のJDBC型をBLOBとして指定する必要があります。setBinaryStream()
またはsetBytes()
メソッドは使用できません。
メソッド・タイプの制限を削除するには、BatchPerformanceWorkaround
プロパティをtrueに設定します。たとえば、setBinaryStream()
またはsetBytes()
メソッドを使用すると、ストリームや配列の長さに関係なくBlobパラメータの値を設定できます。ただし、パラメータの設定は指定された順序で実行されない場合もあります。パラメータ・データを正しいデータ型に変換して文を再実行する必要があるため、パフォーマンスが低下する場合があります。
注意: 管理コンソールでデータ・ソースを作成する場合、管理コンソールではBatchPeformanceWorkaround接続プロパティが、デフォルトでtrueに設定されます。DB2用のWebLogic タイプ4 JDBCドライバを使用し、JMS JDBCストアとして使用されるデータ・ソースの場合は、BatchPerformanceWorkaroundプロパティをtrueに設定する必要があります。 |
DB2ドライバでは、この項で説明するようにパラメータ・メタデータを返すことができます。
DB2ドライバは、以下のDB2データベースで、あらゆるタイプのSQL文のパラメータ・メタデータを返すことができます。
Linux/UNIX/Windows上のDB2 v8.x以上
z/OS上のDB2
iSeries上のDB2 V5R2以上
Linux/UNIX/Windows上のDB2 v7xおよびiSeries上のDB2 V5R1の場合、DB2ドライバは、以下の形式のInsert文およびUpdate文のパラメータ・メタデータを返すことができます。
INSERT INTO foo VALUES (?, ?, ?)
INSERT INTO foo (col1, col2, col3) VALUES (?, ?, ?)
UPDATE foo SET col1=?, col2=?, col3=?WHERE col1 operator?[{AND | OR} col2 operator ?]
ここで、operatorはSQL演算子(=、<、>、<=、>=、または<>)です。
DB2ドライバは、以下のDB2データベースで、あらゆるタイプのSQL文のパラメータ・メタデータを返すことができます。
Linux/UNIX/Windows上のDB2 v8.x以上
z/OS上のDB2
iSeries上のDB2 V5R2以上
Linux/UNIX/Windows上のDB2 v7xおよびiSeries上のV5R1の場合、DB2ドライバは、ANSI SQL 92エントリ・レベルの述語(比較、BETWEEN、IN、LIKE、EXISTSなどの述語構文)にパラメータを含んでいるSelect文に対してパラメータ・メタデータを返すことができます。詳細な構文については、ANSI SQLリファレンスを参照してください。
以下のいずれかの条件に該当する場合は、Select文に対してパラメータ・メタデータを返すことができます。
文に、関連するFROM句内のソース表を対象とする、述語の値式が含まれている場合。例:
SELECT * FROM foo WHERE bar > ?
この場合、値式「bar」は表「foo」を対象として、パラメータの適切なメタデータを決定することができます。
文に、ネストされた問合せとなっている述語の値式が含まれている場合。ネストされた問合せのメタデータでは単一の列を記述する必要があります。例:
SELECT * FROM foo WHERE (SELECT x FROM y WHERE z = 1) < ?
以下のSelect文では、パラメータ・メタデータを返すことができる例をさらに示しています。
SELECT col1, col2 FROM foo WHERE col1 = ? and col2 > ? SELECT ... WHERE colname = (SELECT col2 FROM t2 WHERE col3 = ?) SELECT ... WHERE colname LIKE ? SELECT ... WHERE colname BETWEEN ? and ? SELECT ... WHERE colname IN (?, ?, ?) SELECT ... WHERE EXISTS(SELECT ... FROM T2 WHERE col1 < ?)
GROUP BY、HAVING、またはORDER BYを含むWHERE句でANSI SQL 92エントリ・レベルの述語を使用する文がサポートされます。例:
SELECT * FROM t1 WHERE col = ? ORDER BY 1
結合がサポートされます。例:
SELECT * FROM t1,t2 WHERE t1.col1 = ?
完全修飾名と別名がサポートされます。例:
SELECT a, b, c, d FROM T1 AS A, T2 AS B WHERE A.a = ? and B.b = ?"
アプリケーションで表名情報が必要な場合、DB2ドライバはSelect文のResultSetメタデータに含めて表名情報を返すことができます。ResultSetMetaDataOptions
プロパティを1に設定した場合、ResultSetMetaData.getTableName()
メソッドが呼び出されたとき、DB2ドライバは結果セット内の各列の正しい表名を決定する追加の処理を実行します。それ以外の場合、getTableName()
メソッドは結果セット内の列ごとに空の文字列を返す可能性があります。
DB2ドライバが返す表名情報は、結果セット内の列がデータベース表内の列にマップされているかどうかによって異なります。結果セット内の各列がデータベース表内の列にマップされている場合、DB2ドライバはその列に関連付けられている表名を返します。結果セット内の各列が表内の列にマップされていない場合(集約やリテラルなど)、DB2ドライバは空の文字列を返します。
ResultSetメタデータが返されるSelect文には、別名、結合、および完全修飾名を含めることができます。以下の問合せは、ResultSetMetaData.getTableName()
メソッドによってSelectリスト内の各列の正しい表名が返される、Select文の例です。
SELECT id, name FROM Employee SELECT E.id, E.name FROM Employee E SELECT E.id, E.name AS EmployeeName FROM Employee E SELECT E.id, E.name, I.location, I.phone FROM Employee E, EmployeeInfo I WHERE E.id = I.id SELECT id, name, location, phone FROM Employee, EmployeeInfo WHERE id = empId SELECT Employee.id, Employee.name, EmployeeInfo.location, EmployeeInfo.phone FROM Employee, EmployeeInfo WHERE Employee.id = EmployeeInfo.id
生成された列の場合、ドライバによって返される表名は空の文字列です。以下の問合せは、生成された列(「upper」という名前の列)を含む結果セットを返すSelect文の例です。
SELECT E.id, E.name as EmployeeName, {fn UCASE(E.name)} AS upper FROM Employee E
DB2ドライバは、ResultSetMetaData.getSchemaName()
メソッドとResultSetMetaData.getCatalogName()
メソッドが呼び出された場合、スキーマ名とカタログ名の情報を返すこともできます(ドライバがこの情報を判別できる場合)。たとえば、以下の文の場合、DB2ドライバはカタログ名として「test」、スキーマ名として「test1」、表名として「foo」を返します。
SELECT * FROM test.test1.foo
表名、スキーマ名、およびカタログ名の情報を返すために必要な追加の処理は、ResultSetMetaData.getTableName()
、ResultSetMetaData.getSchemaName()
、またはResultSetMetaData.getCatalogName()
メソッドが呼び出された場合にのみ実行されます。
DB2ドライバは、以下のようなRowSetインタフェースのJSR 114実装をサポートします。
CachedRowSet
FilteredRowSet
WebRowSet
JoinRowSet
JDBCRowSet
ドライバでRowSetを使用するには、J2SE 1.4以上が必要です。
JSR 114の詳細は、http://www.jcp.org/en/jsr/detail?id=114
を参照してください。
DB2ドライバは自動生成キーの値の取得をサポートします。DB2ドライバから返される自動生成キーは、auto-increment列の値です。
自動生成キーの値を返すことができるのは、アプリケーションでInsert文を実行するときです。値を返す方法は、パラメータを含むInsert文を使用しているかどうかによって異なります。
パラメータを含まないInsert
文を使用する場合、DB2ドライバは次の形式のStatement.execute()
メソッドおよびStatement.executeUpdate()
メソッドをサポートします。これらのメソッドは、ドライバに自動生成キーの値を返すよう指示するためのものです。
Statement.execute(String
sql, int
autoGeneratedKeys)
Statement.execute(String sql, int[]
columnIndexes
)
Statement.execute(String sql, String[]
columnNames
)
Statement.executeUpdate(String sql, int
autoGeneratedKeys
)
Statement.executeUpdate(String sql, int[]
columnIndexes
)
Statement.executeUpdate(String sql, String[]
columnNames
)
パラメータを含むInsert
文を使用する場合、DB2ドライバは次の形式のConnection.prepareStatement
メソッドをサポートします。このメソッドは、ドライバに自動生成キーの値を返すよう通知するためのものです。
Connection.prepareStatement(String sql, int
autoGeneratedKeys
)
Connection.prepareStatement(String sql, int[]
columnIndexes
)
Connection.prepareStatement(String sql, String[]
columnNames
)
自動生成キーの値は、Statement.getGeneratedKeys()
メソッドを使用して取得できます。このメソッドは、各自動生成キーの列とともにResultSetオブジェクトを返します。
Database接続プロパティは、DatabaseName
接続プロパティのシノニムとして使用できます。
接続URLにDatabaseとDatabaseNameの両方の接続プロパティが指定されている場合は、接続URL内で後ろの方に指定されているプロパティが使用されます。たとえば、アプリケーションで次のようなURLを指定した場合、DatabaseName接続プロパティの値ではなく、Database接続プロパティの値が使用されます。
jdbc:weblogic:db2://server1:50000;DatabaseName=jdbc;Database=acct; User=test;Password=secret
z/OSまたはiSeries上のDB2に接続する場合、DB2ロケーションの名前を指定するにはLocationName接続プロパティを使用する必要がありました。しかし、Linux/UNIX/Windowsだけでなくz/OSおよびiSeries上のDB2に接続する場合にも、DatabaseName接続プロパティを使用できるようになりました。
Linux/UNIX/Windows上のDB2に接続する場合は、DatabaseName接続プロパティを使用してデータベースの名前を指定します。z/OSまたはiSeries上のDB2に接続する場合は、DatabaseName接続プロパティを使用してDB2ロケーションの名前を指定します。
DB2ドライバでは、以下がサポートされるようになりました。
グラフィック・データを格納するための新しいデータ型(すべてのDB2データベース・バージョンが対象)
z/OS上のDB2 v9.1でサポートされることになったXMLデータ型などの新しいデータ型(これまではLinux/UNIX/Windows上のDB2 V9.1でのみサポートされていたデータ型)
表3-7および表3-8に、これらのデータ型とJDBCデータ型へのマッピングを示します。
表3-8 DB2 v9.1 for z/OSでサポートされる新しいDB2データ型
DB2データ型 | JDBCのデータ型 |
---|---|
Bigint |
BIGINT |
バイナリ |
BINARY |
Decfloat |
DECIMAL |
Varbinary |
VARBINARY |
XML |
CLOB |
getTypeInfo()メソッドによって返されるデータ型については、付録B「GetTypeInfo」を参照してください。
XMLデータ型の使用方法については、「返されるXMLデータとその挿入/更新」を参照してください。
DB2ドライバでサポートされるその他のデータ型については、「データ型」を参照してください。
z/OS上のDB2 v9.1でSQLプロシージャがサポートされるようになりました。
ドライバでは、DataDirect Bulk Loadの機能がサポートされます。この機能を使用すると、アプリケーションでは大量のデータ行を、多数の小さいデータベース・プロトコル・パケットではなく連続ストリームとしてデータベースに送信できます。バッチ操作と同様に、ネットワーク上のラウンド・トリップが少なくなるので、パフォーマンスが向上します。バルク・ロードによって、通常データベースで行われるデータの解析が省略されるので、バッチ操作よりもさらにパフォーマンスが向上します。