3 データベース接続の構成

WebLogic Serverでは、WebLogicドメインの構成またはエンタープライズ・アプリケーション内のJDBCデータ・ソースを使用して、データベース接続を構成します。

WebLogic ServerでのJDBCドライバの使用方法

WebLogic Serverは、様々なデータベースへのアクセスを提供するためにJDBCドライバを使用します。WebLogic ServerにはデフォルトのJDBCドライバが付属していますが、サード・パーティのJDBCドライバも使用できます。

JDBCドライバの種類

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

JDBCドライバを使用してデータ・ソースにデータベース接続を作成するには、データ・ソースをデプロイするサーバーごとにJDBCドライバをインストールする必要があります。WebLogic Server管理コンソールに一覧されるドライバは、データ・ソースの構成に役立つ既知の必須構成オプションとともに示されます。この一覧には、インストールされていないJDBCドライバも表示されます。ドライバのインストールには、システムのPathやClasspathなどの環境変数の設定が含まれることがあります。「WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバの追加」を参照してください

JDBCドライバが更新されると、構成要件が変わる可能性があります。WebLogic Server管理コンソールは、WebLogic Serverソフトウェアがリリースされた時点での既知の構成要件を使用します。JDBCドライバの構成オプションが変更されているときには、その構成オプションの手動でのオーバーライドが必要になる場合があります。その場合、データ・ソースの作成時またはデータ・ソースの作成後にプロパティのページでオプションをオーバーライドします。

WebLogic Serverには、次のJDBCドライバが用意されています:

  • Oracle Thinドライバ
    • Oracle ThinドライバXA
    • Oracle Thinドライバ非XA
    次の表に、WebLogic Server管理コンソールに表示される9個のOracle Thinドライバと、ユーザーが指定する入力から生成されるURLフォーマットのサンプルおよび構成されるドライバのクラス名を示します:
    Oracleドライバ URLフォーマット 説明 ドライバ・クラス名
    JDBCリプレイ・ドライバ用のOracleドライバ(Thin XA)、バージョン: 任意 jdbc:oracle:thin:@hostname:port/service データベースはサービスとして使用されます。これは、汎用データ・ソースのデフォルトで最も一般的なフォーマットです。サービスは、汎用およびマルチ・データ・ソースの単一インスタンスで使用できます。 oracle.jdbc.replay.OracleXADataSourceImpl
    インスタンス接続用のOracleドライバ(Thin XA)、バージョン: 任意 jdbc:oracle:thin:@hostname:port:SID データベースはSIDとして使用されており、SIDの使用は非推奨です。この形式では、SIDのかわりにサービス名を使用します。 oracle.jdbc.xa.client.OracleXADataSource
    RACサービス・インスタンス接続用のOracleドライバ(Thin XA)、バージョン: 任意 jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=hostname))) (CONNECT_DATA=(SERVICE_NAME=service)(INSTANCE_NAME=instance))) このフォーマットは、サービスが複数のインスタンスで使用可能で、URLを汎用およびマルチ・データ・ソースの単一インスタンスにマップする必要がある場合に使用します。インスタンス名を指定できるように、長い形式のURLが生成されます。 oracle.jdbc.xa.client.OracleXADataSource
    サービス接続用のOracleドライバ(Thin XA)、バージョン: 任意 jdbc:oracle:thin:@//hostname:port/service データベースはサービスとして使用されます。これは、汎用データ・ソースのデフォルトで最も一般的なフォーマットです。サービスは、汎用およびマルチ・データ・ソースの単一インスタンスで使用できます。 oracle.jdbc.xa.client.OracleXADataSource
    JDBCリプレイ・ドライバ用のOracleドライバ(Thin)、バージョン: 任意 jdbc:oracle:thin:@//hostname:port/service データベースはサービスとして使用されます。これは、汎用データ・ソースのデフォルトで最も一般的なフォーマットです。サービスは、汎用およびマルチ・データ・ソースの単一インスタンスで使用できます。 oracle.jdbc.replay.OracleDataSourceImpl
    インスタンス接続用のOracleドライバ(Thin)、バージョン: 任意 jdbc:oracle:thin:@hostname:port:SID データベースはSIDとして使用されており、SIDの使用は非推奨です。この形式では、SIDのかわりにサービス名を使用します。 oracle.jdbc.OracleDriver
    サービス接続用のOracleドライバ(Thin)、バージョン: 任意 jdbc:oracle:thin:@//hostname:port/service データベースはサービスとして使用されます。これは、汎用データ・ソースのデフォルトで最も一般的なフォーマットです。サービスは、汎用およびマルチ・データ・ソースの単一インスタンスで使用できます。 oracle.jdbc.OracleDriver
    サービス・インスタンス接続用のOracleドライバ(Thin)、バージョン: 任意 jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=port))) (CONNECT_DATA=(SERVICE_NAME=service)(INSTANCE_NAME=instance)) このフォーマットは、サービスが複数のインスタンスで使用可能で、URLを汎用およびマルチ・データ・ソースの単一インスタンスにマップする必要がある場合に使用します。インスタンス名を指定できるように、長い形式のURLが生成されます。 oracle.jdbc.OracleDriver
    プールされたインスタンス接続用のOracleドライバ(Thin)、バージョン: 任意 jdbc:oracle:thin:@hostname:port:SID データベースはSIDとして使用されます。この形式を使用してプールされたデータ・ソースを取得します。これは、よく使用される形式ではありません。 oracle.jdbc.pool.OracleDataSource
  • MySQL (非XA)

  • サード・パーティのJDBCドライバ

    詳細は、WebLogic ServerでのJDBCドライバの使用方法を参照してください。

  • WebLogicブランドDataDirectドライバ: これらのドライバは、次のデータベース管理システムで使用できます:

    • DB2

    • Informix

    • Microsoft SQL Server

    • Sybase

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

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

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

JDBCドライバのサポート

WebLogic Serverでは、JDBC対応ドライバ-を使用した、任意のデータベースへのアプリケーション・データ・アクセスがサポートされます。

JDBC準拠のドライバは、次の要件を満たす必要があります。
  • ドライバはスレッドセーフであることが必要です。

  • トランザクションをサポートする環境でドライバを使用する場合は、標準のJDBCトランザクション・コール(setAutoCommit()およびsetTransactionIsolation()など)を実装する必要があります。

  • SerializableまたはRemoteインタフェースを実装しない場合、ドライバはRMIクライアント・アプリケーションにオブジェクトを渡すことができません。

WebLogic Serverの機能によってデータベースが内部データ記憶に使用される場合は、アプリケーション・データ・アクセスに使用される場合よりもデータベースのサポートが制限されます。次のWebLogic Serverの機能では、内部データ記憶が必要です。
  • コンテナ管理の永続性(CMP)

  • 行セット

  • JMS/JDBC永続性、およびWebLogic JDBCストアの使用

  • JDBCセッション永続性

  • RDBMSセキュリティ・プロバイダ

  • (シングルトン・サービスおよびサーバーの移行用)データベース・リース

  • JTAロギング・ラスト・リソース(LLR)最適化

WebLogic ServerとともにインストールされるJDBCドライバ

Oracle JDBC Thinドライバ19.3は、Oracle WebLogic Server14.1.1.0.0とともにインストールされます。WebLogic Serverとともに、Oracle Thinドライバに加え、mySQL Connector/J 8.0 (mysql-connector-java-commercial-8.0.14-bin.jar) JDBCドライバ、WebLogicブランドのDataDirectドライバもインストールされます。

ドライバ・ファイルの名前は、ojdbc8.jarojdbc8_g.jarおよびojdbc8dms.jarです(JDK8およびJDK11の場合)。

ノート:

『Oracle WebLogic Server JDBCアプリケーションの開発』WebLogicブランドDataDirectドライバの使用を参照してください。

これらのドライバは、$ORACLE_HOME/oracle_common/modulesのサブディレクトリにインストールされます。weblogic.jarのマニフェストには、このファイルがリストされており、そのためこのファイルはweblogic.jarのロード時(サーバーの起動時)にロードされます。したがって、このJDBCドライバをCLASSPATHに追加する必要はありません。WebLogic ServerとともにインストールされないサードパーティJDBCドライバを使用する予定がある場合、それらのドライバをインストールする必要があります。インストール作業には、ドライバ・ファイルへのパスでCLASSPATHを更新することが含まれます。また、データベース・クライアント・ファイルへのパスでPATHを更新することも含まれる場合があります。「Oracle WebLogic Serverの新機能」 「サポートされている構成」を参照してください。

ノート:

WebLogic Serverでは、WebLogic ServerサンプルとともにDerby DBMSのバージョンがWL_HOME\common\derbyディレクトリにインストールされます。Derbyは、すべてJavaで作成されたDBMS製品で、WebLogic ServerサンプルのデモンストレーションをサポートするためにWebLogic Serverディストリビューションに含まれています。Derbyの詳細は、http://db.apache.org/derbyを参照してください。

WebLogic Serverでの最新Oracle 19c JDBCドライバのアップグレードと使用

Oracle Database 19.3 JDBCドライバはWebLogic Server 12.2.1.4および14.1.1.0にデフォルトで含まれています。このトピックでは、WebLogic Serverでの最新バージョンのOracle Database 19c JDBCドライバのアップグレードおよび使用について説明します。

Oracle 19c JDBCドライバへのアップグレード

  1. Oracle Databaseソフトウェア・ダウンロード・ページにアクセスします。

    現在、ダウンロード・ページでは、14個のJARファイルすべてが1つのダウンロード・ファイルで提供されいます。

    ノート:

    WebLogic Serverの実行に使用されるCLASSPATHの先頭にこれらのJARファイルを追加する必要があります。これらのJARファイルは、12cまたは19c Oracleデータベース・クライアントJARファイルの前に配置します。
  2. 必ず、JARファイル名を確認し、必要なojdbcファイルを選択します。
    • WebLogic Serverを使用している場合は、non-dms JARファイルを選択します。
      • ojdbc8-full/ojdbc8.jar
    • Fusion Middlewareを使用している場合は、*dms.jarファイルを選択します。
      • ojdbc8-full/ojdbc8dms.jar

    ノート:

    ドライバ・レベルのロギングを有効にする場合は、*_g.jarファイルを選択します。
    • ojdbc8-full/ojdbc8_g.jar
    • ojdbc8-full/ojdbc8dms_g.jar
  3. 必要な追加ドライバを選択してインストールする必要があります。

    表3-1 追加の19c JDBCドライバ・ファイル

    ファイル 説明
    ojdbc8-full/simplefan.jar 高速アプリケーション通知
    ojdbc8-full/ucp.jar ユニバーサル接続プール
    ojdbc8-full/ons.jar Oracle Network Serverクライアント
    ojdbc8-full/orai18n.jar 国際化のサポート
    ojdbc8-full/oraclepki.jar Oracleウォレットのサポート
    ojdbc8-full/osdt_cert.jar Oracleウォレットのサポート
    ojdbc8-full/osdt_core.jar Oracleウォレットのサポート
    ojdbc8-full/xdb6.jar SQL XMLのサポート
    ojdbc8-full/xmlparserv2_sans_jaxp_services.jar SQL XMLのサポート

    ノート:

    xmlparserv2.jarファイルは、アーカイブ・ダウンロードにあります。xmlparserv2.jarCLASSPATHに含めないでください。
  4. WebLogicインストールに含まれるドライバjarをアップグレードする場合:
    1. Oracle Database JDBCドライバおよびコンパニオンJarのダウンロードのページから、必要なjarをダウンロードします。
    2. WebLogic Server CLASSPATHの更新の説明に従って、CLASSPATHおよびPRE_CLASSPATHを設定します。

WebLogic Server CLASSPATHの更新

Oracle 19c JDBCドライバにアップグレードするには、WebLogic Server環境のCLASSPATHを更新する必要があります。startWebLogic.shを使用している場合は、PRE_CLASSPATHを設定する必要があります。

次のコード・サンプルに、WebLogic環境のPRE_CLASSPATHを更新する単純なシェル・スクリプトの概要を示します。ORACLE_HOMEには、ファイルが解凍されたディレクトリを正しく設定してください。

#!/bin/sh
# source this file in to add the new 19.x jar files at the beginning of the CLASSPATH
ORACLE19="full pathname to unpacked jar file directory"
PRE_CLASSPATH=
case "`uname`" in
*CYGWIN*)
SEP=";"
;;
Windows_NT)
SEP=";"
;;
*)
SEP=":"
;;
esac
dir=${ORACLE19:?}
# We need one of the following
#ojdbc8-full/ojdbc8.jar
#ojdbc8-full/lib/ojdbc8_g.jar
#ojdbc8-full/lib/ojdbc8dms.jar
#ojdbc8-full/lib/ojdbc8dms_g.jar

if [ "$1" = "" ]
then
ojdbc=ojdbc8.jar
else
ojdbc="$1"
fi

case "$ojdbc" in
ojdbc8.jar)
ojdbc=ojdbc8-full/$ojdbc
;;
ojdbc8_g.jar|ojdbc8dms.jar|ojdbc8dms_g.jar)
ojdbc=ojdbc8-diag/$ojdbc
;;
*)
echo "Invalid argument - must be ojdbc8.jar|ojdbc8_g.jar|ojdbc8dms.jar|ojdbc8dms_g.jar"
exit 1
;;
esac

PRE_CLASSPATH="${dir}/${ojdbc}${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/simplefan.jar${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/ucp.jar${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/ons.jar${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/orai18n.jar${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/oraclepki.jar${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/osdt_cert.ja ${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/osdt_core.jar${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/xdb6.jar${SEP}$PRE_CLASSPATH"
PRE_CLASSPATH="${dir}/ojdbc8-full/xmlparserv2_sans_jaxp_services.jar${SEP}$PRE_CLASSPATH"
export PRE_CLASSPATH
# don't use xmlparserv2.jar - it conflicts with WLS classes
 

たとえば、このスクリプトにsetdb19_jars.shという名前を付けて環境に保存します。次に、このスクリプトをojdbc8.jarを使用して実行します:


. ./setdb19_jars.sh ojdbc8.jar       # For WLS
. ./setdb19_jars.sh ojdbc8dms.jar    # For FMW

WebLogic Serverの起動に使用される他のスクリプトのために、明示的なエクスポートPRE_CLASSPATH="literal path string" startWebLogic.shに含め、CLASSPATH="$PRE_CLASSPATH:$CLASSPATH"を設定することもできます。

WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバの追加

WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバを使用するには、それらをDOMAIN_HOME/libディレクトリに追加します。DOMAIN_HOMEは、WebLogic Serverドメインが構成されているディレクトリを表します。デフォルトのパスは、ORACLE_HOME/user_projects/domainsです。

詳細は、Oracle WebLogic Serverアプリケーションの開発で、ドメイン/libディレクトリへのJARの追加 を参照してください。

ノート:

以前のリリースでは、新しいJDBCドライバを追加する場合、または置き換えるJARの名前が元のJARと異なるJDBCドライバを更新する場合、WebLogic Serverのクラスパスを更新してJDBCドライバ・クラスの場所を含める必要がありました。これは必要なくなりました。

DOMAIN_HOME/libのサード・パーティJARファイルの使用

DOMAIN_HOME/libのサード・パーティJARファイルの使用は、WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバでのみサポートされます。WebLogic Serverとともにインストールされるドライバの詳細は、「WebLogic ServerとともにインストールされるJDBCドライバ」を参照してください。

DOMAIN_HOME/libディレクトリのサード・パーティJARファイルを使用する場合、次の点に注意してください。

  • 作成されるクラス・ローダーは、WebLogic Serverのシステム・クラスパス・クラス・ローダーの子です。

  • このディレクトリのJARに含まれるクラスは、サーバーのJava EEアプリケーション(EARファイルなど)にのみ認識されます。

  • WebLogic Server管理コンソールおよびWLSTオンラインを使用して、JARファイルを構成および管理できます。(データ・ソースはデプロイされないため、WLSTオフラインを使用することも可能です。)

  • これらのJARファイルは、スタンドアロン・クライアント(t3 RMIクライアントなど)やスタンドアロン・アプリケーション(java utils.Schemaなど)から実行すると動作しません。

  • 複数のドメイン・ディレクトリ(共有ファイル・システムのない複数のマシン)が関連する場合、各ドメイン・ディレクトリの/libにJARファイルをインストールする必要があります。

  • WebLogic Serverでは、サード・パーティ・ドライバで呼び出されるメソッド(TimesTen abortDB2 setDB2ClientUserなど)を使用できます。

ノート:

これらのJARファイルでサポートされるWebLogic Serverの機能の詳細は、『Oracle WebLogic Serverの新機能』データベースの相互運用性に関する項、および特定のデータベース・ドライバとDBバージョンの認証情報については、適切なバージョンの「Oracle Fusion Middlewareのサポートされるシステム構成」マトリックス・ドキュメントを参照してください。

データ・ソースのサポート

/libにインストールされたサード・パーティJARファイルは、次のものと組み合せて使用できます。

  • WebLogic Serverシステム・リソースでサポートされるすべてのデータ・ソース・タイプ(汎用マルチ・データ・ソースActive GridLinkなど)。UCP JARはサード・パーティではないため、ユニバーサル接続プール・データ・ソースは該当しません。

  • EARまたはWARでパッケージ化されたデータ・ソース。

  • EARまたはWARで定義されたJava EE 6データ・ソース定義。

JDBCメソッドではありませんが、/libのサード・パーティJARファイルの使用は、マルチ・データ・ソースのフェイルオーバー、接続、リプレイおよび収集のような、WebLogic Serverデータ・ソース・コールバックに適用されます。

例3-1 /libのサード・パーティJARファイルの使用の例

次の例は、getversion.warというスタンドアロンWARファイルに含まれるファイルを示しています。Derby JARファイルは、WEB-INF/libまたはDOMAIN_HOME/lib (あるいはその両方)にあります。クラス・ファイルは、コンパイルされてWEB-INF/classes/demo/GetVersion.classにインストールされます。

<web-app>
  <welcome-file-list>
    <welcome-file>welcome.jsp</welcome-file>
  </welcome-file-list>
  <display-name>GetVersion</display-name>
  <servlet>
    <description></description>
    <display-name>GetVersion</display-name>
    <servlet-name>GetVersion</servlet-name>
    <servlet-class>
       demo.GetVersion
    </servlet-class>
  </servlet>
<!-- Data source description can go in the web.xml descriptor or as an annotation in the java code - see below
  <data-source>
    <name>java:global/DSD</name>
    <class-name>org.apache.derby.jdbc.ClientDataSource</class-name>
    <port-number>1527</port-number>
    <server-name>localhost</server-name>
    <database-name>examples</database-name>
    <transactional>false</transactional>
  </data-source>
-->
</web-app>
 
WEB-INF/weblogic.xml
 
<weblogic-web-app>
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
</weblogic-web-app>
 
Java file
 
package demo;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.annotation.sql.DataSourceDefinition;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
 
@DataSourceDefinition(name="java:global/DSD",
className="org.apache.derby.jdbc.ClientDataSource",
portNumber=1527,
serverName="localhost",
databaseName="examples",
transactional=false
)
@WebServlet(urlPatterns = "/GetVersion")
public class GetVersion extends javax.servlet.http.HttpServlet
  implements javax.servlet.Servlet {
  @Resource(lookup = "java:global/DSD")
  private DataSource ds;
 
  public GetVersion() {
    super();
  }
 
  protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
  }
 
  protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
 
    PrintWriter writer = response.getWriter();
    writer.println("<html>");
    writer.println("<head><title>GetVersion</title></head>");
    writer.println("<body>" + doit() +"</body>");
    writer.println("</html>");
    writer.close();
  }
 
  private String doit() {
    String ret = "FAILED";
    Connection conn = null;
    try {
      conn = ds.getConnection();
      ret = "Connection obtained with version= " +
        conn.getMetaData().getDriverVersion();
    } catch(Exception e) {
      e.printStackTrace();
    } finally {
      try {
        if (conn != null)
          conn.close();
      } catch (Exception ignore) {}
    }
    return ret;
  }
}

Oracle Thinドライバのグローバリゼーション・サポート

Oracle Thinドライバでのグローバリゼーション・サポートのために、Oracleではorai18n.jarファイルを提供しており、このファイルがnls_charset.zipに取って代わります。

Oracleのオブジェクト型およびコレクションにおいて、CHARおよびNCHAR型のデータに、US7ASCIIWE8DECWE8ISO8859P1およびUTF8以外の文字セットを使用する場合、CLASSPATHorai18n.jarおよびorai18n-mapping.jarを含める必要があります。

orai18n.jarおよびorai18n-mapping.jarは、WebLogic Serverインストールにより、ORACLE_HOME\oracle_common\modules\oracle.nlsrtl_12.1.0フォルダに格納されます。これらのファイルは、weblogic.jar manifestマニフェスト・ファイルからは参照されないため、使用前にCLASSPATHに追加する必要があります。

デバッグ・モードでのOracle Thinドライバの使用方法

ORACLE_HOME\oracle_common\modules\oracle.jdbcフォルダには、ojdbc8_g.jar(JDK8用)ファイルがあります。これは、デバッグおよび追跡をサポートするクラスを備えたOracle Thinドライバのバージョンです。Oracle Thinドライバをデバッグ・モードで使用するには、CLASSPATHの先頭に、これらのファイルへのパスを追加します。

JDBCデータ・ソースの構成

WebLogic Serverでデータベース接続を構成するには、JDBCデータ・ソースをWebLogicドメインに追加します。データ・ソースを構成するには、データ・ソースのタイプの選択、データ・ソースの作成、接続プールおよびOracleデータベース・パラメータの構成など、いくつかのステップが必要です。

JDBCデータ・ソースの作成

WebLogic JDBCデータ・ソースにより、データベースへのアクセスおよびデータベース接続管理が可能になります。

JDBCデータ・ソースの作成と管理には、次の管理ツールを使用できます。
  • Oracle WebLogic Server管理コンソール: Oracle WebLogic Server管理コンソール・オンライン・ヘルプJDBCデータ・ソースの作成を参照してください。

  • WebLogic Scripting Tool (WLST): 『WebLogic Scripting Toolの理解』WLSTオンライン・サンプル・スクリプトを参照してください。

    例:
    EXAMPLES_HOME\wl_server\examples\src\examples\wlst\online\jdbc_data_source_creation.py

    EXAMPLES_HOMEは、WebLogic Serverサンプル・コードが構成されているディレクトリを表します。

Weblogic Server管理コンソールのデータ・ソース構成は、データ・ソース構成ウィザードを使用して行います。

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

JDBCデータ・ソースのプロパティには、データ・ソースのIDとデータベース接続によるデータの処理方法を決定するオプションが含まれます。

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

データ・ソース・スコープ: データ・ソースのスコープを選択し、スコープを「グローバル」(ドメイン・レベル)または既存のリソース・グループまたはリソース・グループ・テンプレートに設定できます。

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

データベースのタイプ: 接続するデータベースのデータベース管理システム(DBMS)を選択できます。サポート対象のデータベースの詳細は、『Oracle WebLogic Serverの新機能』サポート対象の構成を参照してください。

JDBCドライバ: データベース接続の作成で優先されるJDBCデータベース・ドライバを選択できます。ただし、コンソールでURLをテストする前に、そのURLが適切であることを確認してください。選択するドライバは、データ・ソースのデプロイ先のすべてのサーバーのclasspathに含まれている必要があります。

WebLogic Server管理コンソールに一覧表示されたすべてのJDBCドライバが、WebLogic Serverに付属している(またはclasspathにすでに含まれている)わけではありません。JDBCドライバの種類を参照してください。

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

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

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

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

WebLogic Server管理コンソールを使用してJDBCデータ・ソースを構成すると、WebLogic Serverにより、JDBCドライバの種類に応じて特定のトランザクション・オプションが自動的に選択されます。WebLogic JDBCデータ・ソースでは、XA、非XA、およびグローバル・トランザクション・オプションがサポートされます。

データ・ソースをサポートするようにトランザクションを構成する方法の詳細は、「JDBCデータ・ソース・トランザクション・オプション」を参照してください

接続プロパティの構成

「接続プロパティ」を使用して、データ・ソースとDBMSとの間の接続を構成できます。一般的な属性には、データベース名、ホスト名、ポート番号、ユーザー名とパスワードがあげられます。

ノート:

ホスト名を表すために、単一クライアント・アクセス名(SCAN)アドレスが使用できます。Oracle RAC 11.2以降を使用する場合は、次の点について考慮してください。

  • データ・ソースのOracle RAC REMOTE_LISTENERパラメータをSCANに設定すると、データ・ソース接続URLではSCANアドレスしか使用できなくなります。

  • データ・ソースのOracle RAC REMOTE_LISTENERパラメータをList of Node VIPsに設定すると、データ・ソース接続URLではVIPアドレスのリストしか使用できなくなります。

  • データ・ソースのOracle RAC REMOTE_LISTENERパラメータをMix 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データ・ソースのターゲット指定

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

詳細は、Target JDBC data sources (Oracle WebLogic Server管理コンソール・オンライン・ヘルプ)およびWebLogic ServerでのJDBCドライバの使用方法を参照してください。

接続プール機能の構成

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

ノート:

非動的なデータ・ソース属性が更新された場合、属性を有効にするには、データ・ソースをアンデプロイして再デプロイする必要があります。属性が動的か非動的かを判断するには、その属性のMBeanリファレンス『Oracle WebLogic Server MBeanリファレンス』を参照してください。属性の定義に「Redeploy or Restart required」というテキストが含まれている場合、それは非動的な属性です。

JDBCデータ・ソース: 構成: 接続プール(Oracle WebLogic Server管理コンソール・オンライン・ヘルプ)およびJDBCConnectionPoolParamsBean (『Oracle WebLogic Server MBeanリファレンス』)を参照してください。

ノート:

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

次の各トピックでは、JDBCデータ・ソースの接続プール・オプションについて説明します。これらのオプションの中には、動的に変更可能なものと非動的なものがあります。

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

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

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

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

システム・プロパティ値が設定されている場合、それは暗号化されたプロパティ値をオーバーライドし、次にその値が通常のプロパティ値をオーバーライドします(プロパティ名ごとに1つのプロパティ値のみを持つことができます)。

システム・プロパティ値には、表3-2にリストされた変数の1つを含めることができます。これらの1つ以上の変数がシステム・プロパティに含まれる場合、対応する値で置換されます。値が検出されない場合、置換は実行されません。これらのどの変数もシステム・プロパティで検出されない場合、値は、システム・プロパティ名として扱われます。

表3-2 JDBCデータ・ソースのシステム・プロパティ値でサポートされる変数

変数 値の説明

${pid}

ManagementFactory.getRuntimeMXBean().getName()の前半部分(@まで)

${machine}

ManagementFactory.getRuntimeMXBean().getName()の後半部分

${user.name}

Javaシステム・プロパティuser.name

${os.name}

システム・プロパティos.name

${datasourcename}

JDBCディスクリプタによるデータ・ソース名。パーティション名は含みません。

${partition}

パーティション名またはDOMAIN

${serverport}

WebLogic Serverサーバー・リスニング・ポート

${serversslport}

WebLogic ServerサーバーSSLリスニング・ポート

${servername}

WebLogic Serverサーバー名

${domainname}

WebLogic Serverドメイン名

次の例に、プロパティのサンプル・セットを示します。

<properties>
<property>
  <name>user</name>
  <sys-prop-value>user</sys-prop-value>
</property>
<property>
  <name>v$session.osuser</name>
  <sys-prop-value>${user.name}</sys-prop-value>
</property>
<property>
  <name>v$session.process</name>
  <sys-prop-value>${pid}</sys-prop-value>
</property>
<property>
  <name>v$session.machine</name>
  <sys-prop-value>${machine}</sys-prop-value>
</property>
<property>
  <name>v$session.terminal</name>
  <sys-prop-value>${datasourcename}</sys-prop-value>
</property>
<property>
  <name>v$session.program</name>
  <sys-prop-value>WebLogic ${servername} Partition ${partition}</sys-prop-value>
</property>
</properties>

この例では:

  • userは、-Duser=valueの値に設定されます

  • v$sessionの値は、表3-2の説明どおりに設定されます

    たとえば、myserverで実行されているv$session.programは、WebLogic myserver Partition DOMAINに設定されます

各値には、次の長さ制限があることに注意してください。

  • osuser - 30

  • process - 24

  • machine - 64

  • terminal - 30

  • program - 48

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

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()

詳細な接続プロパティ

致命的なエラー・コードやエディションベースの再定義(EBR)のような高度な接続プロパティを設定できます。データ・ソースと通信するデータベース・サーバーに接続できなくなったことを示す、致命的なエラー・コードを定義します。EBRを使用すると、アプリケーションの使用中にそのデータベース・コンポーネントをアップグレードでき、停止時間を最小化あるいはなくすことができます。

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

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

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管理コンソール・オンライン・ヘルプ致命的エラー・コードの定義を参照してください。

エディションベースの再定義の使用

エディションベースの再定義(EBR)を使用すると、アプリケーションの使用中にそのデータベース・コンポーネントをアップグレードでき、停止時間を最小化あるいは排除することができます。これにより、データのアップグレード前とアップグレード後のビューが同時に存在できるため、ホット・アップグレード機能が実現します。その後、特定のセッションに使用するビューを指定できます。

参照:

JDBC接続でのEBRの使用

JDBC接続でEBRを使用する場合、次の2つのアプローチがあります。

  • データベース・サービスを使用してデータベースに接続し、そのサービスで最初のセッション・エディションが指定された場合、そのサービスの最初のセッション・エディションが接続の最初のセッション・エディションになります。このアプローチは、接続のオーバーヘッドが最小限になるため推奨されます。

    データベース・サービスの作成または変更時に、その最初のセッション・エディションを指定できます。データベース・サービスを作成または変更にするには、srvctl add serviceまたはsrvctl modify serviceコマンドを使用することをお薦めします。サービスのデフォルトの最初のセッション・エディションを指定するには、-editionオプションを使用します。

    別の方法として、DBMS_SERVICE.CREATE_SERVICEまたはDBMS_SERVICE.MODIFY_SERVICEプロシージャを使用してデータベース・サービスを作成または変更し、EDITION属性でサービスのデフォルトの最初のセッション・エディションを指定することもできます。

  • SQL文のALTER SESSION SET EDITIONを使用して、データベースに接続した後にセッション・エディションを変更します。セッション・エディションは、USE権限のある任意のエディションに変更することができます。ただし、エディションを変更すると、場合によってはセッションおよびデータベース・サーバーの状態の相当量を再生成する必要があります。セッションでエディションを変更するときに、DBMS_SESSION.RESET_PACKAGEを使用してこの状態の一部をクリーンアップすることをお薦めします。

エディションベースの再定義を使用する場合、新しいWebLogic Serverの機能は何も必要ありません。

EBRを使用するには、現在の環境が、以前のEDITIONを参照するデータ・ソースを持つ以前のバージョンのアプリケーションと、新しいEDITIONを参照するデータ・ソースを持つ新しいバージョンのアプリケーションで構成されている必要があります。WebLogic Serverアプリケーションの複数のバージョンを参照する場合、本番再デプロイメント機能でWebLogic Serverのバージョニングされたアプリケーションを使用する必要があります。『Oracle WebLogic Serverアプリケーションの開発』「本番再デプロイメント用アプリケーションの開発」を参照してください。Oracle Database EBRとWebLogic Serverのバージョニングされたアプリケーションを組み合せることで、各機能を単独で使用するより全体の機能性が向上し、停止時間なしでアプリケーションをアップグレードできます。

バージョンを切り替えることができるように、最初にバージョニングされたデータベースとバージョニングされたアプリケーションを組み合せて実行する必要があります。WebLogic Serverアプリケーションをバージョニングするには、単純にMANIFEST.MFファイルにWeblogic-Application-Versionプロパティを追加します(これはデプロイメント時に指定することもできます)。

エディションを使用するためのWebLogicデータ・ソースの構成

次のリストでは、Oracle Databaseエディションを使用するためにWebLogicデータ・ソースを構成できる様々な方法について説明します。

  • 単一エディションを使用するパッケージ化されたデータ・ソース - データ・ソースを構成する場合の推奨方法は、すべてが自己包含型となるようにアプリケーションEARまたはWARファイルに格納されたパッケージ化データ・ソース・ディスクリプタを使用することです。これを行うことで、各データ・ソースで同じ名前を使用でき、エディションに基づいて変数名を使用するためにアプリケーションを変更する必要がなくなります。ディスクリプタのデータ・ソースURLは、適切なエディションに関連付けられたデータベース・サービスを参照する必要があります。なんらかの理由でデータベース・サービスのかわりにSIDを使用する場合(現在は非推奨)、別の方法として、データ・ソース・ディスクリプタの初期化SQLパラメータにSQL ALTER SESSION SET EDITION = nameを指定します。このSQL文は、データ・ソース・プールに新しい物理データベース接続が作成されるたびに実行されます。このアプローチでは、データ・ソースがデータベースの単一エディションと、そのエディションを使用するすべての接続を参照していることが前提です。

    パッケージ化されたデータ・ソースを使用する場合、次の制限があることに注意してください。

    • ロギング・ラスト・リソース(LLR)でパッケージ化されたデータ・ソースを使用することはできません。システム・リソースを使用する必要があります。

    • バージョニングされたアプリケーションのglobal-transactions-protocolに対してEmulateTwoPhaseCommitを使用する場合、アプリケーション・スコープのパッケージ化されたデータ・ソースを使用することはできません。グローバル・スコープのデータ・ソースを使用する必要があります。

      したがって、LoggingLastResourceまたはEmulateTwoPhaseCommitを使用する必要がある場合、このアプローチは使用できません。「JDBCアプリケーション・モジュールの制限」を参照してください。

  • 単一エディションを使用するシステム・リソース・データ・ソース - パッケージ化されたデータ・ソースのかわりにシステム・リソースを使用できます。この場合、各データ・ソースは、一意の名前およびJNDI名を持つ必要があります。アプリケーションは、実行時にその名前を柔軟に使用できる必要があります。たとえば、データ・ソースJNDI名をシステム・プロパティとして渡し、JNDIでデータ・ソースをルックアップするコードでその値を使用できます。

    データ・ソースごとに1つのエディションを使用する場合のデメリットは、それがパッケージ化されたものでもシステム・リソースでも、より多くのデータベース接続が必要になることです。単一エディション・アプローチは、古いエディションと新しいエディションの実行期間が比較的短い場合に有効です。多くのデータ・ソースまたは接続(あるいはその両方)を使用するアプリケーションでは、これは実行可能なアプローチではありません。

  • 複数エディションを使用するシステム・リソース・データ・ソース - 代替方法として、複数のエディションを参照するデータ・ソースを使用します。推奨構成では、引き続き単一のエディションに関連付けられたデータベース・サービスを使用します。ただし、接続は、接続の存続期間中に様々なエディションに再度関連付けられます。

  • 予約ごとのエディションの設定による複数エディション - アプリケーションで、接続を取得するたびにデータベース・エディションを設定できます。毎回このコールを行うことに関連して多少のオーバーヘッド(データベース・サーバーへのラウンドトリップとセッションの設定)が発生し、接続が予約される場所では常にアプリケーション・コードを変更する必要があります。JDBCリプレイ・ドライバを使用する場合、この初期化はConnectionInitializationCallbackで実行する必要があります。「接続コールバックの使用方法」を参照してください。

    新しいエディションへの移行が行われる短い期間を対象に最適化するのではなく、通常の使用例を対象に最適化することが重要です。このアプローチでは、必要なエディション上にすべての接続が存在する通常の状況を対象に最適化されません。

  • 接続ラベリングを使用した複数エディション - エディションを接続に関連付け、適切なエディションで接続を予約するよう試みることができます。プロパティで接続にタグ付けする場合の推奨方法は、接続ラベリングを使用することです。次に、アプリケーションは、接続ラベリングに関連付けられた部分を実装する必要があります。

    • 接続が予約される場合、コンテキストで必要なエディションを決定する必要があります。

    • プロパティ(この場合はエディション)が一致しているかどうかを判別する照合メソッドが必要です。

    • SQL ALTER SESSION SET EDITION = nameを使用して接続がまだ照合されていない場合、接続を照合するラベリング初期化メソッドが必要です。

    特に既存の接続のリストを排他的にスキャンして一致を検出する場合、接続ラベリングに関連するオーバーヘッドが発生します。これに対して、通常の使用例では、すべての接続が現在のエディションに一致するため、一致を検出する必要はありません。エディション間でスラッシングが発生し、一致を検出するために(または一致がないことを確認するために)検索時間が長くかかる可能性があるのは、移行時のみです。

Oracleパラメータの構成

WebLogic Serverには、Oracleドライバの使用時にデータ・ソースのパフォーマンスを改善するいくつかの属性が用意されています。

詳細は、Oracleドライバおよびデータベースの詳細な構成を参照してください。

ONSクライアント・パラメータの構成

「ONSクライアント構成」を使用すると、データ・ソースをOracle FANイベントにサブスクライブして、処理できるようになります。

ONSノード・リストを構成する場合、値を指定せず、自動ONSによるONS構成の実行を許可することをお薦めします。ただし、Oracleウォレットおよびパスワードを指定する必要がある場合や、ONSトポロジを明示的に指定する場合など、一定の場合には明示的にONS構成を設定する必要があります。

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

WebLogic ServerドメインのJDBCデータ・ソースで接続プール属性を適切に構成することで、アプリケーションおよびシステムのパフォーマンスを改善できます。

詳細は、「データ・ソース接続プールのチューニング」を参照してください

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

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

ノート:

ドライバ・レベルのフェイルオーバーを使用する汎用データ・ソースのかわりに、マルチ・データ・ソース(MDS)またはActive GridLink (AGL)データ・ソースを使用することをお薦めします。「Active GridLinkデータ・ソースの使用方法」または「Oracle RACでのマルチ・データ・ソースの使用」を参照してください

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

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

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

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

ドライバ・レベル・フェイルオーバーの汎用データ・ソースの処理

いくつかのデータベース・ドライバでは、URLで複数のデータベース・インスタンスを定義して、あるデータベースから次のデータベースにフェイルオーバーを行う機能がサポートされます。ドライバ・レベル・フェイルオーバーで汎用データ・ソースを使用することもできますが、いくつかの制限があります。これらの制限によって、データベース・インスタンスの停止に対するトランザクション処理、モニタリングおよび正常な処理が複雑化します。

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

  • 汎用データ・ソースでは、マルチ・データ・ソースが提供するプール内の単一インスタンスを無効化できません。データベース・インスタンスのいずれかが(計画的に、または計画外で)停止した場合、データ・ソースは停止したインスタンスに対して、プール内のすべての接続を個別に無効化しながらテストします。オーバーヘッドやアプリケーションの遅延が増大するだけでなく、プールでは複数の失敗が確認され、プール全体が無効化されることになります。プールが無効化されることを回避するには、「フラッシュされるまでのテストの失敗数」の値を0に設定します。

    詳細は、JDBCデータ・ソース: 構成: 接続プール(Oracle WebLogic Server管理コンソール・オンライン・ヘルプ)およびJDBCConnectionPoolParamsBean (『Oracle WebLogic Server MBeanリファレンス』)を参照してください。

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

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