プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server 12.1.3 JDBCデータ・ソースの管理
12c (12.1.3)
E56266-09
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 JDBCデータ・ソースの構成

この章では、WebLogic Server 12.1.3でのJDBCデータ・ソースの構成方法とチューニング方法について説明します。

この章には次の項が含まれます:

JDBCデータ・ソースの理解

WebLogic Serverでデータベース接続を構成するには、データ・ソースをWebLogicドメインに追加します。WebLogic JDBCデータ・ソースにより、データベースへのアクセスおよびデータベース接続管理が可能になります。各データ・ソースには、データ・ソースの作成時とサーバーの起動時に作成されるデータベース接続のプールが含まれています。アプリケーションは、JNDIツリーまたはローカル・アプリケーション・コンテキストでデータ・ソースをルックアップしてから、getConnection()を呼び出してデータ・ソースからデータベース接続を確保します。接続の使用後に、アプリケーションは、できるだけ早くconnection.close()を呼び出す必要があります。これにより、データベース接続をプールに戻して、他のアプリケーションが使用できるようにします。

WebLogic Server JDBCデータ・ソースのタイプ

WebLogic Serverは、次の3種類のデータ・ソースを提供します。

  • 汎用データ・ソース: 汎用データ・ソースとその接続プールによって、効率的なシステム運用の維持を円滑にする接続管理プロセスが提供されます。アプリケーションや環境に適合するオプションをデータ・ソースで設定できます。

  • Active GridLink (AGL)データ・ソース: 1つ以上のOracle RACクラスタ内の1つ以上のノードに及ぶ接続プールを提供するデータ・ソース。これは、ノード全体にわたる接続の動的ロード・バランシングをサポートし、クラスタに対するノードの追加や削除を示すイベントを処理します。第5章「Active GridLinkデータ・ソースの使用方法」を参照してください。

  • マルチ・データ・ソース(MDS): マルチ・データ・ソースとは、汎用データ・ソースのグループに関する抽象化のことです。この抽象化により、ロード・バランシングやフェイルオーバー処理を実現します。「JDBCマルチ・データ・ソースの構成」を参照してください。

JDBCデータ・ソースの作成

WebLogicドメインにJDBCデータ・ソースを作成するには、WebLogic Server管理コンソールまたはWebLogic Scripting Tool (WLST)を使用します。

  • Oracle WebLogic Server管理コンソール・オンライン・ヘルプJDBCデータ・ソースの作成に関する項

  • サンプルのWLSTスクリプトEXAMPLES_HOME\wl_server\examples\src\examples\wlst\online\jdbc_data_source_creation.pyEXAMPLES_HOMEは、WebLogic Serverのコード・サンプルが構成されるディレクトリを表しています。『WebLogic Scripting Toolの理解』のWLSTオンライン・サンプル・スクリプトに関する項を参照してください。

次の各項では、WebLogic Server管理コンソールからデータ・ソースの構成ウィザードを使用して、データ・ソースを作成するために使用する基本手順の概要について説明します。

JDBCデータ・ソースのプロパティ

「JDBCデータ・ソースのプロパティ」には、データ・ソースのアイデンティティを決定するオプションと、データベース接続でデータを処理する方法を決定するオプションがあります。

データ・ソース名

JDBCデータ・ソースの名前は、WebLogicドメイン内でデータ・ソースを識別するために使用されます。システム・リソース・データ・ソースの場合、そのリソース以外のすべてのJDBCシステム・リソース間で一意の名前を付ける必要があります。名前の競合を避けるために、データ・ソースの名前は、その他の構成オブジェクト(サーバー、アプリケーション、クラスタ、JMSキュー、JMSトピック、JMSサーバーなど)の名前の間でも一意にする必要があります。特定のアプリケーションにパッケージ化されたJDBCアプリケーション・モジュールの場合、データ・ソースの名前は、同様にスコープ設定されたJDBCデータ・ソース間で一意にする必要があります。

JNDI名

単一の名前または複数の名前でJNDIツリーにバインドされるように、データ・ソースを構成します。詳細は、『Oracle WebLogic Server JNDIアプリケーションの開発』を参照してください。

データベース・タイプの選択

DBMSを選択します。サポート対象のデータベースの詳細は、『Oracle WebLogic Serverの新機能』のサポート対象の構成に関する項を参照してください。

JDBCドライバの選択

WebLogic Server管理コンソールを使用してJDBCデータ・ソースを作成すると、JDBCドライバ・クラスの選択を求めるプロンプトが表示されます。WebLogic Server管理コンソールには、一般的なドライバ・クラス名の大部分が表示され、ほとんどの場合、ドライバの必要に応じたURLの作成が支援されます。ただし、コンソールでURLをテストする前に、そのURLが適切であることを確認してください。選択するドライバは、データ・ソースのデプロイ先のすべてのサーバーのclasspathに含まれている必要があります。WebLogic Server管理コンソールに一覧表示されたすべてのJDBCドライバが、WebLogic Serverに付属している(またはclasspathにすでに含まれている)わけではありません。

  • Oracle Thinドライバ

    • Oracle ThinドライバXA

    • Oracle Thinドライバ非XA

  • MySQL (非XA)

  • サード・パーティ製のJDBCドライバ(第14章「WebLogic ServerでのJDBCドライバの使用方法」を参照):

  • 次に示すデータベース管理システム用の、WebLogicブランドのDataDirectドライバ(「WebLogicブランドのDataDirectドライバの使用」を参照):

    • DB2

    • Informix

    • Microsoft SQL Server

    • Sybase

これらのすべてのドライバは、weblogic.jarマニフェスト・ファイルで参照されるため、サーバーのclasspathに明示的に定義されている必要はありません。

データベースへの接続に使用するJDBCドライバを決定する際には、目的の環境で様々なベンダーのドライバを試してみることが必要です。通常、JDBCドライバのパフォーマンスは、アプリケーションで使用するSQLコードやJDBCドライバの実装など、様々な要因に応じて変化します。

サポート対象のJDBCドライバの詳細は、『Oracle WebLogic Serverの新機能』のサポート対象の構成に関する項を参照してください。


注意:

データ・ソースの作成時に、WebLogic Server管理コンソールに一覧表示されるJDBCドライバには、WebLogic Serverでの使用が保証されていないものもあります。JDBCドライバの一覧は、多数の使用可能なデータベース管理システムへの接続を円滑に作成するための利便性を目的として示されます。

JDBCドライバを使用してデータ・ソースにデータベース接続を作成するには、データ・ソースをデプロイするサーバーごとにJDBCドライバをインストールする必要があります。WebLogic Server管理コンソールに一覧されるドライバは、データ・ソースの構成に役立つ既知の必須構成オプションとともに示されます。この一覧には、インストールされていないJDBCドライバも表示されます。ドライバのインストールには、システムのPathやClasspathなどの環境変数の設定が含まれることがあります。「サードパーティJDBCドライバの使用」を参照してください。JDBCドライバの更新に伴って、構成要件が変更されることがあります。WebLogic Server管理コンソールは、WebLogic Serverソフトウェアがリリースされた時点での既知の構成要件を使用します。JDBCドライバの構成オプションが変更されているときには、その構成オプションの手動でのオーバーライドが必要になる場合があります。その場合、データ・ソースの作成時またはデータ・ソースの作成後にプロパティのページでオプションをオーバーライドします。


トランザクション・オプションの構成

WebLogic Server管理コンソールを使用して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以降を使用する場合は、次の点について考慮してください。
  • データ・ソースの接続先のOracle RAC REMOTE_LISTENERSCANに設定されている場合、データ・ソース接続URLにはSCANアドレスのみが使用できます。

  • データ・ソースの接続先のOracle RAC REMOTE_LISTENERList of Node VIPsに設定されている場合、データ・ソース接続URLにはVIPアドレスのリストのみが使用できます。

  • データ・ソースの接続先のOracle RAC REMOTE_LISTENERMix of SCAN and List of Node VIPsに設定されている場合、データ・ソース接続URLにはSCANアドレスとVIPアドレスの両方を使用できます。

SCANアドレスの使用方法の詳細は、『Real Application Clusters管理およびデプロイメント・ガイド11gリリース2 (11.2)』の自動ワークロード管理の概要に関する項を参照してください。


Oracle BI Serverの接続プロパティの構成

DBMSとしてOracle BI Serverを選択した場合は、「接続プロパティ」ページで追加の接続プロパティを構成します。構成手順は、『Oracle Business Intelligence Publisher管理者および開発者ガイド』接続文字列に関する項を参照してください。

接続のテスト

「データベース接続のテスト」を使用すると、データ・ソース構成をファイナライズする前に、表名またはSQL文を使用してデータベース接続をテストできます。必要に応じて、Properties属性とSystem Properties属性を使用すると、追加の構成情報をテストできます。

データ・ソースのターゲット設定

新しいJDBCデータ・ソースのデプロイ先に、1つ以上のターゲットを選択します。ターゲットを選択していない場合でもデータ・ソースは作成されますが、デプロイされません。そのデータ・ソースは、接続を取得する前にデプロイする必要があります。

汎用の接続プール機能の構成

各JDBCデータ・ソースは、そのデータ・ソースのデプロイ時またはサーバーの起動時に作成されるJDBC接続のプールを1つ保持します。アプリケーションは、プールからの接続を使用して、その接続を使用後にプールに返します。接続のプーリングにより、アプリケーション用のデータベース接続を作成するという負担のかかるタスクを排除して、パフォーマンスを向上できます。


注意:

特定のOracle JDBC拡張機能や、その他のドライバで使用できる他の非標準メソッドでは、プールされた接続の将来のユーザーが接続の動作を継承するという方法で、接続の動作を永続的に変更することが可能です。WebLogic Serverは、このようなタイプの呼出しに対して、可能な場合は接続の保護を試行します。

次の各項では、JDBCデータ・ソースの接続プール・オプションについて説明します。

次の項目を使用すると、さらに多くの情報を確認して、これらのオプションとその他の関連オプションを設定できます。

JDBCドライバ・レベルの機能の有効化

WebLogic JDBCデータ・ソースは、JDBCドライバで実装されるjavax.sql.ConnectionPoolDataSourceインタフェースをサポートしています。ドライバ・レベルの機能は、JDBCデータ・ソースのProperties属性にプロパティと値を追加することで有効化できます。Properties属性のドライバ・レベルのプロパティは、ドライバのConnectionPoolDataSourceオブジェクトで設定します。

接続ベースのシステム・プロパティの有効化

WebLogic JDBCデータ・ソースは、システム・プロパティの値を使用したドライバ・プロパティの設定をサポートしています。各プロパティの値は、指定されたシステム・プロパティから実行時に導出されます。接続ベースのシステム・プロパティを構成するには、WebLogic Server管理コンソールを使用して、データ・ソース構成のSystem Properties属性を編集します。

接続ベースの暗号化されたプロパティの有効化

WebLogic JDBCデータ・ソースは、暗号化された値を使用したドライバ・プロパティの設定をサポートしています。接続ベースの暗号化されたプロパティを構成するには、WebLogic Server管理コンソールを使用して、データ・ソース構成のEncrypted Properties属性を編集します。詳細は、「暗号化された接続プロパティの使用」を参照してください。

SQLコードを使用したデータベース接続の初期化

WebLogic Serverがデータ・ソース内にデータベース接続を作成したときに、サーバーがデータベース接続を初期化するSQLコードを自動的に実行するように設定できます。この機能を有効化するには、WebLogic Server管理コンソールの「JDBCデータ・ソース: 構成: 接続プール」ページの「初期化SQL」属性で、SQLと入力し、その後に実行するSQLコードを空白を挟んで入力します。または、SQLを使用せずに単純な表名を指定できます。SELECT COUNT(*) FROM tablenameという文を使用します。この属性を空欄(デフォルト)のままにしておくと、WebLogic Serverは、データベース接続を初期化するコードを実行しなくなります。

WebLogic Serverは、データベース接続をデータ・ソースに作成するたびに、このコードを実行します。また、サーバー起動時、接続プールの拡張時および接続のリフレッシュ時にも、このコードを実行します。

この機能を使用して、DBMS固有の操作設定値(接続固有)を設定することも、必要な操作を実行するためのメモリーや権限を接続に用意することもできます。

コードの先頭には、SQLと、それに続けて空白を入力します。たとえば、Oracle DBMSでは次のようになります。

SQL alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

Informix DBMSでは次のようになります。

SQL SET LOCK MODE TO WAIT

SQL文はJDBC Statement.execute()を使用して実行します。InitSQLを使用して設定できるオプションは、DBMSに応じて異なります。サポートされている文については、データベース・ベンダーのドキュメントを参照してください。複数の文を実行する場合は、ストアド・プロシージャを作成して実行することもできます。この構文はベンダー固有です。たとえば、Oracleストアド・プロシージャを実行するには、次のように指定します。

SQL CALL MYPROCEDURE()

詳細な接続プロパティ

次の各項では、詳細な接続プロパティのうち重要なプロパティについて重点的に説明します。

致命的エラー・コードの定義

データ・ソースと通信するデータベース・サーバーに、接続でアクセスできなくなったことを示す致命的エラー・コードを定義できます。その接続は無効のマークが付けられて、プールから取り除かれますが、データ・ソースが中断されることはありません。これらのエラーには、サーバーがブートできなくなるデプロイメント・エラーおよび接続を接続プールに戻せなくなる接続エラーが含まれます。

SQLExceptionの範囲内の例外コード(sqlException.getErrorCode()によって取得される)として指定されているコードは、致命的エラーが発生して接続が機能しなくなったために、その接続が接続プールから削除されることを意味します。Oracleデータベースでは、次の致命的エラー・コードがWLSに事前定義されており、構成ファイルに配置する必要はありません:

エラー・コード 説明
3113 通信チャネルでend-of-fileが検出されました
3114 Oracleに接続されていません
1033 Oracleの初期化またはシャットダウン中です
1034 Oracleは使用できません
1089 即時シャットダウン処理中 - 操作はできません
1090 シャットダウン処理中 - 接続はできません
17002 I/O例外

DB2の場合は、次の致命的エラー・コードは事前定義されています: -4498、-4499、-1776、-30108、-30081、-30080、-6036、-1229、-1224、-1035、-1034、-1015、-924、-923、-906、-518、-514、58004。

Informixの場合、次の致命的エラー・コードは事前定義されています: -79735、-79716、-43207、-27002、-25580、-4499、-908、-710、43012。

WebLogic Server管理コンソールで致命的エラー・コードを定義する場合は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプ致命的エラー・コードの定義に関する項を参照してください。

エディションベースの再定義の有効化

エディションベースの再定義は、Oracleデータベースの機能です。この機能を使用すると、アプリケーションのデータベース・コンポーネントを使用中にアップグレードできるようになるため、停止時間を最小化または排除できるようになります。この機能を使用するには、次のようにデータ・ソースを構成する必要があります。

SQL ALTER SESSION SET EDITION = name

データソース構成の「接続プール」タブにある、「初期化SQL」パラメータで設定します。WLSTを使用して、InitSQL属性を更新することもできます。Oracle WebLogic Server MBeanリファレンスを参照してください。

このSQL文は、物理データベース接続が新しく作成されるたびに実行されます。『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』のエディションベースの再定義に関する項を参照してください。

Oracleパラメータの構成

WebLogic Serverには、Oracleドライバの使用時にデータ・ソースのパフォーマンスを向上できる、いくつかの属性が用意されています。詳細は、「Oracleドライバおよびデータベースの詳細な構成」を参照してください。

ONSクライアントの構成

ONSクライアントを構成して、汎用データ・ソースをAGLデータ・ソースに変更します。構成情報と追加の環境要件の詳細は、「Active GridLinkデータ・ソースの使用方法」を参照してください。

汎用データ・ソース接続プールのチューニング

WebLogic Serverドメイン内のJDBCデータ・ソースで、接続プールの属性を適切に構成すると、アプリケーションとシステムのパフォーマンスを向上できます。詳細は、「データ・ソース接続プールのチューニング」を参照してください。

Oracle RACの停止に対する汎用データ・ソースの処理

汎用データ・ソースをOracle RACで使用するには、いくつかの制限事項があります。これらの制限事項によって、トランザクション処理、監視、RACの停止に対する正常な処理が複雑になっています。


注意:

Oracle RACデータベースでは、MDSまたはAGLを使用することをお薦めします。「Active GridLinkデータ・ソースの使用方法」または「Oracle RACでのマルチ・データ・ソースの使用」を参照してください。

次の制限事項は、WebLogic Serverインスタンスが、プール内の接続に関連付けられたRACインスタンスを認識しないために発生するものです。

  • 汎用データ・ソースでは、MDSまたはAGLデータ・ソースが提供するプール内の単一インスタンスを無効化できません。RACインスタンスのいずれかが(計画的に、または計画外で)停止した場合、データ・ソースは停止したインスタンスに対して、プール内のすべての接続を個別に無効化しながらテストします。オーバーヘッドやアプリケーションの遅延が増大するだけでなく、プールでは複数の失敗が確認され、プール全体が無効化されることになります。プールが無効化されることを回避するには、「フラッシュされるまでのテストの失敗数」の値を0に設定します。WebLogic Server管理コンソールの「JDBCデータ・ソース: 構成: 接続プール」ページ、またはOracle WebLogic Server MBeanリファレンスJDBCConnectionPoolParamsBeanに関する項を参照してください。

  • この構成には、JTAまたはグローバル・トランザクションは使用できません。WebLogic ServerはRACインスタンスを認識しないので、トランザクション・アフィニティを保証できません。トランザクションが複数のサーバーにまたがる場合や、トランザクションを完了させるのに別の接続が使用されるような失敗が発生した場合、これは問題になります。トランザクションを完了させるために必要な追加の接続が同じRACインスタンス内に存在しないために、トランザクション処理が失敗する可能性があります。

  • RACインスタンスに基づいて接続を監視することはできません。