Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理 11g リリース1 (10.3.6) B60997-05 |
|
![]() 前 |
![]() 次 |
この章では、JDBCデータ・ソースを構成およびチューニングする方法について説明します。
WebLogic Serverでデータベース接続を構成するには、データ・ソースをWebLogicドメインに追加します。WebLogic JDBCデータ・ソースを使用すると、データベースにアクセスし、データベース接続を管理できます。各データ・ソースには、データ・ソース作成時およびサーバー起動時に作成される、データベース接続のプールが含まれています。アプリケーションは、JNDIツリーまたはローカル・アプリケーション・コンテキストでデータ・ソースをルックアップし、次にgetConnection()
を呼び出すことで、データ・ソースからのデータベース接続を予約します。接続の使用が終わったら、アプリケーションはできるだけ早くconnection.close()
を呼び出して、データベース接続をプールに戻し、他のアプリケーションが使用できるようにする必要があります。
WebLogic Serverは、次の3種類のデータ・ソースを提供します。
汎用データ・ソース: 汎用データ・ソースとその接続プールによって、システムを効率よく稼働するのに役立つ接続管理プロセスが提供されます。アプリケーションや環境に合うようにデータ・ソースでオプションを設定できます。
GridLinkデータ・ソース: Oracle RACインスタンスで状態の変化に順応して応答するイベント・ベースのデータ・ソース。「GridLinkデータ・ソースの使用」を参照してください。
マルチ・データ・ソース: マルチ・データ・ソースとは、ロード・バランシングやフェイルオーバー処理を提供する汎用データ・ソースのグループに関する抽象化です。「JDBCマルチ・データ・ソースの構成」を参照してください。
管理コンソールまたはWebLogic Scripting Tool (WLST)を使用して、WebLogicドメインにJDBCデータ・ソースが作成できます。
Oracle WebLogic Server管理コンソール・ヘルプのJDBCデータ・ソースの作成に関する項。
サンプルWLSTスクリプトSAMPLES_HOME
\server\examples\src\examples\wlst\online\jdbc_data_source_creation.py
(SAMPLES_HOME
はWebLogic Serverインストールの主要なサンプル・ディレクトリを示します)。『Oracle WebLogic Scripting Tool』のWLSTオンライン・サンプル・スクリプトに関する項を参照してください。
次の項では、管理コンソールでデータ・ソースを作成するためのデータ・ソース構成ウィザードで実行する基本手順の概要を示します。
JDBCデータ・ソース・プロパティには、データ・ソースのアイデンティティを定義するオプション、およびデータベース接続でのデータ処理方法が含まれます。
JDBCデータ・ソース名は、WebLogicドメイン内でデータ・ソースを識別するために使用されます。システム・リソース・データ・ソースの場合、名前はデータ・ソースやマルチ・データ・ソースを含む他のすべてのJDBCシステム・リソースを通じて一意であることが必要です。名前の競合を避けるため、データ・ソース名はサーバー、アプリケーション、クラスタ、JMSキュー、JMSトピック、JMSサーバーなど、他の構成オブジェクト名の中でも一意であることが必要です。アプリケーションをスコープとするJDBCアプリケーション・モジュールの場合、データ・ソース名は同様のスコープを持つJDBCデータ・ソースとマルチ・データ・ソースを通じて一意であることが必要です。
単一または複数の名前でJNDIツリーにバインドされるように、データ・ソースを構成できます。1つのJDBC接続プールを指す複数のデータ・ソースを含む従来の構成のかわりに、複数のJNDI名を持つデータ・ソースを使用できます。詳細は、『Oracle WebLogic Server JNDIのプログラミング』を参照してください。
DBMSを選択します。サポートされているデータベースについては、『Oracle WebLogic Serverの新機能』のサポートされている構成に関する項を参照してください。
管理コンソールを使用してJDBCデータ・ソースを作成する際、JDBCドライバ・クラスを選択するよう求められます。管理コンソールでは大部分の一般的なドライバ・クラス名が表示され、ほとんどの場合、ドライバに必要なURLの作成も支援されます。ただし、コンソールにURLのテストをリクエストする前に、URLが適切であることを確認してください。選択するドライバは、データ・ソースのデプロイ先のすべてのサーバーのクラスパス
に存在している必要があります。ただし、管理コンソールで一覧表示されるすべてのJDBCドライバがWebLogic Serverに付属している(または、クラスパス
にすでに存在している)わけではありません。
Oracle Thin Driver
Oracle Thin Driver XA
Oracle Thin Driver非XA
Oracle BIサーバーのドライバ(タイプ4): すべて
サード・パーティのJDBCドライバ(第12章「WebLogic ServerでのJDBCドライバの使い方」を参照):
MySQL (非XA)
次のデータベース管理システム用のWebLogic DataDirectドライバ(WebLogicブランドのDataDirectドライバの使用に関する項を参照):
DB2
Informix
Microsoft SQL Server
Sybase
これらのドライバはすべて、weblogic.jar
マニフェスト・ファイルによって参照され、サーバーのクラスパス
で明示的に定義される必要はありません。
データベースへの接続に使用するJDBCドライバを決定する際には、環境内で様々なベンダーのドライバを試してみることが必要です。通常、JDBCドライバのパフォーマンスは、アプリケーションで使用するSQLコード、JDBCドライバの実装など、様々な要因によって左右されます。
サポートされているJDBCドライバについては、『Oracle WebLogic Serverの新機能』のサポートされている構成に関する項を参照してください。
注意: データ・ソースの作成時に管理コンソールにリストされるJDBCドライバは、必ずしもWebLogic Serverで使用する認定を受けているとはかぎりません。JDBCドライバは、多数の使用可能なデータベース管理システムへの接続を作成するのに役立つ便利情報としてリストされています。 データ・ソースでJDBCドライバを使用してデータベース接続を作成するには、データ・ソースをデプロイする各サーバーにJDBCドライバをインストールする必要があります。ドライバは、データ・ソースの構成に役立つ既知の必須構成オプションと共に管理コンソールにリスト表示されます。一覧にあるJDBCドライバが必ずしもインストールされているとは限りません。ドライバのインストールでは、システム・パス、クラスパス、その他の環境変数の設定を行う場合もあります。タイプ4サード・パーティJDBCドライバの環境の設定に関する項を参照してください。JDBCドライバが更新されると、構成要件も変更される場合があります。管理コンソールは、WebLogic Serverソフトウェアがリリースされた時点で既知の構成要件を使用します。JDBCドライバの構成オプションが変更されている場合、データ・ソースの作成時、または作成後(データ・ソースのプロパティのページで)、構成オプションを手動でオーバーライドする必要がある場合があります。 |
管理コンソールを使用してJDBCデータ・ソースを構成すると、WebLogic ServerはJDBCドライバの種類に基づき、自動的に特定のトランザクション・オプションを選択します。
XAドライバの場合、システムは自動的に、グローバル・トランザクション処理のための2フェーズ・コミット・プロトコルを選択します。
非XAドライバの場合、ローカル・トランザクションは定義によってサポートされており、WebLogic Serverは以下のオプションを提供します。
「グローバル・トランザクションのサポート」: (デフォルトで選択) XAドライバを選択していなくても、グローバル・トランザクションでデータ・ソースからの接続を使用する場合には、このオプションを選択します。詳細については、「非XA JDBCドライバでのグローバル・トランザクションのサポートの有効化」を参照してください。
「グローバル・トランザクションのサポート」を選択した場合は、グローバル・トランザクションを処理するときに、WebLogic Serverがトランザクション・ブランチに使用するプロトコルも選択する必要があります。
「ロギング・ラスト・リソース」: このオプションを使用すると、接続が使用されているトランザクション・ブランチが、トランザクションの最後のリソースとして処理され、ローカル・トランザクションとして処理されます。2フェーズ・コミット(2PC)トランザクションのコミット・レコードは、リソース自体の表に挿入され、その結果によって、グローバル・トランザクションの準備フェーズの成功または失敗が決定されます。このオプションでは、「2フェーズ・コミットのエミュレート」よりもパフォーマンス上のメリットとデータの安全性が得られますが、いくつかの制限事項もあります。「ロギング・ラスト・リソース・トランザクション・オプションの理解」を参照してください。
注意: ロギング・ラスト・リソースは、マルチ・データ・ソースで使用されるデータ・ソースについてはサポートされていません。ただし、「LLRデータ・ソースに関する管理上の考慮事項と制限事項」で説明するように、Oracle RACバージョン10Gリリース2 (10GR2)以降と一緒に使用する場合を除きます。 |
2フェーズ・コミットのエミュレート: このオプションを使用すると、接続が使用されているトランザクション・ブランチは、トランザクションの準備フェーズに対して常に成功を戻します。パフォーマンス上のメリットはありますが、いくつかの失敗の状況ではデータにリスクがあります。このオプションは、アプリケーションがヒューリスティックな状況を許容できる場合にのみ選択します。「2フェーズ・コミットのエミュレート・トランザクション・オプションの理解」を参照してください。
1フェーズ・コミット: (デフォルトで選択済み)このオプションを使用すると、データ・ソースからの接続がグローバル・トランザクションの唯一の参加者となることができ、トランザクションは1フェーズ・コミットの最適化を使用して完了します。トランザクションに複数のリソースが参加している場合、トランザクション・マネージャが1PCリソースに対してXAResource.prepare
を呼び出すと、例外がスローされます。
データ・ソースのトランザクション・サポートの構成の詳細は、「JDBCデータ・ソース・トランザクション・オプション」を参照してください。
接続プロパティは、データ・ソースおよびDBMS間の接続の構成に使用されます。通常の属性は、データベース名、ホスト名、ポート番号、ユーザー名およびパスワードです。
注意: ホスト名を表すために単一クライアント・アクセス名(SCAN)アドレスを使用できます。Oracle RAC 11.2以上を使用する場合は、次の点を考慮してください。
SCANアドレスの使用方法の詳細は、『Real Application Clusters管理およびデプロイメント・ガイド』の自動ワークロード管理の概要に関する項を参照してください。 |
Oracle BIサーバーをDBMSとして選択した場合、「接続プロパティ」ページで追加の接続プロパティを構成します(『Oracle Business Intelligence Publisher管理者および開発者ガイド』の接続文字列に関する項を参照)。
「データベース接続のテスト」で、データ・ソースの構成を終了する前に、表名またはSQL文を使用してデータベース接続をテストすることができます。必要であれば、「プロパティ」
および「システム・プロパティ」
属性を使用して追加構成情報をテストできます。
1つ以上のターゲットを選択して新規JDBCデータ・ソースをデプロイできます。ターゲットを選択しない場合、データ・ソースは作成されますがデプロイされません。後でデータ・ソースをデプロイする必要があります。
各JDBCデータ・ソースには、データ・ソースのデプロイ時またはサーバー起動時に作成される、JDBC接続のプールが含まれています。アプリケーションは、プールから接続を使用し、使用し終わると、プールに戻します。接続をプールすることにより、アプリケーション用にデータベース接続を作成するというコストのかかるタスクがなくなるため、パフォーマンスが向上します。
注意: 一部のOracle JDBC拡張機能や、他のドライバから使用可能な他の非標準メソッドは、接続の動作を(プールされた接続の将来のユーザーが継承するような方法で)永続的に変更する可能性があります。WebLogic Serverは、可能な場合、ある種の呼出しから接続を保護しようとします。 |
次の項では、JDBCデータ・ソースの接続プールのオプションについて説明します。
これらのオプションおよびその他の関連オプションの詳細は、次で参照し、設定できます。
管理コンソールの「JDBCデータ・ソース: 構成: 接続プール」ページ。Oracle WebLogic Server管理コンソール・ヘルプの「JDBCデータ・ソース: 構成: 接続プール」を参照してください。
JDBCDataSourceBeanの子MBeanである、JDBCConnectionPoolParamsBean
WebLogic JDBCデータ・ソースは、JDBCドライバで実装されるjavax.sql.ConnectionPoolDataSource
インタフェースをサポートしています。JDBCデータ・ソース内のProperties
属性にプロパティおよびその値を追加して、ドライバ・レベルの機能を有効化できます。Properties
属性におけるドライバ・レベルのプロパティは、ドライバのConnectionPoolDataSource
オブジェクトで設定されます。
WebLogic JDBCデータ・ソースは、システム・プロパティの値によるドライバ・プロパティの設定をサポートします。各プロパティの値は、指定されたシステム・プロパティから実行時に取得されます。データ・ソース構成の「システム・プロパティ」
属性を編集することで管理コンソールを使用して、接続ベースのシステム・プロパティを構成できます。
WebLogic Serverでは、データ・ソースにおけるデータベース接続の作成時に、自動的にSQLコードを実行して、データベース接続を初期化できます。この機能を有効にするには、管理コンソールの「JDBCデータ・ソース: 構成: 接続プール」ページの「初期化SQL」属性に「SQL」
と入力し、その直後にスペース、次に実行するSQLコードを入力します。この属性を空白のままにしておくと(デフォルト)、データベース接続を初期化するコードは実行されません。
サーバーの起動時、接続プールの拡張時、接続のリフレッシュ時など、データ・ソースにおけるデータベース接続の作成時には常にここで指定したコードが実行されます。
この機能を使用して、接続ごとのDBMS固有の動作を設定したり、必要なアクションを実行できるメモリーや権限を接続が確実に備えるようにすることができます。
コードは、「SQL」
で開始し、その後にスペースを入れます。例:
SQL alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
または
SQL SET LOCK MODE TO WAIT
InitSQL
によって設定できるオプションは、DBMSごとに異なります。
注意: 初期化SQLは、動的な属性ではありません。初期化SQLの値を変更する際には、データ・ソースをアンデプロイしてから再デプロイするか、またはサーバーを再起動する必要があります。 |
WebLogic JDBCデータ・ソースは、システム・プロパティの値によるドライバ・プロパティの設定をサポートします。各プロパティの値は、指定されたシステム・プロパティから実行時に取得されます。データ・ソース構成の「システム・プロパティ」
属性を編集することで管理コンソールを使用して、接続ベースのシステム・プロパティを構成できます。
これらのオプションおよびその他の関連オプションの詳細は、次で参照し、設定できます。
管理コンソールの「JDBCデータ・ソース: 構成: 接続プール」ページ。Oracle WebLogic Server管理コンソール・ヘルプの「JDBCデータ・ソース: 構成: 接続プール」を参照してください。
JDBCDataSourceBeanの子MBeanである、JDBCConnectionPoolParamsBean
接続でデータ・ソースの通信相手のバックエンド・データベースにアクセスできなくなったことを示す致命的エラー・コードを定義できます。接続は無効のマークが付けられてプールから取り出されますが、データ・ソースは中断されません。これらのエラーには、サーバーの起動を失敗させるデプロイメント・エラーや、接続を接続プールに戻せなくなる接続エラーなどがあります。
エラーが(sqlException.getErrorCode()
によって取得される) SQLException内に例外コードとして指定されている場合、致命的エラーが発生して接続が機能しなくなったため、接続プールから削除されることが示されます。Oracleデータベースの場合、次の致命的エラー・コードがWLS内に事前定義されており、これらのコードを構成ファイル内に指定する必要はありません。
エラー・コード | 説明 |
---|---|
3113 |
通信チャネルでend-of-fileが検出されました。 |
3114 |
Oracleに接続されていません。 |
1033 |
Oracleの初期化または停止が進行中です。 |
1034 |
Oracleは使用できません。 |
1089 |
即時停止が進行中です。操作は許可されません。 |
1090 |
停止が進行中です。接続は許可されません。 |
17002 |
I/O例外。 |
管理コンソールで致命的エラー・コードを定義する場合、Oracle WebLogic Server管理コンソール・ヘルプの致命的エラー・コードの定義に関する項を参照してください。
WebLogic Serverには、Oracleドライバの使用時にデータ・ソースのパフォーマンスを向上させる属性がいくつか用意されています。詳細は、「Oracleドライバとデータベースの詳細構成」を参照してください。
ONSクライアントを構成すると、汎用データ・ソースがGridLinkデータ・ソースに変更されます。構成情報および追加の環境要件の詳細は、GridLinkデータ・ソースの使用に関する項を参照してください。
WebLogic ServerドメインのJDBCデータ・ソース内の接続プール属性を正しく構成することで、アプリケーションおよびシステムのパフォーマンスを向上できます。詳細は、「データ・ソースの接続プールのチューニング」を参照してください。
次の項では、セキュリティ資格証明をDBMSに渡す方法についての情報を提供します。
Weblogic Serverでは、セキュリティ権限に基づいて、次の2種類のデータ・ソース・プールが提供されます。
同種 - アプリケーションのエンド・ユーザーに関係なく、プール内のすべての接続で同じセキュリティ資格証明を使用してDBMSにアクセスします。
異種 - アプリケーションは、様々なDBMS資格証明で物理的な接続をプールすることによって、特定のDBMS資格証明でJDBC接続を使用できます。
ここでは、セキュリティ資格証明をDBMSに渡す方法を比較します。
資格証明の最も簡単なタイプの認証情報は、接続プールにDBMSのユーザー・アカウント名およびパスワードを提供することです。そうすると、プール内のすべての接続は、同じ認証情報を使用してDBMSにアクセスします。Oracle WebLogic Server管理コンソール・ヘルプのJDBCデータ・ソースの作成に関する項を参照してください。
注意: パスワードは「プロパティ」フィールドに名前と値の組み合わせとして入力すること(本番環境では許可されません)も、「パスワード」フィールドに入力することも可能です。「パスワード」フィールドの値は、物理的なデータベース接続を作成するときにJDBCドライバに渡されるPropertiesで定義されている、いかなるpassword値をもオーバーライドします。プロパティ文字列でパスワード・プロパティのかわりにPassword属性を使用することをお薦めします。なぜなら、Password値は構成ファイル内で暗号化(モジュール・ファイルの |
データ・ソースで「接続時にクライアントIDを設定」
属性が有効になっている場合は、アプリケーションによってデータ・ソースのデータベース接続がリクエストされたときに、WebLogic Serverインスタンスが現在のWebLogicユーザーIDを判別し、マップされているデータベースIDを軽量なクライアントIDとして設定します。この場合も、プール内のすべての接続で同じ資格証明を使用してDBMSにアクセスします。基本的な構成手順は次のとおりです:
「接続時にクライアントIDを設定」
を選択し、Oracle WebLogic Server管理コンソール・ヘルプのJDBCデータ・ソースに対する接続時に「クライアントIDの設定」の有効化に関する項を参照してください。
注意: WebLogicユーザーIDおよびデータベースIDをマッピングするための資格証明マッピングは、Oracle Thinドライバを使用するOracleデータベースでのみサポートされます。この機能は、Oracle DMSドライバではサポートされません。 |
WebLogicユーザーIDおよびデータベースIDをマップします。Oracle WebLogic Server管理コンソール・ヘルプのJDBCデータ・ソースの資格証明マッピングの構成に関する項を参照してください。
この機能は、JDBCドライバおよびDBMSの機能に依存します。OracleおよびDB2データベースで、ベンダー提供の拡張メソッドを使用する場合にのみサポートされます。
oracle.jdbc.OracleConnection.setClientIdentifier(String id)
com.ibm.db2.jcc.DB2Connection.setDB2ClientUser(String user)
注意: 「接続時にクライアントIDを設定」と「IDベースの接続プールを有効化」は相互に排他的です。アプリケーション環境でセキュリティ資格証明を渡すために両方のメカニズムが必要な場合は、別々のデータ・ソースを作成して、一方は「接続時にクライアントIDを設定」を指定し、もう一方は「IDベースの接続プールを有効化」を指定してください。 |
IDベースの接続プーリングを使用すると、アプリケーションは、様々なDBMS資格証明で物理的な接続をプールすることによって、特定のDBMS資格証明でJDBC接続を使用できます。
データ・ソースで「IDベースの接続プールを有効化」
属性が有効になっている場合は、アプリケーションによってデータ・ソースのデータベース接続がリクエストされたとき、WebLogic Serverインスタンスは既存の物理的接続を選択するか、またはWebLogicユーザー資格証明とDBMS資格証明のマップに基づき、リクエストされたDBMS IDで新しい物理的接続を作成します。基本的な構成手順は次のとおりです:
「IDベースの接続プールを有効化」
を選択し、Oracle WebLogic Server管理コンソール・ヘルプのJDBCデータ・ソースのIDベースの接続プールの有効化に関する項を参照してください。
WebLogicユーザー資格証明とDBMS資格証明をマップします。Oracle WebLogic Server管理コンソール・ヘルプのJDBCデータ・ソースの資格証明マッピングの構成に関する項を参照してください。
注意: 「接続時にクライアントIDを設定」と「IDベースの接続プールを有効化」は相互に排他的です。アプリケーション環境でセキュリティ資格証明を渡すために両方のメカニズムが必要な場合は、別々のデータ・ソースを作成して、一方は「接続時にクライアントIDを設定」を指定し、もう一方は「IDベースの接続プールを有効化」を指定してください。 |
次の項では、異種接続が作成されるプロセスについて説明します。
接続プールの初期化時に、データ・ソースのデフォルトDBMS資格証明で物理的なJDBC接続が作成されます。
アプリケーションは、データ・ソースからの接続の取得を試行します。
現在のサーバー・インスタンス資格証明はDBMS資格証明にマップされています。Oracle WebLogic Server管理コンソール・ヘルプのJDBCデータ・ソースの資格証明マッピングの構成を参照してください。
一致する資格証明が見つからない場合、デフォルトのDBMS資格証明が使用されます。
注意: デフォルトのDBMS資格証明は、XAトランザクションを実行したり、接続テスト操作を実行できる最低限のDBMS権限を持つ必要があります。 |
一致する資格証明が見つかった場合、DBMS資格証明に一致する物理的な接続の検出にその資格証明が使用されます。
一致する接続が見つかった場合、その接続が予約されてアプリケーションに戻されます。
一致する接続が見つからない場合、プールの最大容量に基づいて1つの接続が作成されるか、再利用されます。
最大容量にまだ達していない場合、DBMS資格証明で新しい接続が作成され、予約されてから、アプリケーションに戻されます。
プールが最大容量に達している場合、LRU (Least Recently Used)アルゴリズムに基づいて、物理的な接続がプールから選択され、破棄されます。DBMS資格証明で新しい接続が作成され、予約されてから、アプリケーションに戻されます。
物理的な接続がどのように作成されるかに関係なく、プール内の物理的な各接続は、プールによって維持される独自のDBMS資格証明情報を持ちます。物理的な接続がプールによっていったん予約されると、現在のスレッドがWebLogicユーザーの資格証明を変更しても、そのDBMS資格は変更されず、引き続き同じ接続が使用されます。
グローバル・トランザクションの中で実行される場合、アプリケーションは現在のスレッド上の資格証明を変更して、別の資格証明に基づき複数のJDBC接続を取得することができます。ただし、IDベースのプール機能では、グローバル・トランザクションの中でのWebLogic JDBCデータ・ソースの複数の論理JDBC接続を、単一の物理JDBC接続にマップします。つまり、WebLogicサーバー・インスタンスに対する1つのWebLogic JDBCデータ・ソースにつき、ただ1つのDBMS資格証明のみが、グローバル・トランザクションについて尊重されるということです。
IDベースのプーリングにおいてロギング・ラスト・リソース(LLR)トランザクション最適化を利用するには、次の変更を行う必要があります。
完全修飾LLR表名を使用して、LLRのカスタム・スキーマを構成する必要があります。そうすると、すべてのLLR接続が、LLRトランザクション表へのアクセス時に、デフォルトのスキーマではなく指定されたスキーマを使用するようになります。
データベース固有の管理ツールを使用して、指定されたLLR表へのアクセス許可を、すべてのユーザーに付与します。デフォルトでは、LLR表はデータ・ソース内で接続に対して構成されたユーザーによって、起動の際に作成されます。ほとんどの場合、データベースはこのユーザーに対してのみアクセスを許可し、マップされたユーザーには許可しません。
WebLogic Serverのこれまでのリリースでは、アプリケーション・スコープのJDBC接続プールは、デフォルトの接続プールの値を提供するのに、JDBCデータ・ソース・ファクトリを使用していました。JDBCデータ・ソース・ファクトリはWebLogic Server 9.2では非推奨となっており、本リリースでは後方互換性のみを目的としています。アプリケーション・スコープのJDBC接続プールの代わりとして、JDBCアプリケーション・モジュールが使用されます。詳細は、「パッケージ化されたJDBCモジュールのアプリケーション・スコープ指定」を参照してください。