Oracle® Fusion Middleware Oracle WebLogic Serverタイプ4 JDBCドライバ 11g リリース1(10.3.5) B61001-03 |
|
![]() 前 |
![]() 次 |
次の項では、Oracleタイプ4 JDBC Informixドライバを構成および使用方法を説明します。
Oracleタイプ4 JDBC Informixドライバのドライバ・クラスは次のとおりです。
XA: weblogic.jdbcx.informix.InformixDataSource Non-XA: weblogic.jdbc.informix.InformixDriver
WebLogic ServerドメインにJDBCデータ・ソースを構成する場合に、これらのドライバ・クラスを使用します。
Informixデータベースに接続するには、次の形式のURLを使用します。
jdbc:weblogic:informix://hostname:port[;property=value[;...]]
説明:
hostnameは、接続するサーバーのTCP/IPアドレスまたはTCP/IPホスト名です。IPアドレスの使用については、「IPアドレスの使用」を参照してください。
注意: 信頼性のないアプレットから、そのホスト以外のマシンへのソケットを開くことはできません。 |
portは、TCP/IPポートの番号です。
property=valueは、接続プロパティを指定します。接続プロパティの一覧および各プロパティに指定できる値については、「Informix接続プロパティ」を参照してください。
例:
jdbc:weblogic:informix://server4:1526;informixServer=ol_test; DatabaseName=ACCT01;User=test;Password=secret
表4-1に、InformixドライバでサポートされるJDBC接続プロパティを示し、各プロパティについて説明します。WebLogic ServerドメインのJDBCデータ・ソースの構成でこれらの接続プロパティを使用できます。プロパティを指定するには、JDBCデータ・ソースの構成で、property=value
の形式を使用します。
注意: すべての接続プロパティ名で大文字と小文字は区別されません。たとえば、Passwordはpasswordと同じです。必須のプロパティかどうかが記載されています。各接続プロパティで示されているデータ型は、JDBCデータ・ソースのプロパティ値に使用されるJavaデータ型です。 |
表4-1 Informixの接続文字列のプロパティ
プロパティ | 説明 |
---|---|
AccountingInfo |
データベースに格納する会計情報。この値がローカルに格納され、データベースの管理/監視に使用されます。 データ型: string 有効な値: |
AlternateServers |
選択したフェイルオーバー・メソッドに基づいて、新しい接続または失った接続をフェイルオーバーするのに使用する代替データベース・サーバーのリスト。フェイルオーバー・メソッドの選択については、FailoverModeプロパティを参照してください。 データ型: String 有効な値:
各代替サーバー・エントリのサーバー名( 例: 次のURLでは、server2およびserver3の代替サーバー・エントリが含まれます。代替サーバー・エントリでは、オプションの
デフォルト: なし |
ApplicationName |
データベースに格納されるアプリケーションの名前。この値がローカルに格納され、データベースの管理/監視に使用されます。 データ型: String 有効な値: |
ClientHostName |
データベースに格納されるクライアント・マシンのホスト名。この値はローカルに格納され、データベースの管理/監視に使用されます。 データ型: String 有効な値: |
ClientUser |
データベースに格納されるユーザーID。この値はローカルに格納され、データベースの管理/監視に使用されます。 データ型: String 有効な値: |
CodePageOverride |
文字データの変換のためにドライバにより使用されるコード・ページ。指定したコード・ページによって、デフォルトのデータベース・コード・ページまたは列照合がオーバーライドされます。データベースとやり取り(取得および書込み)するすべての文字データは、指定したコード・ページを使用して変換されます。 デフォルトでは、文字データの変換に使用するコード・ページがドライバにより自動的に識別されます。このプロパティは、ドライバのデフォルト動作を変更する必要がある場合にのみ使用します。例: CP950 データ型: String 有効な値: |
ConnectionRetryCount |
ドライバからのプライマリ・データベース・サーバーへの接続再試行数。指定されている場合、正常な接続を確立するまで代替サーバーへの接続を再試行します。アプリケーションでログイン・タイムアウト値が設定されている場合(たとえば、DataSource.loginTimeoutまたはDriverManager.loginTimeoutを使用)、そのログイン・タイムアウトをすぎると、ドライバが接続試行を中断します。 データ型: Int 有効な値: 0 | 0に設定すると、最初の試行が失敗した場合でも再接続は試行されません。
例: このプロパティが2に設定され、代替サーバーが |
ConnectionRetryDelay |
例: データ型: Int 有効な値: 0 | |
ConvertNull |
データ変換におけるnull値の処理方法を制御します。 データ型: Int 有効な値: 0 | 1。デフォルトは1です。 1に設定すると、データが格納される表の列のデータ型のためにリクエストしたデータ型がドライバからチェックされます。リクエストした型および列の型間の変換が定義されていない場合、ドライバから、列の値のデータ型にかかわらず、「サポートされないデータ変換」例外が生成されます。 0に設定すると、列の値がnullの場合でもデータ型の照合は実行されません。これによって、リクエストされた型と列型の間の変換が定義されていない場合でもnull値を返すことが可能になります。 |
データベース |
|
DatabaseName |
接続先のデータベースの名前。 このプロパティを指定しない場合、指定したサーバーへの接続は確立されますが、特定のデータベースには接続されません。データベースに接続せずに確立されたサーバーへの接続では、アプリケーションでSQL文のCREATE DATABASEおよびDROP DATABASEを使用できます。これらの文を使用する場合は、ドライバをデータベースに接続することはできません。アプリケーションは、DATABASE SQL文を実行して接続を確立した後でデータベースに接続できます。 SQL文のCREATE DATABASE、DROP DATABASE、およびDATABASEの使用方法については、IBM Informixのドキュメントを参照してください。 データ型: String 有効な値: Alias
|
DBDate |
DATE列内のデータを挿入、更新、取得する際にリテラル日付値をフォーマットするためのInformix DBDateサーバー・オプションを設定します。このプロパティを使用して、以下の項目をカスタマイズできます。
データ型: String 有効な値は次のとおりです。 DMY2、DMY4、MDY2、MDY4、Y4DM、Y4MD、Y2DM、およびY4MD ここで、Dは2桁の日フィールド、Mは2桁の月フィールド、Y2は2桁の年フィールド、Y4は4桁の年フィールドを表します。 指定しない場合、リテラル日付値のフォーマットはデフォルトのサーバー動作に準拠します。 必要に応じて、値の末尾に区切り文字を指定します。有効な区切り文字は、ハイフン(-)、ピリオド(.)、およびフォワード・スラッシュ(/)です。 区切り文字が指定されていない場合は、デフォルトでフォワードスラッシュ(/)が使用されます。たとえば、Y4MD- の値は、4 桁の年に月、そして日が続く日付フォーマットが指定されます。日付フィールドは、ハイフン(-)で区切られます。たとえば、2004-02-15のようになります。 このプロパティは、日付エスケープ構文の文字列のフォーマットには影響しません。日付のエスケープ構文を使用した日付には、常に次のJDBCエスケープ・フォーマットが適用されます。yyyy-mm-dd |
FailoverGranularity |
接続が失われたときに接続の再確立の試行中に例外が発生した場合、ドライバがプロセスを続行するか全体のフェイルオーバー・プロセスに失敗するかを指定します。 データ型: String 有効な値:
デフォルトは |
FailoverMode |
ドライバから使用されるフェイルオーバー・メソッドのタイプを指定します。 データ型: String 有効な値:
次に注意してください:
デフォルトは |
FailoverPreconnect |
ドライバが同時にプライマリ・サーバーと代替サーバーへの接続を試みるかどうかを指定します。 データ型: boolean 有効な値:
デフォルトは |
FetchBufferSize |
データベースからのデータ取得時に使用するフェッチ・バッファのサイズをバイト単位で指定します。有効な値は、1から32767までの正の整数です。 フェッチ・バッファのサイズを小さくするとメモリーの消費量を抑えることができますが、ネットワーク上のデータのやり取りが多くなりパフォーマンスが低下します。フェッチ・バッファのサイズを大きくすると、データベースからデータを返す際のネットワーク上のやり取りが少なくなってパフォーマンスが向上します。 最適な値は、次の式を使用して計算できます。 ここで、AはSelect文を実行するとアプリケーションから返される行の数、BはSelect文を実行すると返される一般的な行列の数です。 このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは32767です。 |
ImportStatementPool |
文プールの内容をロードするために使用されるファイルのファイル名およびパスを指定します。このプロパティが指定される場合、文が、指定されたファイルから文プールにインポートされます。 接続を確立するとき、ドライバが指定されたファイルを見つけられない場合、接続に失敗して例外がスローされます。 データ型: String 有効な値: |
InformixServer (必須) |
接続先のInformixデータベース・サーバーの名前。 データ型: String 有効な値: |
InitializationString |
ドライバがデータベースへの接続を確立し、その接続のすべての初期化を実行した後に実行する1つまたは複数のSQLコマンドを指定します。例: 複数のコマンドは、セミコロンで区切る必要があります。また、このプロパティが接続URLで指定されると、複数のコマンドを指定するときは値全体をカッコで囲む必要があります。例: jdbc:weblogic:informix://server1:2003; InformixServer=TestServer;DatabaseName=Test; InitializationString=(command1;command2) SQLコマンドの実行が失敗した場合、接続試行も失敗し、どのSQLコマンドが失敗したかを示す例外が、ドライバからスローされます。 データ型: String デフォルト: なし |
InsensitiveResultSetBufferSize |
-1、ゼロ(0)、またはx。ドライバがインセンシティブな結果セット・データのキャッシュに使用するメモリーの量を指定します。 -1に設定した場合、ドライバはすべてのインセンシティブな結果セット・データをメモリーにキャッシュします。結果セットのサイズが使用可能メモリーを超えると、 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 有効な値:
|
JDBCBehavior |
ドライバで、次のJDBC 4.0データ型にマップするデータベース・データ型がどのように記述されるかを指定します: このプロパティは、アプリケーションが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 有効な値:
|
LoginTimeout |
ドライバが接続が確立されるのを待機する時間(秒単位)。この時間が経過すると、制御がアプリケーションに返され、タイムアウト例外がスローされます。 データ型: int 有効な値: 0 | 0に設定すると、ドライバにより接続リクエストがタイムアウトされません。デフォルトの値は0です。
|
MaxPooledStatements |
この接続のプールされたプリペアド文の最大数。MaxPooledStatementsをゼロ(0)以上の整数に設定すると、ドライバの内部のプリペアド文プーリングが実行できます。この内部のプリペアド文プーリングは、アプリケーション・サーバーまたは独自のプリペアド文プーリングを提供する別のアプリケーション内部で実行されないドライバの場合に役立ちます。データ型: int 有効な値: 0 | 0に設定すると、ドライバの内部のプリペアド文プーリングが有効になっていません。デフォルトの値は0です。
例: このプロパティの値を20に設定すると、アプリケーションによって作成された最後の20個のプリペアド文がキャッシュされます。 |
MaxStatements |
|
Password (必須) |
Informixデータベースに接続するために使用するパスワード。パスワードは、データベースでセキュリティが有効になっている場合に必要となります。システム管理者に連絡してパスワードを取得します。 データ型: String 有効な値: string(ここで、stringは、有効なパスワードです)。パスワードは大文字と小文字が区別されます。デフォルトの値はnull(パスワードなし)です。 |
PortNumber (必須) |
データベース・サーバーが接続をリスニングするTCPポート。デフォルトはオペレーティング・システムによって異なります。 このプロパティは、データ・ソース接続でのみサポートされます。 |
ProgramID |
データベースに格納されるクライアント上のドライバの製品とバージョン情報。この値はローカルに格納され、データベースの管理/監視に使用されます。 データ型: String 有効な値: DDJVVRRM)。ここで:
例: DDJ04100 |
QueryTimeout |
整数、-1、またはゼロ(0)。接続で作成されたすべてのstatementsのデフォルト問合せタイムアウト(秒単位)を設定します。 正の整数に設定すると、その値が接続によって作成されるすべての文のデフォルト・タイムアウトとして使用されます。この接続オプションでデフォルト・タイムアウトをオーバーライドするには、 -1に設定すると、問合せタイムアウト機能が無効になります。ドライバは、通知なしで 0 (デフォルト)に設定すると、デフォルトの問合せタイムアウトは無限大となります(問合せはタイムアウトしません)。 |
ResultSetMetaDataOptions |
ゼロ(0)または1。アプリケーションで表名情報が必要な場合は、 0 (デフォルト)に設定した場合は、 1に設定した場合は、 このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは0です。 |
ServerName (必須) |
プライマリ・データベース・サーバーのIPv4またはIPv6形式のIPアドレスを指定するか、ネットワークで名前付きのサーバーがサポートされている場合はサーバー名を指定します。たとえば、122.23.15.12またはInformixServerのように指定します。 このプロパティは、データ・ソース接続でのみサポートされます。 データ型: String |
SpyAttributes |
Spyを有効にして、アプリケーションのかわりにドライバで発行された呼出しの詳細情報をログします。 データ型: String デフォルトでは有効になりません。 詳細は、「WebLogic JDBC SpyによるJDBC呼出しのトラッキング」を参照してください。 |
UseDelimitedIdentifier |
SQL文の二重引用符(")文字がInformixドライバでどのように解釈されるかを制御します。 データ型: boolean
注意: サーバーで デフォルトは |
User (必須) |
Informixデータベースに接続する場合に使用するデフォルトのユーザー名。大文字と小文字は区別されません。ユーザー名は、データベースでセキュリティが有効化されている場合にのみ必要となります。その場合は、システム管理者に連絡してユーザー名を取得します。 データ型: String デフォルト値はNoneです。 |
索引の追加、プロシージャのリコンパイルなど、データベース表やプロシージャを変更する操作が発生した場合、これらにアクセスする既存のJDBC PreparedStatementはすべて、再使用する前に再準備の工程を経る必要があります。これはInformixデータベース管理システムの制限です。WebLogic Serverでは、プールされた接続と同様に、アプリケーションのPreparedStatementもキャッシュ、保持、再使用されます。ただし、削除後に再作成されたり定義が変更されたりした表やプロシージャにアクセスするプリペアド文をアプリケーションで使用する場合は、キャッシュされたプリペアド文を再実行するといったん失敗します。実行できなくなったプリペアド文はその後キャッシュから削除され、アプリケーションでそのプリペアド文がもう一度要求されたときに置き換えられます。
WebLogic Serverの実行時にDBMS内の表やプロシージャを変更したためにPreparedStatementが失敗するのを防ぐには、「文キャッシュ・サイズ」を0に設定します。これにより、リクエストのたびに新しいPreparedStatementが作成されるようになります。ただし、文キャッシュを無効にすると、文キャッシングによるパフォーマンスの向上は見込めなくなります。
文キャッシュ・サイズの設定の詳細は、『Oracle WebLogic Server JDBCデータ・ソースの構成と管理』の文キャッシュを使用してパフォーマンス改善に関する項を参照してください。
以下に示すInformixドライバの接続プロパティを設定すると、アプリケーションのパフォーマンスを向上させることができます。
フェッチ・バッファのサイズを小さくするとメモリーの消費量を抑えることができますが、ネットワーク上のデータのやり取りが多くなりパフォーマンスが低下します。フェッチ・バッファのサイズを大きくすると、データベースからデータを返す際のネットワーク上のやり取りが少なくなってパフォーマンスが向上します。最適な値は、X = A * B * 50
の式を使用して計算できます。ここで、AはSelect
文を実行するとアプリケーションから戻される行の数、BはSelect
文を実行すると戻される一般的な行列の数です。
スクロール・インセンシティブな結果セットを使用する場合のパフォーマンスを向上させるため、ドライバは結果セット・データをディスクに書き込む代わりに、メモリーにキャッシュできます。デフォルトでは、ドライバはインセンシティブな結果セット・データを2 MBまでメモリーにキャッシュし、残りの結果セット・データをディスクに書き込みます。パフォーマンスを向上させるには、ドライバがデータをディスクに書き込む前に使用するメモリーの量を増やすか、ドライバがインセンシティブな結果セット・データをディスクに書込めないようにします。最大キャッシュ・サイズの設定は2 GBです。
ドライバがアプリケーション・サーバー内部から実行されない場合、または独自のプリペアド文のプールを提供しない別のアプリケーション内部から実行されない場合は、パフォーマンスを向上させるため、ドライバ独自の内部プリペアド文のプールを有効にする必要があります。ドライバの内部プリペアド文のプールを有効にすると、ドライバはアプリケーションによって作成された一定数のプリペアド文をキャッシュします。たとえば、MaxPooledStatements
プロパティを20に設定した場合、ドライバは、アプリケーションによって作成された最後の20個のプリペアド文をキャッシュします。このプロパティに設定された値が、アプリケーションが使用するプリペアド文の数よりも大きい場合、すべてのプリペアド文がキャッシュされます。
デフォルトでは、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
|
NVARCHAR |
VARCHAR
|
SERIAL |
INTEGER |
SERIAL8 |
BIGINT |
SMALLFLOAT |
REAL |
SMALLINT |
SMALLINT |
TEXT |
LONGVARCHAR |
VARCHAR |
VARCHAR |
データ型の詳細は、付録B「GetTypeInfo」を参照してください。
Informixドライバでは、アプリケーションで、特定の接続に関連した次のタイプのクライアント情報を格納して戻すことができます。
アプリケーション名
ユーザーID
クライアントのホスト名
会計IDなどの追加会計情報
Informixドライバの製品名とバージョン
この情報は、データベースの管理と監視に使用されます。付録C「Client In」を参照してください。
InformixドライバでサポートされているSQLエスケープ・シーケンスについては、付録C「JDBCのSQLエスケープ・シーケンス」を参照してください。
Informixは、分離レベルとしてRead Committed
、Read Uncommitted
、Repeatable Read
、およびSerializable
をサポートしています。デフォルトはRead Committed
です。
Informixドライバは、スクロール・センシティブな結果 セット、スクロール・インセンシティブな結果 セット、および更新可能な結果 セットをサポートしています。
注意: Informixドライバが、リクエストされた結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入ったSQLWarningを生成します。 |
Informixドライバでは、この項で説明するようにパラメータ・メタデータを返すことができます。
Informixドライバでは、ANSI SQL 92
エントリ・レベルの述語(COMPARISON
、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 = ?"
概数データ型として定義された列のパラメータ・メタデータがリクエストされると、ドライバからはスケールとして255が返されます。これは、その列が概数データ型であり、スケールがないことを示します。たとえば、次のようにcol2が概数データ型(精度20)の表を作成したとします。
CREATE table fooTest(col1 int, col2 decimal(20))
ドライバからは、col2のデータ型が精度20、スケール255の10進数であることを示すパラメータ・メタデータが返されます。
アプリケーションで表名情報が必要な場合、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()
メソッドが呼び出された場合にのみ実行されます。
Informixドライバは、以下のようなRowSetインタフェースのJSR 114実装をサポートします。
CachedRowSet
FilteredRowSet
WebRowSet
JoinRowSet
JDBCRowSet
ドライバでRowSetを使用するには、J2SE 1.4以上が必要です。
JSR 114の詳細は、http://www.jcp.org/en/jsr/detail?id=114
を参照してください。
Clob.position
メソッドを使用して文字列パターンのClob値を検索する場合は、検索パターンを最大値である4096バイト以下にする必要があります。同様に、Blob.position
メソッドを使用してバイト・パターンのBlob値を検索する場合は、検索パターンを最大値である4096バイト以下にする必要があります。
Informixドライバは自動生成キーの値の取得をサポートします。Informixドライバから返される自動生成キーは、SERIAL列またはSERIAL8列の値です。
自動生成キーの値を返すことができるのは、アプリケーションでInsert文を実行するときです。値を返す方法は、パラメータを含むInsert文を使用しているかどうかによって異なります。
パラメータを含まないInsert
文を使用する場合、Informixドライバは次の形式の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
文を使用する場合、Informixドライバは次の形式のConnection.prepareStatement()
メソッドをサポートします。このメソッドは、ドライバに自動生成キーの値を返すよう指示するためのものです。
Connection.prepareStatement(String sql, int
autoGeneratedKeys
)
Connection.prepareStatement(String sql, int[]
columnIndexes
)
Connection.prepareStatement(String sql, String[]
columnNames
)
自動生成キーの値は、Statement.getGeneratedKeys()
メソッドを使用して取得できます。このメソッドは、各自動生成キーの列とともにResultSetオブジェクトを返します。
次の手順を実行して、フェイルオーバーを構成します。
プライマリ・サーバーと代替サーバーを指定します。
接続URLまたはデータ・ソースを使用してプライマリ・サーバーを指定します。
AlternateServersプロパティを設定して、1つまたは複数の代替サーバーを指定します。
rssを参照してください。
FailoverMode
接続プロパティを設定して、フェイルオーバー・メソッドを選択します。デフォルト・メソッドは、接続フェイルオーバー(FailoverMode=connect
)です。
FailoverMode=extended
またはFailoverMode=select
の場合、FailoverGranularity
プロパティを設定して、失われた接続の再確立を試行しているときに例外が発生した場合のドライバの動作を指定します。ドライバのデフォルトの動作では、フェイルオーバー処理が続行され、例外が発生した文にその例外がポストされます(FailoverGranularity=nonAtomic
)。
オプションで、接続再試行の機能を構成します。214ページの「接続再試行の指定」を参照してください。
オプションで、ドライバによって、一度にプライマリ・サーバーおよび代替サーバーへの接続を確立する場合、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アドレスまたはサーバー名。このプロパティは、データ・ソース接続でのみサポートされます。 |