3 データベース接続の構成
- WebLogic ServerでのJDBCドライバの使用方法
WebLogic Serverは、様々なデータベースへのアクセスを提供するためにJDBCドライバを使用します。WebLogic ServerにはデフォルトのJDBCドライバが付属していますが、サード・パーティのJDBCドライバも使用できます。 - JDBCデータ・ソースの構成
WebLogic Serverでデータベース接続を構成するには、JDBCデータ・ソースをWebLogicドメインに追加します。データ・ソースを構成するには、データ・ソースのタイプの選択、データ・ソースの作成、接続プールおよびOracleデータベース・パラメータの構成など、いくつかのステップが必要です。
WebLogic ServerでのJDBCドライバの使用方法
- JDBCドライバの種類
データ・ソースの作成時に、WebLogic Server管理コンソールに一覧表示されるJDBCドライバには、WebLogic Serverでの使用が保証されていないものもあります。JDBCドライバの一覧は、多数の使用可能なデータベース管理システムへの接続を円滑に作成するための利便性を目的として示されます。 - JDBCドライバのサポート
WebLogic Serverでは、JDBC対応ドライバを使用した、任意のデータベースへのアプリケーション・データ・アクセスがサポートされます。 - WebLogic ServerとともにインストールされるJDBCドライバ
Oracle JDBC Thinドライバ19.3は、Oracle WebLogic Server 12.2.1.4とともにインストールされます。WebLogic Serverとともに、Oracle Thinドライバに加え、mySQL Connector/J 8.0 (mysql-connector-java-commercial-8.0.14-bin.jar
) JDBCドライバ、WebLogicブランドのDataDirectドライバもインストールされます。 - 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ドライバのアップグレードおよび使用について説明します。 - WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバの追加
WebLogic Serverにインストールされていないサード・パーティのJDBCドライバを使用するには、DOMAIN_HOME/lib
ディレクトリに追加します。 - Oracle Thinドライバのグローバリゼーション・サポート
Oracle Thinドライバのグローバリゼーション・サポートのために、オラクル社からorai18n.jar
ファイルが提供されています。 - デバッグ・モードでのOracle Thinドライバの使用方法
ORACLE_HOME
\oracle_common\modules\oracle.jdbc
フォルダには、ojdbc8_g.jar
(JDK8用)ファイルがあります。これは、デバッグおよび追跡をサポートするクラスを備えたOracle Thinドライバのバージョンです。Oracle Thinドライバをデバッグ・モードで使用するには、CLASSPATH
の先頭に、これらのファイルへのパスを追加します。
親トピック: データベース接続の構成
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トランザクション・コール(
setAutoCommit()
およびsetTransactionIsolation()
など)を実装する必要があります。 -
SerializableまたはRemoteインタフェースを実装しない場合、ドライバはRMIクライアント・アプリケーションにオブジェクトを渡すことができません。
-
コンテナ管理の永続性(CMP)
-
行セット
-
JMS/JDBC永続性、およびWebLogic JDBCストアの使用
-
JDBCセッション永続性
-
RDBMSセキュリティ・プロバイダ
-
(シングルトン・サービスおよびサーバーの移行用)データベース・リース
-
JTAロギング・ラスト・リソース(LLR)最適化
WebLogic ServerとともにインストールされるJDBCドライバ
Oracle JDBC Thinドライバ19.3は、Oracle WebLogic Server 12.2.1.4とともにインストールされます。WebLogic Serverとともに、Oracle Thinドライバに加え、mySQL Connector/J 8.0 (mysql-connector-java-commercial-8.0.14-bin.jar
) JDBCドライバ、WebLogicブランドのDataDirectドライバもインストールされます。
JDK8の場合、Oracleドライバ・ファイルの名前は、ojdbc8.jar
、ojdbc8_g.jar
およびojdbc8dms.jar
です。
ノート:
『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ドライバへのアップグレード
- Oracle Databaseソフトウェア・ダウンロード・ページにアクセスします。
現在、ダウンロード・ページでは、14個のJARファイルすべてが1つのダウンロード・ファイルで提供されいます。
ノート:
WebLogic Serverの実行に使用されるCLASSPATH
の先頭にこれらのJARファイルを追加する必要があります。これらのJARファイルは、12cまたは19c Oracleデータベース・クライアントJARファイルの前に配置します。 - 必ず、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
- WebLogic Serverを使用している場合は、
-
必要な追加ドライバを選択してインストールする必要があります。
表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.jar
はCLASSPATH
に含めないでください。 - WebLogicインストールに含まれるドライバjarをアップグレードする場合:
- Oracle Database JDBCドライバおよびコンパニオンJarのダウンロードのページから、必要なjarをダウンロードします。
- 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ドライバの追加
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
abort
やDB2 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ドライバのグローバリゼーション・サポート
orai18n.jar
ファイルを提供しており、このファイルがnls_charset.zip
に取って代わります。
Oracleのオブジェクト型およびコレクションにおいて、CHAR
およびNCHAR
型のデータに、US7ASCII
、WE8DEC
、WE8ISO8859P1
およびUTF8
以外の文字セットを使用する場合、CLASSPATH
にorai18n.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
に追加する必要があります。
JDBCデータ・ソースの構成
- JDBCデータ・ソースの作成
WebLogic JDBCデータ・ソースにより、データベースへのアクセスおよびデータベース接続管理が可能になります。 - 接続プール機能の構成
各JDBCデータ・ソースは、そのデータ・ソースのデプロイ時またはサーバーの起動時に作成されるJDBC接続のプールを1つ保持します。アプリケーションは、プールからの接続を使用して、その接続を使用後にプールに返します。接続のプーリングにより、アプリケーション用のデータベース接続を作成するという負担のかかるタスクを排除して、パフォーマンスを向上できます。 - 詳細な接続プロパティ
致命的なエラー・コードやエディションベースの再定義(EBR)のような高度な接続プロパティを設定できます。データ・ソースと通信するデータベース・サーバーに接続できなくなったことを示す、致命的なエラー・コードを定義します。EBRを使用すると、アプリケーションの使用中にそのデータベース・コンポーネントをアップグレードでき、停止時間を最小化あるいはなくすことができます。 - Oracleパラメータの構成
WebLogic Serverには、Oracleドライバの使用時にデータ・ソースのパフォーマンスを改善するいくつかの属性が用意されています。 - ONSクライアント・パラメータの構成
「ONSクライアント構成」を使用すると、データ・ソースをOracle FANイベントにサブスクライブして、処理できるようになります。 - 汎用データ・ソース接続プールのチューニング
WebLogic ServerドメインのJDBCデータ・ソースで接続プール属性を適切に構成することで、アプリケーションおよびシステムのパフォーマンスを改善できます。 - Oracle RACの停止に対する汎用データ・ソースの処理
汎用データ・ソースをOracle RACで使用することは可能ですが、いくつかの制限があります。これらの制限事項によって、トランザクション処理、監視、RACの停止に対する正常な処理が複雑になっています。 - ドライバ・レベル・フェイルオーバーの汎用データ・ソースの処理
いくつかのデータベース・ドライバでは、URLで複数のデータベース・インスタンスを定義して、あるデータベースから次のデータベースにフェイルオーバーを行う機能がサポートされます。ドライバ・レベル・フェイルオーバーで汎用データ・ソースを使用することもできますが、いくつかの制限があります。これらの制限によって、データベース・インスタンスの停止に対するトランザクション処理、モニタリングおよび正常な処理が複雑化します。
親トピック: データベース接続の構成
JDBCデータ・ソースの作成
WebLogic 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とデータベース接続によるデータの処理方法を決定するオプションが含まれます。 - トランザクション・オプションの構成
WebLogic Server管理コンソールを使用してJDBCデータ・ソースを構成すると、WebLogic Serverにより、JDBCドライバの種類に応じて特定のトランザクション・オプションが自動的に選択されます。WebLogic JDBCデータ・ソースでは、XA、非XA、およびグローバル・トランザクション・オプションがサポートされます。 - 接続プロパティの構成
「接続プロパティ」を使用して、データ・ソースとDBMSとの間の接続を構成できます。一般的な属性には、データベース名、ホスト名、ポート番号、ユーザー名とパスワードがあげられます。 - テスト・オプションの構成
「データベース接続のテスト」を使用すると、表名またはSQL文を使用してデータ・ソース構成をファイナライズする前に、データベース接続をテストできます。 - JDBCデータ・ソースのターゲット指定
新しいJDBCデータ・ソースのデプロイ先として1つ以上のターゲットを選択できます。ターゲットを選択していない場合でもデータ・ソースは作成されますが、デプロイされません。そのデータ・ソースは、接続を取得する前にデプロイする必要があります。
親トピック: JDBCデータ・ソースの構成
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の新機能』のサポート対象の構成に関する項を参照してください。
親トピック: JDBCデータ・ソースの作成
トランザクション・オプションの構成
WebLogic Server管理コンソールを使用してJDBCデータ・ソースを構成すると、WebLogic Serverにより、JDBCドライバの種類に応じて特定のトランザクション・オプションが自動的に選択されます。WebLogic JDBCデータ・ソースでは、XA、非XA、およびグローバル・トランザクション・オプションがサポートされます。
データ・ソースをサポートするようにトランザクションを構成する方法の詳細は、「JDBCデータ・ソース・トランザクション・オプション」を参照してください
親トピック: 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管理者および開発者ガイド』の接続文字列を参照してください。
親トピック: JDBCデータ・ソースの作成
テスト・オプションの構成
「データベース接続のテスト」を使用すると、データ・ソース構成をファイナライズする前に、表名またはSQL文を使用してデータベース接続をテストできます。
必要に応じて、Properties
属性とSystem Properties
属性を使用すると、追加の構成情報をテストできます。
親トピック: JDBCデータ・ソースの作成
JDBCデータ・ソースのターゲット指定
新しいJDBCデータ・ソースのデプロイ先に、1つ以上のターゲットを選択します。ターゲットを選択していない場合でもデータ・ソースは作成されますが、デプロイされません。そのデータ・ソースは、接続を取得する前にデプロイする必要があります。
詳細は、Target JDBC data sources (Oracle WebLogic Server管理コンソール・オンライン・ヘルプ)およびWebLogic ServerでのJDBCドライバの使用方法を参照してください。
親トピック: JDBCデータ・ソースの作成
接続プール機能の構成
ノート:
非動的なデータ・ソース属性が更新された場合、属性を有効にするには、データ・ソースをアンデプロイして再デプロイする必要があります。属性が動的か非動的かを判断するには、その属性のMBeanリファレンス『Oracle WebLogic Server MBeanリファレンス』を参照してください。属性の定義に「Redeploy or Restart required
」というテキストが含まれている場合、それは非動的な属性です。
JDBCデータ・ソース: 構成: 接続プール(Oracle WebLogic Server管理コンソール・オンライン・ヘルプ)およびJDBCConnectionPoolParamsBean (『Oracle WebLogic Server MBeanリファレンス』)を参照してください。
ノート:
特定のOracle JDBC拡張機能や、その他のドライバで使用できる他の非標準メソッドでは、プールされた接続の将来のユーザーが接続の動作を継承するという方法で、接続の動作を永続的に変更することが可能です。WebLogic Serverは、このようなタイプの呼出しに対して、可能な場合は接続の保護を試行します。
次の各トピックでは、JDBCデータ・ソースの接続プール・オプションについて説明します。これらのオプションの中には、動的に変更可能なものと非動的なものがあります。
親トピック: 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データ・ソースのシステム・プロパティ値でサポートされる変数
変数 | 値の説明 |
---|---|
|
|
|
|
|
Javaシステム・プロパティ |
|
システム・プロパティ |
|
JDBCディスクリプタによるデータ・ソース名。パーティション名は含みません。 |
|
パーティション名またはDOMAIN |
|
WebLogic Serverサーバー・リスニング・ポート |
|
WebLogic ServerサーバーSSLリスニング・ポート |
|
WebLogic Serverサーバー名 |
|
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)を使用すると、アプリケーションの使用中にそのデータベース・コンポーネントをアップグレードでき、停止時間を最小化あるいは排除することができます。これにより、データのアップグレード前とアップグレード後のビューが同時に存在できるため、ホット・アップグレード機能が実現します。その後、特定のセッションに使用するビューを指定できます。
参照:
-
Oracle Database開発ガイドのエディションベースの再定義の使用
-
ホワイト・ペーパー『エディションベースの再定義』(
http://www.oracle.com/technetwork/database/features/availability/edition-based-redefinition-1-133045.pdf
)
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ドライバおよびデータベースの詳細な構成を参照してください。
親トピック: JDBCデータ・ソースの構成
ONSクライアント・パラメータの構成
ONSノード・リストを構成する場合、値を指定せず、自動ONSによるONS構成の実行を許可することをお薦めします。ただし、Oracleウォレットおよびパスワードを指定する必要がある場合や、ONSトポロジを明示的に指定する場合など、一定の場合には明示的にONS構成を設定する必要があります。
親トピック: JDBCデータ・ソースの構成
汎用データ・ソース接続プールのチューニング
詳細は、「データ・ソース接続プールのチューニング」を参照してください
親トピック: JDBCデータ・ソースの構成
Oracle 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インスタンスに基づいて接続を監視することはできません。
親トピック: JDBCデータ・ソースの構成
ドライバ・レベル・フェイルオーバーの汎用データ・ソースの処理
次の制限事項は、WebLogic Serverインスタンスが、プール内の接続に関連付けられたデータベース・インスタンスを認識しないために発生するものです。
-
汎用データ・ソースでは、マルチ・データ・ソースが提供するプール内の単一インスタンスを無効化できません。データベース・インスタンスのいずれかが(計画的に、または計画外で)停止した場合、データ・ソースは停止したインスタンスに対して、プール内のすべての接続を個別に無効化しながらテストします。オーバーヘッドやアプリケーションの遅延が増大するだけでなく、プールでは複数の失敗が確認され、プール全体が無効化されることになります。プールが無効化されることを回避するには、
「フラッシュされるまでのテストの失敗数」の値を0
に設定します。詳細は、JDBCデータ・ソース: 構成: 接続プール(Oracle WebLogic Server管理コンソール・オンライン・ヘルプ)およびJDBCConnectionPoolParamsBean (『Oracle WebLogic Server MBeanリファレンス』)を参照してください。
-
この構成には、JTAまたはグローバル・トランザクションは使用できません。WebLogic Serverはデータベース・インスタンスを認識しないので、トランザクション・アフィニティを保証できません。トランザクションが複数のサーバーにまたがる場合や、トランザクションを完了させるのに別の接続が使用されるような失敗が発生した場合、これは問題になります。トランザクションを完了させるために必要な追加の接続が同じデータベース・インスタンス内に存在しないために、トランザクション処理が失敗する可能性があります。
-
データベース・インスタンスに基づいて接続を監視することはできません。
親トピック: JDBCデータ・ソースの構成