ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server タイプ4 JDBCドライバ
11g リリース1(10.3.3)
B61001-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストヘ移動
製品
目次へ移動
目次

前
 
次
 

4 Informixドライバ

次の項では、WebLogic タイプ4 JDBC Informixドライバの構成方法と使用方法について説明します。

Informixドライバ・クラス

WebLogic タイプ4 JDBC Informixドライバのドライバ・クラスは次のとおりです。

XA: weblogic.jdbcx.informix.InformixDataSource
Non-XA: weblogic.jdbc.informix.InformixDriver

WebLogic ServerドメインにJDBCデータ・ソースを構成する場合に、これらのドライバ・クラスを使用します。

Informix URL

Informixデータベースに接続するには、次の形式のURLを使用します。

jdbc:weblogic:informix://hostname:port[;property=value[;...]]

説明:

例:

jdbc:weblogic:informix://server4:1526;informixServer=ol_test;
DatabaseName=ACCT01;User=test;Password=secret

Informix接続プロパティ

表4-1に、InformixドライバでサポートされるJDBC接続プロパティを示し、各プロパティについて説明します。WebLogic ServerドメインのJDBCデータ・ソースの構成でこれらの接続プロパティを使用できます。プロパティを指定するには、JDBCデータ・ソースの構成で次の形式を使用します。 property=value


注意:

すべての接続プロパティ名で大文字と小文字は区別されません。たとえば、Passwordはpasswordと同じです。必須のプロパティかどうかが記載されています。各接続プロパティで示されているデータ型は、JDBCデータ・ソースのプロパティ値に使用されるJavaデータ型です。

表4-1 Informixの接続文字列のプロパティ

プロパティ 説明

AccountingInfo

データベースに格納する会計情報。この値がローカルに格納され、データベースの管理/監視に使用されます。

データ型: string

有効な値: string(ここで、stringは会計情報です)。デフォルトは、空の文字列です。

AlternateServers

選択したフェイルオーバー・メソッドに応じて、新規接続または切断接続の場合に使用される代替データベース・サーバーのリスト。フェイルオーバー・メソッドの選択については、FailoverModeプロパティを参照してください。

データ型: String

有効な値:

(servername1[:port1][;property=value[;...]

,servername2[:port2][;property=value[;...]]]...]

各代替サーバー・エントリのサーバー名(servername1servername2など)が必要です。各代替サーバー・エントリのポート番号(port1port2など)および接続プロパティ(property=value)はオプションです。ポートが指定されていない場合、プライマリ・サーバーのポート番号が使用されます。プライマリ・サーバーのポート番号が指定されていない場合、2003のデフォルトのポート番号が使用されます。オプションの接続プロパティはDatabaseNameおよびInformixServerです。

たとえば: 次のURLでは、server2およびserver3の代替サーバー・エントリが含まれます。代替サーバー・エントリでは、オプションのInformixServerプロパティが含まれます。

jdbc:weblogic:informix://server1:2003;InformixServer=TestServer;DatabaseName=Test;AlternateServers=(server2:2003;InformixServer=TestServer2,server3:2003;InformixServer=TestServer3)

デフォルト: なし

ApplicationName

データベースに格納するアプリケーション名。この値がローカルに格納され、データベースの管理/監視に使用されます。

データ型: String

有効な値: string(ここで、stringはアプリケーション名です)。デフォルトは、空の文字列です。

ClientHostName

データベースに格納するクライアント・マシンのホスト名。この値がローカルに格納され、データベースの管理/監視に使用されます。

データ型: String

有効な値: string(ここで、stringはクライアント・マシンのホスト名です)。デフォルトは、空の文字列です。

ClientUser

データベースに格納するユーザーID。この値がローカルに格納され、データベースの管理/監視に使用されます。

データ型: String

有効な値: string(ここで、stringはアプリケーション名です)。デフォルトは、空の文字列です。

CodePageOverride

文字データの変換のためにドライバにより使用されるコード・ページ。指定したコード・ページによって、デフォルトのデータベース・コード・ページまたは列照合がオーバーライドされます。データベースとやり取り(取得および書込み)するすべての文字データは、指定したコード・ページを使用して変換されます。

デフォルトでは、文字データの変換に使用するコード・ページがドライバにより自動的に識別されます。このプロパティは、ドライバのデフォルト動作を変更する必要がある場合にのみ使用します。例: CP950

データ型: String

有効な値: string(ここで、stringは、JVMでサポートされる有効なコード・ページ名です)。デフォルトの値はNoneです。

ConnectionRetryCount

ドライバからのプライマリ・データベース・サーバーへの接続再試行数。指定されている場合、正常な接続を確立するまで代替サーバーへの接続を再試行します。アプリケーションでログイン・タイムアウト値が設定されている場合(たとえば、DataSource.loginTimeoutまたはDriverManager.loginTimeoutを使用)、そのログイン・タイムアウトをすぎると、ドライバが接続試行を中断します。

データ型: Int

有効な値: 0 | x(ここで、xは正の整数です)。デフォルトは5です。

0に設定すると、最初の試行が失敗した場合でも再接続は試行されません。

xを設定すると、ドライバでは指定された回数まで接続が再試行されます。再試行のとき接続が確立されていないと、接続が試行した最後のデータベース・サーバーによって生成された例外がドライバから戻されます。ConnectionRetryDelayプロパティによって、それぞれの接続の再試行の間に待機する秒数が指定されます。

例: このプロパティが2に設定され、代替サーバーがAlternateServersプロパティで指定された場合、ドライバによって、最初の再試行の後、サーバーのリストが2回(プライマリおよび代替)試行されます。

ConnectionRetryDelay

ConnectionRetryCountが正の整数に設定されている場合に、ドライバがそれぞれの接続の再試行の間に待機する秒数。

例: ConnectionRetryCountが2に設定され、このプロパティが3に設定され、代替サーバーがAlternateServersプロパティで指定された場合、ドライバによって、最初の再試行の後、サーバーのリストが2回(プライマリおよび代替)試行されます。ドライバは再試行の間に3秒まで待機します。

データ型: Int

有効な値: 0 | x(ここで、xは正の整数です)。デフォルトは1です。

ConvertNull

データ変換におけるnull値の処理方法を制御します。

データ型: Int

有効な値: 0 | 1。デフォルトは1です。

1に設定すると、データが格納される表の列のデータ型のためにリクエストしたデータ型がドライバからチェックされます。リクエストした型および列の型間の変換が定義されていない場合、ドライバから、列の値のデータ型にかかわらず、「サポートされないデータ変換」例外が生成されます。

0に設定すると、列の値がnullの場合でもデータ型の照合は実行されません。このように設定することで、リクエストされた型と列型の間の変換が定義されていない場合でもnull値を返すことが可能になります。

データベース

DatabaseNameプロパティの別名。

DatabaseName

接続先のデータベースの名前。

このプロパティを指定しない場合、指定したサーバーへの接続は確立されますが、特定のデータベースには接続されません。データベースに接続せずに確立されたサーバーへの接続では、アプリケーションでSQL文のCREATE DATABASEおよびDROP DATABASEを使用できます。これらの文を使用する場合は、ドライバをデータベースに接続することはできません。アプリケーションは、DATABASE SQL文を実行して接続を確立した後でデータベースに接続できます。

SQL文のCREATE DATABASE、DROP DATABASE、およびDATABASEの使用方法については、IBM Informixのドキュメントを参照してください。

データ型: String

有効な値: string(ここで、stringはInformixデータベース名です)。

Alias Databaseプロパティ。DatabaseおよびDatabaseNameの両方のプロパティが接続URLに指定されている場合は、接続URL内で後ろに指定されているプロパティが使用されます。たとえば、アプリケーションで次のようなURLを指定した場合、DatabaseName接続プロパティの値ではなく、Database接続プロパティの値が使用されます。

jdbc:datadirect:informix://server1:2003; InformixServer=ol_test;DatabaseName=jdbc;Database=acct; User=test;Password=secret

DBDate

DATE列内のデータを挿入、更新、取得する際にリテラル日付値をフォーマットするためのInformix DBDateサーバー・オプションを設定します。このプロパティを使用して、以下の項目をカスタマイズできます。

  • 日付文字列内の月、日、年フィールドの順序

  • 年フィールドの桁数(2桁または4桁)

  • 日付フィールドに使用する区切り文字

データ型: String

有効な値は次のとおりです。 DMY2、DMY4、MDY2、MDY4、Y4DM、Y4MD、Y2DM、およびY4MD

ここで、Dは2桁の日フィールド、Mは2桁の月フィールド、Y2は2桁の年フィールド、Y4は4桁の年フィールドを表します。

指定しない場合、リテラル日付値のフォーマットはデフォルトのサーバー動作に準拠します。

必要に応じて、値の末尾に区切り文字を指定します。有効な区切り文字は、ハイフン(-)、ピリオド(.)、およびフォワード・スラッシュ(/)です。

区切り文字が指定されていない場合は、デフォルトでフォワードスラッシュ(/)が使用されます。たとえば、「Y4MD-」と指定すると、日付のフォーマットは年4桁、月2桁、日2桁となり、フィールド間がハイフン(-)で区切られます。たとえば、2004-02-15のようになります。

このプロパティは、日付エスケープ構文の文字列のフォーマットには影響しません。日付のエスケープ構文を使用した日付には、常に次のJDBCエスケープ・フォーマットが適用されます。yyyy-mm-dd

FailoverGranularity

ドライバが、接続の欠落について接続の再確立を試行しているときに例外が発生する場合、プロセスを続行するか全体のフェイルオーバー・プロセスに失敗するかを指定します。FailoverMode=connectの場合、このプロパティが無視されます。

データ型: String

有効な値: nonAtomic | atomic | atomicWithRepositioning | disableIntegrityCheck

nonAtomicに設定すると、ドライバでフェイルオーバー・プロセスが続行され、例外が発生する文にこの例外がポストされます。

atomicに設定すると、例外が接続状態のリストアの結果として発生した場合、ドライバは全体のフェイルオーバー・プロセスに失敗します。例外が、進行中の作業状態のリストアの結果として発生した場合、ドライバではフェイルオーバー・プロセスが続行されるがSelect文を再発行する必要があることを示す例外警告が発生します。

atomicWithRepositioningに設定すると、いずれかの例外が接続状態または進行中の作業状態のリストアの結果として発生した場合、ドライバは全体のフェイルオーバー・プロセスに失敗します。

disableIntegrityCheckに設定すると、フェイルオーバー・プロセスのときリストアされた行は元の行に一致することがドライバから検証されません。この値は、FailoverMode=selectの場合のみ適用できます。

デフォルトはnonAtomic

FailoverMode

ドライバから使用されるフェイルオーバー・メソッドのタイプを指定します。

データ型: String

有効な値: connect | extended | select

connectに設定すると、ドライバによって、新規接続のみにフェイルオーバー保護が提供されます。

extendedに設定すると、ドライバによって、新規接続および古い接続にフェイルオーバー保護が提供されるが進行中の作業に提供されません。

selectに設定すると、ドライバによって、新規接続および古い接続にフェイルオーバー保護が提供されます。また、Statementオブジェクトで最後のSelect文により実行された操作の状態が保存されます。

次に注意してください:

  • AlternateServersプロパティでは、フェイルオーバーのための1つまたは複数の代替サーバーが指定されます。このプロパティは、すべてのフェイルオーバー・メソッドのために必要となります。

  • FailoverGranularityプロパティでは、フェイルオーバー・プロセスのときに例外が発生する場合、ドライバからどのアクションが実行されるかを指定します。

  • FailoverPreconnectプロパティでは、ドライバが一度に複数のデータベース・サーバー(プライマリおよび代替)に接続しようとするかどうかを指定します。

デフォルトはconnectです。

FailoverPreconnect

ドライバが一度にプライマリおよび代替サーバーに接続しようとするかどうかを指定します。FailoverMode=connectの場合、このプロパティは無視されます。

データ型: boolean

有効な値: true | false

trueに設定すると、ドライバは同時にプライマリおよび代替サーバーに接続しようとします。アプリケーションが時間を区別し、フェイルオーバー接続を正常に実行するまで待機できない場合に役立ちます。

falseに設定すると、ドライバは接続欠落または失敗した接続試行が原因で発生したフェイルオーバーの場合のみ代替サーバーに接続しようとします。この値でパフォーマンスが向上しますが、フェイルオーバー接続を試行するときにアプリケーションに少し時間がかかる場合があります。

AlternateServersプロパティでは、フェイルオーバーのための1つまたは複数の代替サーバーが指定されます。

デフォルトはfalseです。

FetchBufferSize

データベースからのデータ取得時に使用するフェッチ・バッファのサイズをバイト単位で指定します。有効な値は、1から32767までの正の整数です。

フェッチ・バッファのサイズを小さくするとメモリーの消費量を抑えることができますが、ネットワーク上のデータのやり取りが多くなりパフォーマンスが低下します。フェッチ・バッファのサイズを大きくすると、データベースからデータを返す際のネットワーク上のやり取りが少なくなってパフォーマンスが向上します。

最適な値は、次の式を使用して計算できます。X = A * B * 50

ここで、AはSelect文を実行するとアプリケーションから返される行の数、BはSelect文を実行すると返される一般的な行列の数です。

このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。

デフォルトは32767です。

ImportStatementPool

文プールの内容をロードするために使用されるファイルのファイル名およびパスを指定します。このプロパティが指定される場合、文が、指定されたファイルから文プールにインポートされます。

ドライバによって接続を確立するとき、指定されたファイルが検出できない場合、接続に失敗して例外がスローされます。

データ型: String

有効な値: string(ここで、stringは、文プールの内容をロードするために使用するファイルのファイル名およびパスです)。デフォルトは空の文字列です。

InformixServer (必須)

接続先のInformixデータベース・サーバーの名前。

データ型: String

有効な値: string(ここで、stringはInformixデータベース・サーバー名です)。

InitializationString

ドライバがデータベースへの接続を確立し、その接続のすべての初期化を実行した後に実行する、1つまたは複数のSQLコマンドを指定します。例: InitializationString=command

複数のコマンドを指定する場合はセミコロンで区切る必要があります。また、このプロパティを接続URL内に指定する場合、複数のコマンドを指定するには値全体をカッコで囲む必要があります。例:

jdbc:weblogic:informix://server1:2003;
InformixServer=TestServer;DatabaseName=Test;
InitializationString=(command1;command2)

SQLコマンドの実行が失敗すると、接続の試行も失敗し、どのSQLコマンドが失敗したかを示す例外がスローされます。

データ型: String

デフォルト: なし

InsensitiveResultSetBufferSize

-1、ゼロ(0)、またはx。ドライバがインセンシティブな結果セット・データのキャッシュに使用するメモリーの量を指定します。

-1に設定した場合、ドライバはすべてのインセンシティブな結果セット・データをメモリーにキャッシュします。結果セットのサイズが利用できるメモリー容量を超えると、OutOfMemoryException例外が生成されます。結果セット・データをディスクに書き込む必要がないため、データがより効率的に処理されます。

0に設定すると、ドライバは2GBを限度としてすべてのインセンシティブな結果セット・データをメモリーにキャッシュします。結果セット・データのサイズが利用できるメモリー容量を超えると、その結果セット・データがディスクにページングされます。結果セット・データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがあります。

x (xは正の整数)に設定すると、インセンシティブな結果セット・データのキャッシュに使用するメモリー・バッファのサイズ(KB単位)を指定したことになり、ドライバはすべての結果セット・データをメモリーにキャッシュします。結果セットのサイズがバッファ・サイズを超えると、結果セットがディスクにページングされます。結果セット・データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがあります。バッファ・サイズとして2の累乗を指定すると、メモリーの使用がより効率的になります。

データ型: int

デフォルトは2048 (KB)です。

JavaDoubleToString

Trueまたはfalse。double値やfloat値をstring値に変換する際に、ドライバの内部変換アルゴリズムとJVM変換アルゴリズムのどちらを使用するかを指定します。

trueに設定すると、double値やfloat値をstring値に変換する際にJVM変換アルゴリズムが使用されます。

false (デフォルト)に設定すると、double値やfloat値をstring値に変換する際にドライバの内部変換アルゴリズムが使用されます。このプロパティをfalseに設定するとパフォーマンスは向上しますが、JVMアルゴリズムを使用した変換との間で、丸めによる多少の誤差が生じる可能性があります。ただし、これらの誤差はdoubleおよびfloatデータ型の誤差としては許容範囲内。

デフォルトはfalseです。

JavaDoubleToString

double値やfloat値をstring値に変換する際に、ドライバによって、どのアルゴリズムが使用されるかを指定します。デフォルトでは、ドライバの内部アルゴリズムが使用されます。これにより、パフォーマンスが向上します。

データ型: boolean

有効な値: true | false

trueに設定すると、double値やfloat値をstring値に変換する際にドライバのJVMアルゴリズムが使用されます。アプリケーションでdouble値やfloat値がstring値に変換される場合、アプリケーションのパフォーマンスが低下すると、この値をtrueに設定して、JVM変換アルゴリズムを使用します。

falseに設定すると、double値やfloat値をstring値に変換する際にドライバの内部アルゴリズムが使用されます。内部アルゴリズムを使用するとパフォーマンスは向上しますが、JVMアルゴリズムを使用した変換との間で、丸めによる多少の誤差が生じる可能性があります。ただし、これらの誤差はdoubleおよびfloatデータ型の誤差としては許容範囲内。デフォルト値はfalseです。

JDBCBehavior

ドライバで、次のJDBC 4.0データ型にマップするデータベース・データ型がどのように記述されるかを指定します。 NCHARNVARCHARNLONGVARCHARNCLOBおよびSQLXML

このプロパティは、アプリケーションがJava SE 6を使用する場合のみ適用可能です。

データ型: int

有効な値: 0 | 1

0の場合、ドライバによって、Java SE 6を使用するときJDBC 4.0データ型としてデータ型が表されます。

1の場合、JVMとは関係なく、JDBC 3.0同等データ型を使用するデータ型がドライバによって説明されます。これによって、アプリケーションはJava SE 6環境のJDBC 3.0型を継続して使用できます。デフォルトの値は1。

LoadBalancing

ドライバで、データベース・サーバー(プライマリおよび代替)への接続試行にクライアント・ロード・バランシングが使用されるかどうかを指定します。AlternateServersプロパティを設定して1つ以上の代替サーバーを指定できます。

データ型: boolean

有効な値: true | false

trueの場合、ドライバでクライアント・ロード・バランシングが使用され、データベース・サーバー(プライマリおよび代替)へのランダムな接続が試行されます。ドライバで、プライマリおよび代替サーバーのリストから最初に接続するサーバーがランダムに選択されます。この接続が失敗した場合、ドライバによってもう一度このリストからサーバーがランダムに選択されます。これは、リストのすべてのサーバーへの接続が試行されるか、または正常な接続が確立されるまで繰り返されます。

falseの場合、ドライバは、クライアント・ロード・バランシング使用しないで、サーバーの連続した順序(最初にプライマリ・サーバー、その後、指定された順序で代替サーバー)に応じて各サーバーに接続します。デフォルトの値は、falseです。

LoginTimeout

ドライバが接続が確立されるのを待機する時間(秒単位)。この時間が経過すると、制御がアプリケーションに返され、タイムアウト例外がスローされます。

データ型: int

有効な値: 0 | x(ここで、xは正の整数です)。

0に設定すると、ドライバにより接続リクエストがタイムアウトされません。デフォルトの値は0。

xに設定すると、ドライバが、指定された時間(秒数)まで待機します。この時間を経過すると、制御がアプリケーションに戻され、タイムアウト例外がスローされます。

MaxPooledStatements

この接続のプールされたプリペアド文の最大数。MaxPooledStatementsをゼロ(0)以上の整数に設定すると、ドライバの内部のプリペアド文プーリングが実行できます。この内部のプリペアド文プーリングは、アプリケーション・サーバーまたは独自のプリペアド文プーリングを提供する別のアプリケーション内部で実行されないドライバの場合に役立ちます。データ型: int

有効な値: 0 | x(ここで、xは正の整数です)。

0に設定すると、ドライバの内部のプリペアド文プーリングが有効になっていません。デフォルトの値は0。

xに設定すると、ドライバによって、文プール・モニターが有効になり、アプリケーションで作成された特定数のプリペアド文をキャッシュするために指定された値が使用されます。このプロパティの値が、アプリケーションで使用されるプリペアド文数より大きい場合は、アプリケーションで作成されたすべてのプリペアド文がキャッシュされます。CallableStatementは、PreparedStatementのサブクラスであるため、CallableStatementsもキャッシュされます。

例: このプロパティの値を20に設定すると、アプリケーションによって作成された最後の20個のプリペアド文がキャッシュされます。

MaxStatements

MaxPooledStatementsプロパティの別名。

Password (必須)

Informixデータベースに接続するために使用するパスワード。パスワードは、データベースでセキュリティが有効になっている場合に必要となります。システム管理者に連絡してパスワードを取得します。

データ型: String

有効な値: string(ここで、stringは、有効なパスワードです)。パスワードは大文字と小文字が区別されます。デフォルトの値はnull(パスワードなし)です。

PortNumber (必須)

データベース・サーバーが接続をリスニングするTCPポート。デフォルトはオペレーティング・システムによって異なります。

このプロパティは、データ・ソース接続でのみサポートされます。

ProgramID

データベースに格納するクライアント・ドライバの製品およびバージョン情報。この値はローカルに格納され、データベースの管理/監視に使用されます。

データ型: String

有効な値: DDJVVRRM)です。説明:

  • VVは、2桁のバージョン番号を示します(1桁のバージョンの場合、高位0)。

  • RRは、2桁のリリース番号を示します(1桁のリリースの場合、高位0)。

  • Mは、1文字の変更レベルを示します(0-9またはA-Z)。

  • デフォルトは空の文字列です。

例: DDJ04100

QueryTimeout

整数、-1、またはゼロ(0)。接続によって作成されるすべての文のデフォルトの問合せタイムアウトを秒単位で設定します。

正の整数に設定すると、その値が接続によって作成されるすべての文のデフォルト・タイムアウトとして使用されます。この接続オプションで設定したデフォルト・タイムアウトをオーバーライドするには、Statement.setQueryTimeout()メソッドを呼び出して特定の文のタイムアウト値を設定します。

-1に設定すると、問合せタイムアウト機能が無効になります。ドライバは、通知なしでStatement.setQueryTimeout()メソッドを呼び出します。

0 (デフォルト)に設定すると、デフォルトの問合せタイムアウトは無限大となります(問合せはタイムアウトしません)。

ResultSetMetaDataOptions

ゼロ(0)または1。アプリケーションで表名情報が必要な場合は、Select文のResultSetメタデータに表名情報を含めて戻すことができます。

0 (デフォルト)に設定した場合は、ResultSetMetaData.getTableName()メソッドが呼び出されても、結果セットの各列の正しい表名を特定するための追加処理は実行されません。この場合、getTableName()メソッドは結果セット内の列ごとに空の文字列を戻す場合があります。

1に設定した場合は、ResultSetMetaData.getTableName()メソッドが呼び出されると、結果セットの各列の正しい表名を特定するための追加処理が実行されます。ドライバは、ResultSetMetaData.getSchemaName()メソッドとResultSetMetaData.getCatalogName()メソッドが呼び出された場合、スキーマ名とカタログ名の情報を戻すこともできます(ドライバがこの情報を判別できる場合)。

このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。

デフォルトは0です。

ServerName (必須)

プライマリ・データベース・サーバーのIPv4またはIPv6形式のIPアドレスを指定するか、ネットワークで名前付きのサーバーがサポートされている場合はサーバー名を指定します。たとえば、122.23.15.12またはInformixServerのように指定します。

このプロパティは、データ・ソース接続でのみサポートされます。

データ型: String

SpyAttributes

Spyを有効にして、アプリケーションのかわりにドライバで発行された呼出しの詳細情報をログします。

データ型: String

デフォルトでは有効になりません。

詳細は、「WebLogic JDBC SpyによるJDBC呼出しのトラッキング」を参照してください。

UseDelimitedIdentifier

SQL文の二重引用符(")文字がInformixドライバでどのように解釈されるかを制御します。

データ型: boolean

trueに設定すると、ドライバではInformix DELIMIDENTサーバー・オプションが設定され、二重引用符で囲まれた文字列が文字列リテラルではなく識別子として解釈されます。

falseに設定すると、ドライバではInformix DELIMIDENTサーバー・オプションは設定されず、二重引用符で囲まれた文字列は識別子ではなく文字列リテラルとして解釈されます。

注意: サーバーでDELIMIDENT環境変数が設定されている場合は、ドライバでは設定を変更することはできません。その場合、UseDelimitedIdentifier接続オプションは無視されます。

デフォルトはtrueです。

User (必須)

Informixデータベースに接続する場合に使用するデフォルトのユーザー名。大文字と小文字は区別されません。ユーザー名は、データベースでセキュリティが有効化されている場合にのみ必要となります。その場合は、システム管理者に連絡してユーザー名を取得します。

データ型: String

デフォルト値はNoneです。


プリペアド文に関するInformixの制限

索引の追加、プロシージャのリコンパイルなど、データベース表やプロシージャを変更する操作が発生した場合、これらにアクセスする既存のJDBC PreparedStatementはすべて、再使用する前に再準備の工程を経る必要があります。これはInformixデータベース管理システムの制限です。WebLogic Serverでは、プールされた接続と同様に、アプリケーションのPreparedStatementもキャッシュ、保持、再使用されます。ただし、削除後に再作成されたり定義が変更されたりした表やプロシージャにアクセスするプリペアド文をアプリケーションで使用する場合は、キャッシュされたプリペアド文を再実行するといったん失敗します。実行できなくなったプリペアド文はその後キャッシュから削除され、アプリケーションでそのプリペアド文がもう一度要求されたときに置き換えられます。

WebLogic Serverの実行時にDBMS内の表やプロシージャを変更したためにPreparedStatementが失敗するのを防ぐには、「文キャッシュ・サイズ」を0に設定します。これにより、リクエストのたびに新しいPreparedStatementが作成されるようになります。ただし、文キャッシュを無効にすると、文キャッシングによるパフォーマンスの向上は見込めなくなります。

文キャッシュ・サイズの設定の詳細は、『Oracle WebLogic Server JDBCの構成と管理』の文キャッシュを使用してパフォーマンス改善に関する項を参照してください。

パフォーマンスに関する考慮事項

以下に示すInformixドライバの接続プロパティを設定すると、アプリケーションのパフォーマンスを向上させることができます。

FetchBufferSize

フェッチ・バッファのサイズを小さくするとメモリーの消費量を抑えることができますが、ネットワーク上のデータのやり取りが多くなりパフォーマンスが低下します。フェッチ・バッファのサイズを大きくすると、データベースからデータを戻す際のネットワーク上のやり取りが少なくなってパフォーマンスが向上します。最適な値は、X = A * B * 50の式を使用して計算できます。ここで、AはSelect文を実行するとアプリケーションから戻される行の数、BはSelect文を実行すると戻される一般的な行列の数です。

InsensitiveResultSetBufferSize

スクロール・インセンシティブな結果セットを使用する場合のパフォーマンスを向上させるため、ドライバは結果セット・データをディスクに書き込む代わりに、メモリーにキャッシュできます。デフォルトでは、ドライバはインセンシティブな結果セット・データを2 MBまでメモリーにキャッシュし、残りの結果セット・データをディスクに書き込みます。パフォーマンスを向上させるには、ドライバがデータをディスクに書き込む前に使用するメモリーの量を増やすか、ドライバがインセンシティブな結果セット・データをディスクに書込めないようにします。最大キャッシュ・サイズの設定は2 GBです。

MaxPooledStatements

ドライバがアプリケーション・サーバー内部から実行されない場合、または独自のプリペアド文のプールを提供しない別のアプリケーション内部から実行されない場合は、パフォーマンスを向上させるため、ドライバ独自の内部プリペアド文のプールを有効にする必要があります。ドライバの内部プリペアド文のプールを有効にすると、ドライバは、アプリケーションによって作成された特定数のプリペアド文をキャッシュします。たとえば、MaxPooledStatementsプロパティを20に設定した場合、ドライバは、アプリケーションによって作成された最後の20個のプリペアド文をキャッシュします。このプロパティに設定された値が、アプリケーションが使用するプリペアド文の数よりも大きい場合、すべてのプリペアド文がキャッシュされます。

ResultSetMetaDataOptions

デフォルトでは、ResultSetMetaData.getTableName()メソッドが呼び出された場合、Informixドライバは、結果セット内の各列の正しい表名を返すために必要な追加の処理を省略します。このため、getTableName()メソッドは結果セット内の列ごとに空の文字列を返す可能性があります。アプリケーションで表名情報が必要ない場合は、この設定によって最適なパフォーマンスが得られます。

データ型

表4-2に、Informixドライバでサポートされるデータ型と、それらがJDBCデータ型へどのようにマップされるかを示します。

表4-2 Informixのデータ型

Informixのデータ型 JDBCのデータ型

BLOB

BLOB

ブール

BIT

BYTE

LONGVARBINARY

CHAR

CHAR

CLOB

CLOB

DATE

DATE

DATETIME HOUR TO SECOND

TIME

DATETIME YEAR TO DAY

DATE

DATETIME YEAR TO FRACTION(5)

TIMESTAMP

DATETIME YEAR TO SECOND

TIMESTAMP

DECIMAL

DECIMAL

FLOAT

FLOAT

INT8

BIGINT

INTEGER

INTEGER

LVARCHAR

VARCHAR

MONEY

DECIMAL

NCHAR

CHAR

JDBCBehavior=0の場合、データ型は、アプリケーション: NCHAR(Java SE 6を使用する場合)またはCHAR(別のJVMを使用する場合)で使用されるJVMに依存します。

NVARCHAR

VARCHAR

JDBCBehavior=0の場合、データ型は、アプリケーション: NVARCHAR(Java SE 6を使用する場合)またはVARCHAR(別のJVMを使用する場合)で使用されるJVMに依存します。

SERIAL

INTEGER

SERIAL8

BIGINT

SMALLFLOAT

REAL

SMALLINT

SMALLINT

TEXT

LONGVARCHAR

VARCHAR

VARCHAR


データ型の詳細は、付録B「GetTypeInfo」を参照してください。

接続用のクライアント情報

Informixドライバでは、アプリケーションで、特定の接続に関連した次のタイプのクライアント情報を格納して戻すことができます。

この情報は、データベースの管理と監視に使用されます。付録C「Client In」を参照してください。

SQLエスケープ・シーケンス

InformixドライバでサポートされているSQLエスケープ・シーケンスについては、付録C「JDBCのSQLエスケープ・シーケンス」を参照してください。

分離レベル

Informixは、分離レベルとしてRead CommittedRead UncommittedRepeatable Read、およびSerializableをサポートしています。デフォルトはRead Committedです。

スクロール可能なカーソルの使用

Informixドライバは、スクロール・センシティブな結果 セット、スクロール・インセンシティブな結果 セット、および更新可能な結果 セットをサポートしています。


注意:

Informixドライバが、リクエストされた結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入ったSQLWarningを生成します。

パラメータ・メタデータのサポート

Informixドライバでは、この項で説明するようにパラメータ・メタデータを返すことができます。

Insert文およびUpdate文

Informixドライバでは、Insert文およびUpdate文のパラメータ・メタデータを戻すことができます。

Select文

Informixドライバでは、ANSI SQL 92エントリ・レベルの述語(COMPARISONBETWEENINLIKEおよび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 BYHAVINGまたは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 = ?"

概数データ型として定義された列のパラメータ・メタデータがリクエストされると、ドライバからはスケールとして255が返されます。これは、その列が概数データ型であり、スケールがないことを示します。たとえば、次のようにcol2が概数データ型(精度20)の表を作成したとします。

CREATE table fooTest(col1 int, col2 decimal(20))

ドライバからは、col2のデータ型が精度20、スケール255の10進数であることを示すパラメータ・メタデータが返されます。

ストアド・プロシージャ

Informixドライバでは、ストアド・プロシージャの引数に対してパラメータ・メタデータを返すことはできません。

ResultSetメタデータのサポート

アプリケーションで表名情報が必要な場合、InformixドライバはSelect文のResultSetメタデータに含めて表名情報を返すことができます。ResultSetMetaDataOptionsプロパティを1に設定した場合、ResultSetMetaData.getTableName()メソッドが呼び出されたとき、Informixドライバは結果セット内の各列の正しい表名を決定する追加の処理を実行します。それ以外の場合、getTableName()メソッドは結果セット内の列ごとに空の文字列を返す可能性があります。

Informixドライバが返す表名情報は、結果セット内の列がデータベース表内の列にマップされているかどうかによって異なります。結果セット内の各列がデータベース表内の列にマップされている場合、Informixドライバはその列に関連付けられている表名を返します。結果セット内の各列が表内の列にマップされていない場合(集約やリテラルなど)、Informixドライバは空の文字列を返します。

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

Informixドライバは、ResultSetMetaData.getSchemaName()メソッドとResultSetMetaData.getCatalogName()メソッドが呼び出された場合、スキーマ名とカタログ名の情報を返すこともできます(ドライバがこの情報を判別できる場合)。たとえば、以下の文の場合、Informixドライバはカタログ名として「test」、スキーマ名として「test1」、表名として「foo」を返します。

SELECT * FROM test.test1.foo 

表名、スキーマ名、およびカタログ名の情報を返すために必要な追加の処理は、ResultSetMetaData.getTableName()ResultSetMetaData.getSchemaName()、またはResultSetMetaData.getCatalogName()メソッドが呼び出された場合にのみ実行されます。

Rowsetのサポート

Informixドライバは、以下のようなRowSetインタフェースのJSR 114実装をサポートします。

ドライバでRowSetを使用するには、J2SE 1.4以上が必要です。

JSR 114の詳細は、http://www.jcp.org/en/jsr/detail?id=114を参照してください。

BlobおよびClobの検索

Clob.positionメソッドを使用して文字列パターンのClob値を検索する場合は、検索パターンを最大値である4096バイト以下にする必要があります。同様に、Blob.positionメソッドを使用してバイト・パターンのBlob値を検索する場合は、検索パターンを最大値である4096バイト以下にする必要があります。

自動生成キーのサポート

Informixドライバは自動生成キーの値の取得をサポートします。Informixドライバから返される自動生成キーは、SERIAL列またはSERIAL8列の値です。

自動生成キーの値を返すことができるのは、アプリケーションでInsert文を実行するときです。値を返す方法は、パラメータを含むInsert文を使用しているかどうかによって異なります。

自動生成キーの値は、Statement.getGeneratedKeys()メソッドを使用して取得できます。このメソッドは、各自動生成キーの列とともにResultSetオブジェクトを返します。

フェイルオーバーの構成

次の手順を実行して、フェイルオーバーを構成します。

  1. プライマリ・サーバーと代替サーバーを指定します。

    • 接続URLまたはデータ・ソースを使用してプライマリ・サーバーを指定します。

    • AlternateServersプロパティを設定して、1つまたは複数の代替サーバーを指定します。

      rssを参照してください。

  2. FailoverMode接続プロパティを設定して、フェイルオーバー・メソッドを選択します。デフォルト・メソッドは、接続フェイルオーバー(FailoverMode=connect)です。

  3. FailoverMode=extendedまたはFailoverMode=selectの場合、FailoverGranularityプロパティを設定して、失われた接続の再確立を試行しているときに例外が発生した場合のドライバの動作を指定します。ドライバのデフォルトの動作では、フェイルオーバー処理が続行され、例外が発生した文にその例外がポストされます(FailoverGranularity=nonAtomic)。

  4. オプションで、接続再試行機能を構成します。214ページの「接続再試行の指定」を参照してください。

  5. オプションで、ドライバによって、一度にプライマリ・サーバーおよび代替サーバーへの接続を確立する場合、FailoverPreconnectプロパティを設定します。デフォルトの動作では、失敗した接続試行または失われた接続で発生したフェイルオーバーの場合、代替サーバーのみへ接続されます。(FailoverPreconnect=false)。

プライマリ・サーバーと代替サーバーの指定

次のいずれかのメソッドを実行して、プライマリ・サーバーと代替サーバーの接続情報を指定できます。

  • JDBCドライバ・マネージャを介した接続URL

  • JDBCデータ・ソース

たとえば、次のInformixドライバ用の接続URLでは、接続URLでプライマリ・サーバーと代替サーバーの接続情報を指定します。

jdbc:datadirect:informix://server1:2003;InformixServer=TestServer; DatabaseName=TestServer;User=test;Password=secret; AlternateServers=(server2:2003;InformixServer=TestServer2,server3:2003)

この例では:

...server1:2003;InformixServer=TestServer; DatabaseName=TestServer...

これは、プライマリ・サーバー用の接続情報を指定する接続URLの一部です。代替サーバーがAlternateServersプロパティで指定されます。例:

...;AlternateServers=(server2:2003;InformixServer=TestServer2,server3:2003)

同様に、JDBCデータ・ソースで指定されたプライマリ・サーバーと代替サーバーで同一の接続情報は、次のようになります。

例4-1

InformixDataSource mds = new InformixDataSource();
mds.setDescription("My InformixDataSource");
mds.setServerName("server1");
mds.setPortNumber(2003);
mds.setInformixServer("TestServer");
mds.setDatabaseName("TestServer");
mds.setUser("test");
mds.setPassword("secret");
mds.setAlternateServers=(server2:2003;InformixServer= TestServer2,server3:2003)

この例では、ServerName、PortNumber、InformixServerおよびDatabaseNameプロパティを使用して、プライマリ・サーバーの接続情報が指定されます。代替サーバーの接続情報がAlternateServersプロパティで指定されます。

AlternateServersプロパティの値は、次のフォーマットの文字列です。

(servername1[:port1][;property=value[;...]][,servername2[:port2] [;property=value[;...]]]...)

説明:

  • servername1は、1番目の代替データベース・サーバーのIPアドレスまたはサーバー名、servername2は、2番目の代替データベース・サーバーのIPアドレスまたはサーバー名などというようになります。各代替サーバー・エントリにPアドレスまたはサーバー名が必要です。

  • port1は、1番目の代替データベース・サーバーがリスニングするポート番号、port2は2番目の代替データベース・サーバーがリスニングするポート番号などというようになります。ポート番号は、各代替サーバー・エントリのためにオプションです。指定されていない場合、プライマリ・サーバーのために指定されたポート番号が使用されます。

  • property=valueは、DatabaseNameまたはInformixServerのいずれかのプロパティです。これらのプロパティは、各代替サーバー・エントリでオプションとなります。たとえば、次のようになります。

代替サーバー・エントリにオプションの接続プロパティが指定されていない場合、代替サーバーの接続によって、URLで指定されたプロパティが指定されます。たとえば、プライマリ・サーバーのためにInformixServer=TestServerおよびDatabaseName=TestServerが指定されていますが、次のURLに示すように、代替サーバー・エントリ内にInformixServerおよびDatabaseNameプロパティが指定されていない場合、ドライバによって、プライマリ・サーバーのために指定されたInformixServerおよびDatabaseNameが使用され、InformixサーバーTestServerのTestServerデータベースへの接続が試行されます。

jdbc:datadirect:informix://server1:2003;InformixServer=TestServer; DatabaseName=TestServer;User=test;Password=secret; AlternateServers=(server2:2003;InformixServer=TestServer2; DatabaseName=TestServer,server3:2003)

接続再試行の指定

接続再試行では、Informixドライバがプライマリ・データベース・サーバーへの接続を再試行できます。指定されている場合、正常な接続を確立するまで代替サーバーへの接続を再試行できます。ConnectionRetryCountおよびConnectionRetryDelayプロパティを使用して、接続再試行を有効にでき、その動作を制御できます。たとえば、次のようになります。:

jdbc:datadirect:informix://server1:2003;InformixServer=TestServer; DatabaseName=TestServer;User=test;Password=secret; AlternateServers=(server2:2003;DatabaseName=TEST2,server3:2003; DatabaseName=TEST3);ConnectionRetryCount=2;ConnectionRetryDelay=5

この例では、データベース・サーバーのリスト(プライマリ・サーバーおよび代替サーバー)を介してInformixドライバの最初のパスに接続が正常に確立されない場合、ドライバによって、サーバーのリストが同じ順序で2回(ConnectionRetryCount=2)再試行されます。接続再試行の遅延が5秒(ConnectionRetryDelay=5)に設定されているため、再試行パスの間に5秒まで待機します。

フェイルオーバー・プロパティ

次の表は、Informixドライバでフェイルオーバーの動作を制御する接続プロパティを要約したものです。

表4-3 要約: Informixドライバのフェイルオーバー・プロパティ

AlternateServers

1つまたは複数の代替データベース・サーバー。各サーバーを識別するIPアドレスまたはサーバー名が必要です。ポート番号およびサポートされた接続プロパティ(DatabaseNameおよびInformixServer)はオプションです。ポート番号が指定されていない場合、プライマリ・サーバーのために指定されたポートが使用されます。

ConnectionRetryCount

ドライバがプライマリ・データベース・サーバーへの接続を再試行する回数。指定されている場合、代替サーバーへ正常に接続するまで再試行します。デフォルトは5です。

ConnectionRetryDelay

ConnectionRetryCountプロパティが正の整数に設定されている場合、それぞれの接続の再試行の間に待機する秒数。デフォルトは1です。

DatabaseName

接続先のInformixデータベースの名前。

FailoverGranularity

接続が失われたときに接続の再確立の試行中に例外が発生した場合、ドライバがプロセスを続行するか全体のフェイルオーバー・プロセスに失敗するかを指定します。デフォルトはnonAtomicです(ドライバではフェイルオーバー処理が続行され、例外が発生した文にその例外がポストされます)。

FailoverMode

ドライバによって使用されるフェイルオーバー・メソッド。デフォルトはconnectです(接続フェイルオーバーが使用されます)。

FailoverPreconnect

ドライバが、一度にプライバマリ・サーバーおよび代替サーバーへの接続を試行するかどうかを指定します。デフォルトはfalseです(接続試行に失敗した場合または失われた接続でフェイルオーバーが発生した場合、ドライバが代替サーバーのみへ接続します)。

InformixServer

接続先のInformixデータベース・サーバーの名前。

LoadBalancing

ドライバで、データベース・サーバー(プライマリおよび代替)への接続試行にクライアント・ロード・バランシングが使用されるかどうかを設定します。クライアント・ロード・バランシングが有効な場合、ドライバによって、接続試行に順次パターンのかわりにランダム・パターンが使用されます。デフォルトはfalseです(クライアント・ロード・バランシングは無効になります)。

PortNumber

プライマリ・データベース・サーバーの接続のポート・リスニング。このプロパティは、データ・ソース接続でのみサポートされます。

ServerName

プライマリ・データベース・サーバーのIPアドレスまたはサーバー名。このプロパティは、データ・ソース接続でのみサポートされます。