Oracle® Fusion Middleware Oracle WebLogic Server タイプ4 JDBCドライバ 11g リリース1(10.3.3) B61001-01 |
|
前 |
次 |
次の項では、WebLogic タイプ4 JDBC Sybaseドライバの構成方法と使用方法について説明します。
WebLogic タイプ4 JDBC Sybaseドライバのドライバ・クラスは次のとおりです。
XA : weblogic.jdbcx.sybase.SybaseDataSource
非XA : weblogic.jdbc.sybase.SybaseDriver
WebLogic ServerドメインにJDBCデータ・ソースを構成する場合に、これらのドライバ・クラスを使用します。
Sybaseドライバの接続URLの形式は次のとおりです。
jdbc:weblogic:sybase://hostname:port[;property=value[;...]]
説明:
hostnameは、接続するサーバーのTCP/IPアドレスまたはTCP/IPホスト名です。IPアドレスの使用については、「IPアドレスの使用」を参照してください。
注意: 信頼性のないアプレットから、そのホスト以外のマシンへのソケットを開くことはできません。 |
portは、TCP/IPポートの番号です。
property=valueは、接続プロパティを指定します。接続プロパティの一覧および各プロパティに指定できる値については、「Sybase接続プロパティ」を参照してください。
例:
jdbc:weblogic:sybase://server2:5000;User=test;Password=secre
Informixリソース・アダプタ用のManagedConnectionFactoryクラスは、次のとおりです。
com.weblogic.resource.spi.InformixManagedConnectionFactory
表5-3に、SybaseドライバでサポートされるJDBC接続プロパティを示し、各プロパティについて説明します。WebLogic ServerドメインのJDBCデータ・ソースの構成でこれらの接続プロパティを使用できます。プロパティを指定するには、JDBCデータ・ソースの構成で次の形式を使用します。 property=value
。
注意: すべての接続文字列プロパティ名で、大文字と小文字は区別されません。たとえば、Passwordはpasswordと同じです。各接続プロパティで示されているデータ型は、JDBCデータ・ソースのプロパティ値に使用されるJavaデータ型です。 |
表5-1 Sybaseの接続プロパティ
プロパティ | 説明 |
---|---|
AccountingInfo |
データベースに格納する会計情報。この値で、データベースの データ型: String 有効な値: |
AlternateServers |
選択したフェイルオーバー・メソッドに応じて、新規接続または切断接続の場合に使用される代替データベース・サーバーのリスト。フェイルオーバー・メソッドの選択については、FailoverModeプロパティを参照してください。 データ型: String 有効な値:
各代替サーバー・エントリでサーバー名( たとえば、次のURLには、server2およびserver3の代替サーバー・エントリが含まれます。代替サーバー・エントリには、オプションの
デフォルト: なし |
ApplicationName |
データベースに格納するアプリケーションの名前。この値によって、sysprocesses表の 有効な値: データ型: String デフォルトは空の文字列です。 |
AuthenticationMethod |
ドライバが接続を確立する際に使用する認証方法を指定します。指定された認証方法がデータベース・サーバーでサポートされていない場合は、接続に失敗してドライバから例外がスローされます。 有効な値: データ型: string
Sybaseドライバによる認証の使用方法については、「認証」を参照してください。 デフォルトは、 |
BatchPerformanceWorkaround |
バッチ処理の実行に使用するメソッドを決定します。 有効な値: データ型: boolean 値が
デフォルトはfalseです。 「バッチ挿入とバッチ更新」を参照してください。 |
BulkLoadBatchSize |
データをバルク・ロードするときにデータベースに一度にロードする行数に関して、ドライバに提案します。少数のネットワーク・ラウンド・トリップが必要となるため、ドライバから一度にロードされる行数を増やすことでパフォーマンスが改善されます。ロードされる行数を増やすと、ドライバからクライアントのより多くのメモリーが消費される場合があります。 注意:
有効な値: データ型: long |
ClientHostName |
データベースに格納されるクライアント・マシンのホスト名。この値により、 有効な値: データ型: String |
ClientUser |
データベースに格納されるユーザーID。この値により、データベースの 有効な値: データ型: String |
CodePageOverride |
ドライバが デフォルトでは、文字データの変換に使用するコード・ページが自動的に識別されます。このプロパティは、ドライバのデフォルト動作を変更する必要がある場合にのみ使用します。 |
ConnectionRetryCount |
データベース・サーバーへの正常な接続を確立できるまで、ドライバが接続を再試行する回数。 有効な値: 0 | データ型: int 0の場合、最初の試行が失敗したら再接続は試行されません。
試行の待機間隔は、 デフォルトは5です。 |
ConnectionRetryDelay |
有効な値は0または データ型: int 0に設定すると、ドライバでは再試行の間に遅延がありません。
デフォルトは1です。 |
ConvertNull |
データ変換におけるnull値の処理方法を制御します。 有効な値: 0 | 1 データ型: int 1の場合、ドライバは、リクエストされたデータ型とデータを格納する表列のデータ型を照合します。リクエストされた型と列の型の間の変換が定義されていない場合は、列値のデータ型に関係なく、「unsupported data conversion」例外が生成されます。 0の場合、列の値がnullであると、ドライバでデータ型がチェックされません。これによって、リクエストした型および列の型間の変換が定義されていない場合も、null値が戻されます。 デフォルトは1です。 |
データベース |
|
DatabaseName |
接続先のデータベースの名前。 有効な値:
|
EnableBulkLoad |
ドライバから、バッチ挿入のためにバッチ・メカニズムのかわりにデータベース内のネイティブな一括ロード・プロトコルが使用されるかどうかを指定します。バッチ操作の追加のパフォーマンスとして、データベースから実行されたデータ解析が一括ロードでバイパスされます。このプロパティでは、バッチ挿入のある既存のアプリケーションで、アプリケーション・コードを変更しないで一括ロードが使用できます。 有効な値:
データ型: boolean デフォルトは |
EnableCancelTimeout |
クエリがタイムアウトしたためドライバから送信された取消しリクエストに、取り消す文と同じ問合せタイムアウト値を適用するかどうかを指定します。 有効な値: データ型: boolean
|
EncryptionMethod |
ドライバとデータベース・サーバーの間でネットワークを介して転送するデータの暗号化と復号化に、SSL暗号化を使用するかどうかを指定します。 有効な値: データ型: String
注意: ドライバがSSLを要求しないデータベース・サーバーへの接続を試行すると、接続のハングが発生する可能性があります。SSLを要求しないサーバーに接続した場合に発生する問題を回避するには、
デフォルトは |
ErrorBehavior |
ストアド・プロシージャから戻されるエラーのドライバによる処理方法を決定します。 有効な値: データ型: String
注意: 旧バージョンのSybaseドライバでは、デフォルトで、ストアド・プロシージャから戻されたエラーがSQLWarningsに変換されます。ドライバに依存してエラーから警告への変換を行っていたアプリケーションでは、設定することでその動作に戻すことができます。 デフォルトは |
FailoverGranularity |
ドライバが、接続の欠落について接続の再確立を試行しているときに例外が発生する場合、プロセスを続行するか全体のフェイルオーバー・プロセスに失敗するかを指定します。 有効な値:
データ型: String デフォルトは |
FailoverMode |
ドライバから使用されるフェイルオーバー・メソッドのタイプを指定します。 有効な値:
注意:
データ型: String デフォルトは |
FailoverPreconnect |
ドライバが一度にプライマリおよび代替サーバーに接続しようとするかどうかを指定します。 有効な値:
注意: データ型: boolean デフォルトは |
HostNameInCertificate |
SSL暗号化と証明書の検証が有効になっています( EncryptionMethod=SSL および ValidateServerCertificate=trueが指定されています)場合に、証明書の検証に使用するホスト名を指定します。省略可能なこのプロパティは、ドライバが接続されているサーバーが実際にリクエストされたサーバーであることを保証することにより、介在者の攻撃(man-in-the-middle attack)を防ぐための追加のセキュリティを提供します。 注意:
有効な値:
データ型: String デフォルトは空の文字列です。 |
ImportStatementPool |
文プールの内容をロードするために使用されるファイルのファイル名およびパスを指定します。このプロパティが指定されている場合、文が、指定されたファイルから文プールにインポートされます。接続を確立するとき、指定されたファイルがドライバから見つけられない場合、接続に失敗して例外がスローされます。 有効な値: データ型: String デフォルトは空の文字列です。 |
InitializationString |
ドライバがデータベースへの接続を確立し、その接続のすべての初期化を実行した後に実行する1つまたは複数のSQLコマンドを指定します。SQLコマンドの実行が失敗した場合、接続試行も失敗し、どのSQLコマンドが失敗したかを示す例外が、ドライバからスローされます。 有効な値: 注意: 複数のコマンドを指定する場合はセミコロンで区切る必要があります。また、このプロパティを接続URL内に指定する場合、複数のコマンドを指定するには値全体をカッコで囲む必要があります。 例: 次の接続URLでは、null値の処理をSybaseのデフォルトに設定し、デリミタ付き識別子を使用できます。
データ型: String |
InsensitiveResultSetBufferSize |
ドライバがインセンシティブな結果セット・データのキャッシュに使用するメモリーの量を指定します。 有効な値: -1 | 0 | データ型: int -1の場合、ドライバはすべてのインセンシティブな結果セット・データをメモリーにキャッシュします。結果セットのサイズが利用できるメモリー容量を超えると、 0の場合、ドライバは2GBを限度としてすべてのインセンシティブな結果セット・データをメモリーにキャッシュします。結果セット・データのサイズが利用できるメモリー容量を超えると、その結果セット・データがディスクにページングされます。結果セット・データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがあります。 xの場合、xは正の整数であり、インセンシティブな結果セット・データのキャッシュに使用するメモリー・バッファのサイズ(KB単位)を指定します。結果セットのサイズがバッファ・サイズを超えると、結果セットがディスクにページングされます。結果セット・データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがあります。バッファ・サイズとして2の累乗を指定すると、メモリーの使用がより効率的になります。 デフォルトは2048 (KB)です。 |
JavaDoubleToString |
double値やfloat値をstring値に変換する際に、ドライバの内部変換アルゴリズムとJVM変換アルゴリズムのどちらを使用するかを指定します。 有効な値:
デフォルトは |
JDBCBehavior |
ドライバがJDBC 4.0データ型( 有効な値: 0 | 1 データ型: int 0に設定した場合、Java SE 6を使用するときにドライバはデータ型をJDBC 4.0データ型として記述します。また、 1に設定した場合、JVMに関係なく、ドライバではJDBC 3.0対応のデータ型を使用してデータ型が記述されます。これにより、アプリケーションはJava SE 6環境で継続してJDBC 3.0データ型を使用できます。また、 デフォルトは1です。 |
LoadBalancing |
ドライバで、データベース・サーバー(プライマリおよび代替)への接続試行にクライアント・ロード・バランシングが使用されるかどうかを指定します。AlternateServersプロパティを設定して1つ以上の代替サーバーを指定できます。 データ型: boolean 有効な値:
|
LoginTimeout |
ドライバが接続が確立されるのを待機する時間(秒単位)。この時間が経過すると、制御がアプリケーションに返され、タイムアウト例外がスローされます。 有効な値: 0 | データ型: int 0に設定すると、ドライバにより接続リクエストがタイムアウトされません。デフォルトの値は0。
|
LongDataCacheSize |
ドライバが結果セット内で長いデータ(イメージ、画像、長いテキストまたはバイナリ・データ)をキャッシュするかどうかを決定します。パフォーマンスを向上するために、アプリケーションが結果セット内の定義順に列を取得する場合に長いデータ・キャッシュを無効化できます。 有効な値: -1 | 0 | -1の場合、ドライバは結果セット内の長いデータをキャッシュしません。長いデータは、サーバーにキャッシュされます。アプリケーションでは結果セットに定義された順序で列を取得する場合のみ、この値を指定します。 0の場合は、ドライバは結果セット内の長いデータをメモリーにキャッシュします。結果セット・データのサイズが使用可能なメモリー容量を超えると、その結果セット・データがディスクにページングされます。
このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは2048です。 |
MaxPooledStatements |
この接続のプールされたプリペアド文の最大数。MaxPooledStatementsをゼロ(0)以上の整数に設定すると、ドライバの内部のプリペアド文プーリングが実行できます。この内部のプリペアド文プーリングは、アプリケーション・サーバーまたは独自のプリペアド文プーリングを提供する別のアプリケーション内部で実行されないドライバの場合に役立ちます。データ型: int 有効な値: 0 | 0に設定すると、ドライバの内部のプリペアド文プーリングが有効になっていません。デフォルトの値は0。
例: このプロパティの値を20に設定すると、アプリケーションによって作成された最後の20個のプリペアド文がキャッシュされます。 |
MaxStatements |
|
PacketSize |
データベース・サーバーからクライアント・マシンに転送される各データベース・プロトコル・パケットのバイト数を決定します(Sybaseではこのパケットをネットワーク・パケットと呼びます)。パケット・サイズを調整するとパフォーマンスを向上できます。最適なサイズは、アプリケーションやその実行環境によって挿入、更新、または戻されるデータの一般的なサイズによって異なります。通常は、パケット・サイズを大きくするほど大量のデータを処理しやすくなります。たとえば、アプリケーションが10,000文字の長さの値を定期的に戻す場合は、一般的に32(16 KB)の値を使用するとパフォーマンスが向上します。 有効な値: -1 | 0 | データ型: int -1の場合、ドライバはデータベース・サーバーで使用されている最大パケット・サイズを使用します。 0の場合、ドライバはデータベース・サーバーで使用されているデフォルトの最大パケット・サイズを使用します。
注意: アプリケーションで小さい結果セットを取得のみを行う問合せを送信する場合、データベース・サーバーで構成されている最大パケット・サイズより小さいパケット・サイズを使用します。1行または2行のみのデータの結果セットが大きいパケット全体を満たさない場合、値を最大パケット・サイズに設定してもパーフォマンスが向上しません。 このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは0です。 |
Password |
Sybaseデータベースに接続する場合に使用するパスワード。パスワードは、データベースでセキュリティが有効化されている場合にのみ必要となります。その場合、システム管理者に連絡してパスワードを取得します。 有効な値: string (ここで、stringは有効なパスワードです)。パスワードは大文字と小文字が区別されます。 データ型: String |
PortNumber (必須) |
Sybaseデータベースへの接続をリスニングするプライマリ・データベース・サーバーのTCPポート。このプロパティは、データ・ソース接続でのみサポートされます。 有効な値: データ型: int |
PrepareMethod |
サーバーにプリペアド文用のストアド・プロシージャを作成するかどうかを決定します。 有効な値: データ型: String
アプリケーションがプリペアド文を複数回実行する場合は、このプロパティを デフォルトは このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 |
ProgramID |
データベースに格納するクライアント・ドライバの製品およびバージョン情報。この値はローカルに格納され、データベースの管理/監視に使用されます。 データ型: String 有効な値: DDJVVRRM。説明:
例: DDJ04100 |
QueryTimeout |
接続で作成されたすべてのstatementsのデフォルト問合せタイムアウト(秒単位)を設定します。 有効な値: -1 | 0 | データ型: int -1の場合、問合せタイムアウト機能が無効化されます。ドライバは、通知なしで 0の場合、デフォルトの問合せタイムアウトは無限大となります(問合せはタイムアウトしません)。
デフォルトは0です。 |
ResultSetMetaDataOptions |
ドライバが 有効な値: 0 | 1 データ型: int 0の場合は、 1の場合は、 デフォルトは0です。 |
SelectMethod |
ドライバが、Select文でデータベース・カーソルをリクエストするかどうかを判定するためのヒント。ドライバがリクエストされたメソッドを常に満たすとは限らないのでヒントとして定義されるこのプロパティによって、ドライバのパフォーマンスと動作は影響を受けます。 有効な値: データ型: String
このプロパティを構成して最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照してください。 デフォルトは |
ServerName |
プライマリ・データベース・サーバーのIPアドレス(IPv4またはIPv6形式)またはサーバー名(ネットワークが名前付きのサーバーをサポートしている場合)を指定します。このプロパティは、データ・ソース接続でのみサポートされます。 有効な値: データ型: String |
ServicePrincipalName |
ドライバでKerberos認証に使用されるサービス・プリンシパル名を指定します。Sybaseでは、サービス・プリンシパル名はSybaseインタフェース・ファイルで構成されているサーバーの名前です。このプロパティを設定する場合は、 有効な値: string(ここで、stringは、有効なサービス・プリンシパル名を示す文字列です)。この名前では、大文字と小文字が区別されます。 データ型: String このプロパティの値にはオプションでKerberosレルム名を含めることができます。Kerberosレルム名を指定しない場合、デフォルトのKerberosレルム名が使用されます。たとえば、Kerberosレルム名を含むサービス・プリンシパル名がserver/sybase125ase1@XYZ.COMで、デフォルトのレルムがXYZ.COMの場合、このプロパティの有効な値は Sybaseドライバによる認証の使用方法については、「認証」を参照してください。 |
SpyAttributes |
Spyを有効にして、アプリケーションのかわりにドライバで発行された呼出しの詳細情報をログします。 有効な値: データ型: String デフォルト: なし。 WindowsでJava文字列を使用してログ・ファイルへのパスをコーディングする場合、バックスラッシュ文字(\)の前にJavaエスケープ文字のバックスラッシュを付ける必要があります。たとえば、 例: 次の値では、は1行当たり最大80文字を使用してすべてのJDBCアクティビティをファイルにログするようドライバに指示します。
|
TransactionMode |
ドライバがローカル・トランザクションの開始を区切る方法を制御します。 有効な値: データ型: String
デフォルトは、 |
TrustStore |
SSLサーバー認証を使用している場合に、使用するトラスト・ストア・ファイルのディレクトリを指定します。トラスト・ストア・ファイルには、クライアントが信頼する認証局(CA)のリストが格納されています。 この値によって、javax.net.ssl.trustStore Javaシステム・プロパティに指定されたトラストストア・ファイルのディレクトリがオーバーライドされます。このプロパティが指定されていない場合は、トラストストア・ファイルのディレクトリが このプロパティは、 有効な値: データ型: String デフォルト: なし |
TrustStorePassword |
SSLサーバー認証を使用している場合に、使用するトラスト・ストア・ファイルのパスワードを指定します。トラスト・ストア・ファイルには、クライアントが信頼する認証局(CA)のリストが格納されています。 この値によって、 このプロパティは、 有効な値: データ型: String デフォルト: なし |
UseAlternateProductInfo |
ドライバが 有効な値: データ型: boolean
デフォルトは |
User |
Sybaseデータベースに接続する場合に使用するユーザー名。ユーザー名は、データベースでセキュリティが有効化されている場合にのみ必要となります。その場合、システム管理者に連絡してユーザー名を取得します。 有効な値: データ型: String デフォルト: なし |
ValidateServerCertificate |
SSL暗号化が有効( 有効な値: データ型: boolean
デフォルトは |
以下に示すSybaseドライバの接続プロパティを設定すると、アプリケーションのパフォーマンスを向上させることができます。
ドライバはJDBC 3.0に準拠したバッチ・メカニズムまたはSybaseのネイティブ・バッチ・メカニズムを使用して、バッチ処理を実行できます。特に、パフォーマンスの負荷が大きいネットワークの往復が問題となっている場合、Sybaseのネイティブ・バッチ環境を使用するとパフォーマンスを向上させることができます。ネイティブ・メカニズムを使用すると、バッチを実行してエラーが発生した場合、ドライバはバッチ内でエラーを引き起こした文を判別できません。また、バッチの中にストアド・プロシージャを呼び出した文やトリガーを実行した文が含まれる場合、各バッチ文またはパラメータ・セットに対する複数の更新件数が生成されます。JDBC 3.0に準拠したメカニズムでは、JDBC 3.0仕様で求められているように、バッチ内の文やパラメータごとの更新件数が返されます。Sybaseのネイティブ・バッチ・メカニズムを使用するには、このプロパティをtrueに設定してください。
バッチ挿入のために、ドライバによって、バッチ・メカニズムのかわりにネイティブな一括ロード・プロトコルを使用できます。バッチ操作の追加のパフォーマンスとして、データベースから実行されたデータ解析が一括ロードでバイパスされます。このプロパティをtrueに設定すると、バッチ挿入との既存のアプリケーションに、コードを変更しないで一括ロードが使用できます。
データの暗号化と復号化により余分なオーバーヘッド(主にCPUの使用率)がかかるため、パフォーマンスが低下する場合があります。
スクロール・インセンシティブな結果セットを使用する場合のパフォーマンスを向上させるため、ドライバは結果セット・データをディスクに書き込む代わりに、メモリーにキャッシュできます。デフォルトでは、ドライバはインセンシティブな結果セット・データを2 MBまでメモリーにキャッシュし、残りの結果セット・データをディスクに書き込みます。パフォーマンスを向上させるには、ドライバがデータをディスクに書き込む前に使用するメモリーの量を増やすか、ドライバがインセンシティブな結果セット・データをディスクに書込めないようにします。最大キャッシュ・サイズの設定は2 GBです。
アプリケーションが画像、ピクチャ、長いテキスト、またはバイナリ・データを返すときのパフォーマンスを向上させるために、アプリケーションが長いデータ列値を結果セット内での定義順に返す場合、クライアントで長いデータのキャッシュを無効にすることができます。アプリケーションが長いデータ列値を順不同で返す場合は、長いデータ値をクライアントでキャッシュする必要があります。この場合は、データをディスクに書き込む前にドライバによって使用されるメモリーの容量を増やすことで、パフォーマンスを改善できます。
ドライバがアプリケーション・サーバーの内部で実行されない場合、または独自のプリペアド文のプールを提供しない別のアプリケーションの内部で実行されない場合は、パフォーマンスを向上させるために、ドライバ独自の内部プリペアド文のプールを有効にする必要があります。ドライバの内部プリペアド文のプールを有効にすると、ドライバはアプリケーションによって作成された一定数のプリペアド文をキャッシュします。たとえば、MaxPooledStatementsプロパティを20に設定した場合、ドライバは、アプリケーションによって作成された最後の20個のプリペアド文をキャッシュします。このプロパティに設定された値が、アプリケーションが使用するプリペアド文の数よりも大きい場合、すべてのプリペアド文がキャッシュされます。プリペアド文プールを使用してパフォーマンスを最適化する方法の詳細は、「rss」を参照してください。
通常、クライアントはサーバーで許可されている最大パケット・サイズを使用するのが適しています。これにより、クライアントへデータを返すために必要な往復回数が減るため、パフォーマンスが向上します。つまり、このプロパティにデータベース・サーバーの最大パケット・サイズを設定すると、パフォーマンスを向上させることができます。
アプリケーションがプリペアド文を複数回実行する場合は、このプロパティをStoredProc
に設定するとパフォーマンスが向上します。これは、いったん作成されたストアド・プロシージャは、単一のSQL文よりも高速に実行できるためです。アプリケーションがプリペアド文を複数回実行することがない場合は、このプロパティをDirect
に設定してください。この場合、ストアド・プロシージャを作成するとパフォーマンスが低下します。これは、ストアド・プロシージャによるサーバーへのオーバーヘッドが、単一のSQL文を実行する場合よりも大きくなるためです。
デフォルトでは、ResultSetMetaData.getTableName()
メソッドが呼び出された場合、Sybaseドライバは、結果セット内の各列の正しい表名を戻すために必要な追加の処理を省略します。このため、getTableName()
メソッドは結果セット内の列ごとに空の文字列を戻す可能性があります。アプリケーションで表名情報が必要ない場合は、この設定によって最適なパフォーマンスが得られます。ResultSetメタデータを戻す方法の詳細は、「ResultSetメタデータのサポート」を参照してください。
ほとんどの場合、サーバー側のデータベース・カーソルを使用するとパフォーマンスに悪影響を与えます。ただし、アプリケーションが次のような条件に該当する場合は、このプロパティの最適な設定はcursorです。この設定は、サーバー側のデータベース・カーソルを使用することを表します。
アプリケーションに大量のデータを返す問合せが含まれています。
アプリケーションが、以前の大きな結果セットを処理する前または閉じる前にSQL文を実行し、これを複数回行います。
アプリケーションによって返される大きな結果セットが前方専用のカーソルを使用しています。
表5-2では、Sybaseドライバでサポートされるデータ型と、それらがJDBCデータ型へどのようにマップされるかを示します。
表5-2 Sybaseデータ型
Sybaseのデータ型 | JDBCのデータ型 |
---|---|
BIGINT脚注1 |
BIGINT |
BINARY |
BINARY |
BIT |
BIT |
CHAR |
CHAR |
DATE脚注2 |
DATE |
DATETIME |
TIMESTAMP |
DECIMAL |
DECIMAL |
FLOAT |
FLOAT |
IMAGE |
LONGVARBINARY |
INT |
INTEGER |
MONEY |
DECIMAL |
NUMERIC |
NUMERIC |
REAL |
REAL |
SMALLDATETIME |
TIMESTAMP |
SMALLINT |
SMALLINT |
SMALLMONEY |
DECIMAL |
SYSNAME |
VARCHAR |
TEXT |
LONGVARCHAR |
TIME脚注3 |
TIME |
TIMESTAMP |
VARBINARY |
TINYINT |
TINYINT |
UNICHAR脚注4 |
CHAR 注意: |
UNITEXT脚注5 |
LONGVARCHAR 注意: |
UNIVARCHAR脚注6 |
VARCHAR 注意: |
UNSIGNED BIGINT脚注7 |
DECIMAL |
UNSIGNED INT脚注8 |
BIGINT |
UNSIGNED SMALLINT脚注9 |
INTEGER |
VARBINARY |
VARBINARY |
VARCHAR |
VARCHAR |
脚注1 Sybase 15でのみサポートされます。
脚注2 Sybase 12.5以上でのみサポートされます。
脚注3 Sybase 12.5以上でのみサポートされます。
脚注4 Sybase 12.5以上でのみサポートされます。
脚注5 Sybase 15でのみサポートされます。
脚注6 Sybase 12.5以上でのみサポートされます。
脚注7 Sybase 15でのみサポートされます。
脚注8 Sybase 15でのみサポートされます。
脚注9 Sybase 15でのみサポートされます。
注意: SYBASE ADAPTIVE SERVER 12.5以降を使用する場合、Sybaseドライバはcharacterおよびbinaryの列でのXNL (extended new limits)をサポートします。長さが255を超える列がサポートされます。characterおよびbinaryの列におけるXNLの詳細については、Sybaseのドキュメントを参照してください。 |
データ型の詳細は、付録B「GetTypeInfo」を参照してください。
認証では、ユーザーの識別情報を保護することで、悪意のあるハッカーが転送中のユーザー資格証明を傍受できないようになっています。概要については「認証」を参照してください。
Sybaseドライバでは、以下の認証方法がサポートされます。
ユーザーID/パスワード認証:アプリケーションで指定されたデータベースのユーザー名とパスワードを使用して、データベースにアクセスするユーザーを認証します。
Kerberos認証: Kerberos (信頼性のあるサード・パーティ認証サービスの1つ)を使用してユーザーの識別情報を検証します。Kerberos認証では、オペレーティング・システムに保持されているユーザー名とパスワードを利用して、データベースにアクセスするユーザーを認証できます。それ以外のユーザー資格証明セットを使用することも可能です。
この方法を指定する場合は、Kerberos環境を構成するための知識が必要になります。また、Windows Active Directory KerberosおよびMIT Kerberosがサポートされている必要があります。
ドライバのAuthenticationMethod
接続プロパティは、ドライバが接続を確立する際に使用する認証メカニズムを指定するために使用します。このプロパティに設定する値の詳細は、「AuthenticationMethodプロパティの使用」を参照してください。
AuthenticationMethod
接続プロパティは、ドライバが接続を確立する際に使用する認証メカニズムを指定するために使用します。
AuthenticationMethod=kerberos
に設定すると、接続を確立する際にKerberos認証が使用されます。UserプロパティとPasswordプロパティに指定された値は無視されます。
AuthenticationMethod=userIdPassword
(デフォルト)の場合、ドライバは接続を確立する際にユーザーID/パスワード認証を使用します。User
プロパティはユーザーIDを提供します。Password
プロパティはパスワードを提供します。ユーザーIDが指定されていない場合は、ドライバから例外がスローされます。
次の手順を実行して、ユーザーIDとパスワードを構成します。
AuthenticationMethod
プロパティをuserIdPasswordに設定します。このプロパティに設定する値の詳細は、「AuthenticationMethodプロパティの使用」を参照してください。
User
プロパティにユーザーIDを設定します。
Password
プロパティにパスワードを設定します。
この項では、SybaseドライバにKerberos認証を構成する場合の要件と手順について説明します。
ドライバにKerberos認証を構成する前に、使用している環境が表5-3の要件を満たしていることを確認してください。
表5-3 SybaseドライバにKerberos認証を構成する場合の要件
コンポーネント | 要件 |
---|---|
データベース・サーバー |
データベース・サーバーはクライアントを管理している同じドメイン・コントローラによって管理され、Sybase 12.0以上を実行している必要があります。 |
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プロパティの使用」を参照してください。
ServicePrincipalName
プロパティにKerberos認証で使用されるサービス・プリンシパル名(大文字/小文字を区別します)に設定します。Sybaseでは、サービス・プリンシパル名はSybaseインタフェース・ファイルで構成されているサーバーの名前です。
ServicePrincipalName
プロパティの値にはKerberosレルム名を含めることができますが、省略可能です。レルム名を指定しない場合は、デフォルトのKerberosレルムが使用されます。たとえば、Kerberosレルム名を含むサーバー・プリンシパル名がserver/sybase125ase1@XYZ.COMで、デフォルト・レルムがXYZ.COMの場合、このプロパティの有効な値は次のようになります。
server/sybase125ase1@XYZ.COM
および
server/sybase125ase1
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][Sybase JDBC Driver]Could not establish a connection using integrated security: No valid credentials provided
java.security.krb5.conf
システム・プロパティで別のKerberos構成ファイルをロードするように設定されていないかぎり、WebLogic Type4 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.sybase.SybaseDriver"); String url = "jdbc:weblogic:sybase://myServer:5000"; 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認証を使用し、Kerberos認証がWindows Active Directoryから提供されている場合は、アプリケーション・ユーザーがKerberosサーバーにログオンして明示的にTGTを取得する必要はありません。ユーザーのTGTは、Windows Active Directoryによって自動的に取得されます。
アプリケーション・ユーザーは以下の場合にTGTを明示的に取得する必要があります。
アプリケーションがUNIXまたはLinuxクライアントからKerberos認証を使用する場合
アプリケーションがWindowsクライアントからKerberos認証を使用し、Kerberos認証がMIT Kerberosから提供されている場合
ユーザーがTGTを明示的に取得するには、kinitコマンドを使用してKerberosサーバーにログインする必要があります。たとえば、次に示すコマンドは、存続期間が10時間で5日間更新可能なTGTをサーバーにリクエストしています。
kinit -l 10h -r 5d user
ここでは、user
はアプリケーション・ユーザーです。
kinitコマンドの使用とユーザーのTGTの取得については、Kerberosドキュメントを参照してください。
Sybaseドライバでは、データ暗号化でSSLがサポートされます。SSLが提供する暗号化と認証によって、データの整合性を確保できます。詳細は、「ネットワーク上でのデータの暗号化」を参照してください。
注意: ドライバが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)を防ぐための追加のセキュリティを提供します。
Sybaseドライバを使用すると、アプリケーションで特定の接続に関する次のタイプのクライアント情報を格納および戻すことができます。
アプリケーション名
ユーザーID
クライアントのホスト名
会計IDなどの追加会計情報
製品名およびSybaseドライバのバージョン
この情報を使用してデータベースの管理および監視を行うことができます。「rss」を参照してください。
SybaseドライバでサポートされるSQLエスケープ・シーケンスの詳細は、付録C「JDBCのSQLエスケープ・シーケンス」を参照してください。
Sybaseドライバは、トランザクション分離レベルとしてRead Committed
、Read Uncommitted
、Repeatable Read
、およびSerializable
をサポートしています。デフォルトはRead Committed
です。
Sybaseドライバは、ID列を持つ表から結果セットが返される場合にのみ、スクロール・センシティブな結果セットをサポートします。Sybaseドライバでも、スクロール・インセンシティブな結果セット、および更新可能な結果セットをサポートしています。
注意: Sybaseドライバが、リクエストされた結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入ったSQLWarningを生成します。 |
SybaseではBlob
またはClob
データ型は定義されていませんが、Sybaseドライバによって、BlobおよびClob用に設計されたJDBCメソッドを使用して長いデータのLONGVARBINARY
およびLONGVARCHAR
データを取得および更新できます。これらのメソッドを使用して長いデータをBlob
またはClob
として更新すると、更新はBlobまたはClobオブジェクト内のデータのローカル・コピーに対して行われます。
BlobおよびClob用のJDBCメソッドを使用して長いデータを取得および更新すると、BlobおよびClobを操作した場合と同じメリットが得られます。たとえばBlobおよびClobを使用した場合、
データにランダム・アクセスできます。
特定の文字列から始まるデータを取得するなど、データのパターン検索が可能になります。
BlobおよびClobを使用した場合のこうしたメリットを得るには、データをキャッシュする必要があります。データをキャッシュするので、特に一度にデータの逐次読出しを行う場合に、パフォーマンスが低下します。長いデータのサイズが使用可能なメモリーよりも大きいと、パフォーマンスが著しく低下することがあります。
Sybaseドライバは次のバッチ・メカニズムを提供します。
ドライバ内のコードを使用してバッチ処理を実行する、JDBC 3.0に準拠したメカニズム。これは、Sybaseドライバが使用するデフォルトのメカニズムです。
Sybaseのネイティブのバッチ機能を使用するメカニズム。特に、パフォーマンスの負荷が大きいネットワークの往復に関しては、このメカニズムの方が標準のメカニズムより高速になる可能性があります。バッチを実行してエラーが発生した場合、ドライバはバッチ内でエラーを引き起こした文を判別できません。また、バッチの中にストアド・プロシージャを呼び出した文やトリガーを実行した文が含まれる場合、各バッチ文またはパラメータ・セットに対する複数の更新件数が生成されます。
Sybaseのネイティブ・バッチ・メカニズムを使用するには、BatchPerformanceWorkaround
接続プロパティをtrue
に設定します。
Sybaseドライバは、あらゆるタイプのSQL文とストアド・プロシージャの引数のパラメータ・メタデータを返すことができます。
アプリケーションで表名情報が必要な場合、SybaseドライバはSelect文のResultSetメタデータに含めて表名情報を返すことができます。ResultSetMetaDataOptions
プロパティを1に設定した場合、ResultSetMetaData.getTableName()
メソッドが呼び出されたとき、Sybaseドライバは結果セット内の各列の正しい表名を決定する追加の処理を実行します。それ以外の場合、getTableName()
メソッドは結果セット内の列ごとに空の文字列を返す可能性があります。
ResultSetMetaDataOptions
プロパティが1に設定されていて、ResultSetMetaData.getTableName()
メソッドが呼び出された場合、Sybaseドライバが返す表名情報は、結果セット内の列がデータベース表内の列にマップされているかどうかによって異なります。結果セット内の各列がデータベース表内の列にマップされている場合、Sybaseドライバはその列に関連付けられている表名を返します。結果セット内の各列が表内の列にマップされていない場合(集約やリテラルなど)、Sybaseドライバは空の文字列を返します。
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
Sybaseドライバは、ResultSetMetaData.getSchemaName()
メソッドとResultSetMetaData.getCatalogName()
メソッドが呼び出された場合、スキーマ名とカタログ名の情報を返すこともできます(ドライバがこの情報を判別できる場合)。たとえば、以下の文の場合、Sybaseドライバはカタログ名として「test」、スキーマ名として「test1」、表名として「foo」を返します。
SELECT * FROM test.test1.foo
表名、スキーマ名、およびカタログ名の情報を返すために必要な追加の処理は、ResultSetMetaData.getTableName()
、ResultSetMetaData.getSchemaName()
、またはResultSetMetaData.getCatalogName()
メソッドが呼び出された場合にのみ実行されます。
Sybaseドライバは、以下のようなRowSetインタフェースのJSR 114実装をサポートします。
CachedRowSet
FilteredRowSet
WebRowSet
JoinRowSet
JDBCRowSet
ドライバでRowSetを使用するには、J2SE 1.4以上が必要です。
JSR 114の詳細は、http://www.jcp.org/en/jsr/detail?id=114
を参照してください。
Sybaseドライバは自動生成キーの値の取得をサポートします。Sybaseドライバから返される自動生成キーは、identity列の値です。
自動生成キーの値を返すことができるのは、アプリケーションでInsert文を実行するときです。値を返す方法は、パラメータを含むInsert文を使用しているかどうかによって異なります。
パラメータを含まないInsert
文を使用する場合、Sybaseドライバは次の形式の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
文を使用する場合、Sybaseドライバは次の形式のConnection.prepareStatement()
メソッドをサポートします。このメソッドは、ドライバに自動生成キーの値を戻すよう指示するためのものです。
Connection.prepareStatement(String sql, int
autoGeneratedKeys
)
Connection.prepareStatement(String sql, int[]
columnIndexes
)
Connection.prepareStatement(String sql, String[]
columnNames
)
自動生成キーの値は、Statement.getGeneratedKeys()
メソッドを使用して取得できます。このメソッドは、各自動生成キーの列とともにResultSet
オブジェクトを戻します。
Sybaseドライバは、接続を確立するときに、Sybaseのデータベース・オプションansinull
をオン
に設定します。ansinullをオンに設定した場合、ドライバはANSI SQL標準に準拠し、他のWebLogic タイプ4 JDBCドライバの動作との一貫性が保たれるため、データベース間を横断するアプリケーションの開発が容易になります。
デフォルトでは、SybaseはSQLの等価比較(=)または不等価比較(<>)や集約関数におけるnull値の評価を、ANSI SQL準拠の方法では行いません。たとえば、ANSI SQL仕様では、次のSelect
文のようなcol1=NULL
は常にfalseと評価するよう定義されています。
SELECT * FROM table WHERE col1 = NULL
デフォルトのデータベース設定(ansinull=off
)を使用すると、同じ比較がfalse
ではなくtrue
と評価されます。
ansinull
をオンに設定した場合、データベースによるnull値の処理方法が変わり、=NULL
ではなくIS NULL
の使用が強制されます。たとえば、次のSelect
文のcol1の値がnullである場合、比較の評価はtrue
になります。
SELECT * FROM table WHERE col1 IS NULL
アプリケーションでは以下の方法で、接続に関するSybaseのデフォルトの動作に戻すことができます。
InitializationString
プロパティを使用してSQLコマンドset ANSINULL off
を指定します。たとえば、次のURLでは、現在の接続に関して、null値の処理がSybaseのデフォルトにリストアされます。
jdbc:weblogic:sybase://server1:5000; InitializationString=set ANSINULL off;DatabaseName=test
接続が確立された後で以下の文を明示的に実行します。
SET ANSINULL OFF
グローバル・トランザクションでSybase XAドライバを使用するには、グローバル・トランザクションをサポートするようにSybaseサーバーを設定しておく必要があります。『Oracle WebLogic Server JTAのプログラミング』のXAをサポートするためのSybaseサーバーの構成に関する項を参照してください。
次の手順を実行して、フェイルオーバーを構成します。
プライマリ・サーバーと代替サーバーを指定します。
接続URLまたはデータ・ソースを使用してプライマリ・サーバーを指定します。
AlternateServersプロパティを設定して、1つまたは複数の代替サーバーを指定します。
rssを参照してください。
FailoverMode
接続プロパティを設定して、フェイルオーバー・メソッドを選択します。デフォルト・メソッドは、接続フェイルオーバー(FailoverMode=connect
)です。
FailoverMode=extended
またはFailoverMode=select
の場合、FailoverGranularity
プロパティを設定して、失われた接続の再確立を試行しているときに例外が発生した場合のドライバの動作を指定します。ドライバのデフォルトの動作では、フェイルオーバー処理が続行され、例外が発生した文にその例外がポストされます(FailoverGranularity=nonAtomic
)。
オプションで、接続再試行機能を構成します。「rss」を参照してください。
オプションで、ドライバによって、一度にプライマリ・サーバーおよび代替サーバーへの接続を確立する場合、FailoverPreconnect
プロパティを設定します。デフォルトの動作では、失敗した接続試行または失われた接続で発生したフェイルオーバーの場合、代替サーバーのみへ接続されます。(FailoverPreconnect=false
)。
次のいずれかのメソッドを実行して、プライマリ・サーバーと代替サーバーの接続情報を指定できます。
JDBCドライバ・マネージャを介した接続URL
JDBCデータ・ソース
たとえば、次のInformixドライバ用の接続URLでは、接続URLでプライマリ・サーバーと代替サーバーの接続情報を指定します。
jdbc:datadirect:sybase://server1:4100;DatabaseName=TEST;User=test; Password=secret;AlternateServers=(server2:4100;DatabaseName=TEST2, server3:4100;DatabaseName=TEST3)
この例では:
...server1:4100;DatabaseName=TEST...
これは、プライマリ・サーバー用の接続情報を指定する接続URLの一部です。代替サーバーがAlternateServers
プロパティで指定されます。例:
...;AlternateServers=(server2:4100;DatabaseName=TEST2, server3:4100;DatabaseName=TEST3)
同様に、JDBCデータ・ソースで指定されたプライマリ・サーバーと代替サーバーで同一の接続情報は、次のようになります。
例5-1 JDBCデータ・ソースの構成の例
SybaseDataSource mds = new SybaseDataSource(); mds.setDescription("My SybaseDataSource"); mds.setServerName("server1"); mds.setPortNumber(4100); mds.setDatabaseName("TEST"); mds.setUser("test"); mds.setPassword("secret"); AlternateServers=(server2:4100;DatabaseName=TEST2, server3:4100;DatabaseName=TEST3)
この例では、ServerName
、PortNumber
、および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
のいずれかのプロパティです。これらのプロパティは、各代替サーバー・エントリでオプションとなります。たとえば、次のようになります。
jdbc:datadirect:sybase://server1:4100;DatabaseName=TEST;User=test; Password=secret;AlternateServers=(server2:4100;DatabaseName=TEST2, server3:4100)
代替サーバーのエントリにDatabaseName
接続プロパティを指定しない場合、その代替サーバーへの接続ではプライマリ・サーバーのURLで指定されているプロパティが使用されます。たとえば、次のURLに示すように、プライマリ・サーバーにDatabaseName=TEST
を指定し、代替サーバーのエントリにデータベースの名前を指定しない場合、ドライバは代替サーバー上のTESTデータベースに接続しようとします。
jdbc:datadirect:sybase://server1:4100;DatabaseName=TEST;User=test; Password=secret;AlternateServers=(server2:4100,server3:4100)
接続再試行では、Informixドライバがプライマリ・データベース・サーバーへの接続を再試行できます。指定されている場合、正常な接続を確立するまで代替サーバーへの接続を再試行できます。ConnectionRetryCount
およびConnectionRetryDelay
プロパティを使用して、接続再試行を有効にでき、その動作を制御できます。たとえば、次のようになります。:
jdbc:datadirect:sybase://server1:4100;DatabaseName=TEST;User=test; Password=secret;AlternateServers=(server2:4100;DatabaseName=TEST2, server3:4100;DatabaseName=TEST3);ConnectionRetryCount=2; ConnectionRetryDelay=5
この例では、データベース・サーバー(プライマリ・サーバーおよび代替サーバー)のリストを介してSQL Serverドライバの最初のパスで接続がまだ確立されていない場合、ドライバはサーバーのリストを同じ順序で2回再試行します(ConnectionRetryCount=2
)。接続再試行の遅延が5秒に設定されているため(ConnectionRetryDelay=5
)、ドライバは再試行パスの間に5秒まで待機します。
次の表は、Informixドライバでフェイルオーバーの動作を制御する接続プロパティを要約したものです。
表5-4 要約: Informixドライバのフェイルオーバー・プロパティ
AlternateServers |
1つまたは複数の代替データベース・サーバー。各サーバーを識別するIPアドレスまたはサーバー名が必要です。ポート番号および |
ConnectionRetryCount |
ドライバがプライマリ・データベース・サーバーへの接続を再試行する回数。指定されている場合、代替サーバーへ正常に接続するまで再試行します。デフォルトは5です。 |
ConnectionRetryDelay |
|
DatabaseName |
接続するデータベースの名前。 |
FailoverGranularity |
切断された接続の再確立中に例外が発生した場合、ドライバがフェイルオーバー処理全体に失敗するか、または処理を続行するかを決定します。デフォルトは |
FailoverMode |
ドライバで使用されるフェイルオーバー・メソッド。デフォルトは |
FailoverPreconnect |
ドライバが同時にプライマリ・サーバーと代替サーバーへの接続を試みるかどうかを指定します。デフォルトは |
LoadBalancing |
ドライバで、データベース・サーバー(プライマリ・サーバーと代替サーバー)への接続の試行にクライアント・ロード・バランシングを使用するかどうかを設定します。クライアント・ロード・バランシングを有効にすると、ドライバでは、順次的ではなくランダムに接続が試行されます。デフォルトは、 |
PortNumber |
プライマリ・データベース・サーバーの接続のポート・リスニング。このプロパティは、データ・ソース接続でのみサポートされます。 |
ServerName |
プライマリ・データベース・サーバーのIPアドレスまたはサーバー名。このプロパティは、データ・ソース接続でのみサポートされます。 |
ドライバでは、WebLogicバルク・ロードの機能がサポートされます。この機能を使用すると、アプリケーションでは大量のデータ行を、多数の小さいデータベース・プロトコル・パケットではなく連続ストリームとしてデータベースに送信できます。バッチ操作と同様に、ネットワーク上のラウンド・トリップが少なくなるので、パフォーマンスが向上します。バルク・ロードによって、通常データベースで行われるデータの解析が省略されるので、バッチ操作よりもさらにパフォーマンスが向上します。「rss」を参照してください。