この章では、ユニバーサル接続プール(UCP)・データ・ソースの構成方法とモニター方法について説明します。
この章の内容は次のとおりです。
ここでは、ユニバーサル接続プール・データについて説明します。
UCPデータ・ソースは、Oracle Universal Connection Pooling (UCP)を使用してOracle Databaseに接続するユーザー用のオプションとして提供されています。UCPは、Oracle WebLogic Server接続プーリングに対する代替接続プーリング・テクノロジを提供します。
注意:
一般的には、Active GridLinkデータ・ソース、マルチ・データ・ソースまたは汎用データ・ソースと、これらのデータ・ソース実装に含まれるOracle WebLogic Server接続プーリングを使用してOracle Databaseとの接続を確立することをお薦めします。UCPデータ・ソースの実装は、疎結合されており、アプリケーションによる新しいUCP機能の使用をサポートするためにucp.jar
を切り替えることができます。UCPデータ・ソースは、アプリケーション・スコープ環境や、パッケージ化またはスタンドアロン・モジュール環境ではサポートされません。
Oracle WebLogic Serverでは、UCPデータ・ソースの次のサポートが提供されます。
汎用データ・ソース、マルチ・データ・ソースまたはActive GridLinkデータ・ソースの代替データ・ソースとしての構成。
データ・ソースのデプロイおよびアンデプロイ。
基本的なモニタリングおよび統計:
ConnectionsTotalCount
CurrCapacity
FailedReserveRequestCount
ActiveConnectionsHighCount
ActiveConnectionsCurrentCount
Oracle簡易ドライバ、XAドライバおよびアプリケーション・コンティニュイティ・ドライバでの動作保証。
UCPデータ・ソースでは、次の機能はサポートされません。
WebLogic Serverトランザクション・マネージャ(1フェーズ、LLR、JTS、JDBC TLog、決定子リソースなど
追加のライフサイクル操作(中断、再開、停止、強制停止、開始など)。
任意の接続プールの汎用サポート。
Oracle WebLogic Serverセキュリティ・オプション。
前にリストされているもの以外のJDBCドライバ。
JMS、リース、EJBなどのOracle WebLogic Serverデータ操作。
UCPデータ・ソースに対するRMIアクセス。
Oracle Universal Connection Poolの詳細は、『Oracle Universal Connection Pool for JDBC開発者ガイド』を参照してください。
ここでは、ユニバーサル接続プール・データの作成方法について説明します。
WebLogicドメインにUCPデータ・ソースを作成する場合、WebLogic Server管理コンソール、WebLogic Scripting Tool (WLST)およびFusion Middleware Controlを使用できます。管理コンソールとWLSTによる方法については、次の項を参照してください。
Fusion Middleware Controlを使用してUCPデータ・ソースを作成する手順については、『Fusion Middleware ControlによるOracle WebLogic Serverの管理』のJDBC UCPデータ・ソースの作成に関する項を参照してください。
ここでは、WebLogic Server管理コンソールでのUCPデータ・ソースの構成方法について説明します。
WebLogic Server管理コンソールでUCPデータ・ソースを作成する手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのUCPデータ・ソースの作成に関する項を参照してください。この手順には、データ・ソースの構成ウィザードにアクセスする方法も含まれます。
次の各項では、WebLogic Server管理コンソールからデータ・ソースの構成ウィザードを使用して、データ・ソースを作成するために使用する基本手順の概要について説明します。
JDBCデータ・ソースのプロパティの設定
「JDBCデータ・ソースのプロパティ」セクションには、データ・ソースのアイデンティティとデータベース接続でのデータの処理方法を決定するオプションが含まれます。これらのプロパティを構成するためのガイドラインは、次のとおりです。
データ・ソース名 - 「名前」フィールドにUCPデータ・ソースの名前を入力します。JDBCデータ・ソースの名前は、WebLogicドメイン内でデータ・ソースを識別するために使用されます。システム・リソース・データ・ソースの場合、そのリソース以外のすべてのJDBCシステム・リソース(データ・ソースを含む)間で一意の名前にする必要があります。名前の競合を避けるために、データ・ソースの名前は、その他の構成オブジェクト(サーバー、アプリケーション、クラスタ、JMSキュー、JMSトピック、JMSサーバーなど)の名前の間でも一意にする必要があります。
スコープ - 使用可能なスコープのリストからデータ・ソースのスコープを選択します。スコープは、「グローバル」(ドメイン・レベル)または既存の「リソース・グループ」や「リソース・グループ・テンプレート」に設定できます。
JNDI名 - 「JNDI名」フィールドにUCPデータ・ソースのJNDI名を入力します。単一の名前または複数の名前でJNDIツリーにバインドされるように、データ・ソースを構成します。単一のJDBC接続プールを指す複数のデータ・ソースを含む従来の構成のかわりに、複数JNDI名のデータ・ソースを使用できます。詳細は、『Oracle WebLogic Server JNDIアプリケーションの開発』を参照してください。
「データベースのタイプ」および「ドライバ」 - UCPデータ・ソースは、Thin XA、非XAおよびアプリケーション・コンティニュイティ(リプレイ)・ドライバという3つのOracleドライバで動作保証されています。メニューから必要なドライバを選択します。
表8-1に、ドライバとJDBC接続ファクトリのサポートされる組合せを示します
表8-1 UCPデータ・ソースでサポートされるドライバと接続ファクトリの組合せ
ドライバ | ファクトリ(ConnectionFactoryClassName) |
---|---|
oracle.ucp.jdbc.PoolDataSourceImpl (デフォルト) |
oracle.ucp.jdbc.PoolDataSourceImpl |
oracle.ucp.jdbc.PoolXADataSourceImpl |
oracle.jdbc.xa.client.OracleXADataSource |
oracle.ucp.jdbc.PoolDataSourceImpl |
oracle.jdbc.replay.OracleDataSourceImpl |
注意:
現時点では、リプレイ・ドライバはXAトランザクションをサポートしていません。
表8-1のリストにある非XAドライバを、表にあるXAファクトリで指定すると、エラーが生成されます。表に含まれない値を指定しても、それらは検証されません。
jdbc-driver-params
にdriver-name
が指定されていない場合、デフォルトでoracle.ucp.jdbc.PoolDataSourceImpl
に設定されます。
サポートされるドライバ名を指定したが、ConnectionFactoryClassName
接続プロパティを指定しない場合、表8-1の対応するエントリが使用されます。サポートされるドライバ名を指定しない場合、エラーが生成されます。
接続プロパティの設定
接続プロパティは、データ・ソースとDBMSとの間の接続を構成するために使用します。管理コンソールでUCPデータ・ソースの接続プロパティを入力する場合、2つの方法があります。
ウィザードの「接続プロパティ」ページには、UCPドライバに使用できるすべての接続プロパティが表示されるため、適切な値を入力できます。別の方法として、「データベース接続のテスト」ページの「プロパティ」テキスト・ボックスに、propertyName=value
という書式を使用して直接プロパティを入力することで、プロパティを構成できます。「接続プロパティ」ページで入力した値は、「プロパティ」テキスト・ボックスにすでにリストされています。
表8-2では、UCPデータ・ソースで構成できる接続プロパティについて説明します。UCP接続プロパティの詳細は、次を参照してください。PoolDataSourceImplクラス(Oracle Universal Connection Pool for JDBC Java APIリファレンス)。属性は、PoolDataSourceImpl
クラスのセッターによって決定されます。set接頭辞なしの属性名を使用してください。名前の大文字と小文字は区別されません。
表8-2 UCP接続プールのプロパティ
プロパティ | タイプ | 説明 |
---|---|---|
AbandonedConnectionTimeout |
int |
中止接続タイムアウトを設定します。 有効値の範囲は、0からInteger.MAX_VALUEまでです。デフォルトは0です。 |
ConnectionFactoryClassName |
String |
接続ファクトリのクラス名を設定します。 |
ConnectionFactoryProperties |
name=value |
接続ファクトリの複数の接続ファクトリ・プロパティを設定します。 |
ConnectionFactoryProperty |
name=value |
接続ファクトリの1つの接続ファクトリ・プロパティを設定します。 |
ConnectionHarvestMaxCount |
int |
接続収集の発生時に収集できる接続の最大数を設定します。 |
ConnectionHarvestTriggerCount |
int |
接続プールの接続収集が発生するときに使用可能な接続の数を設定します。 |
ConnectionLabelingHighCost |
int |
接続ラベリングで接続を高コストとして識別するコスト値を設定します。 |
ConnectionPoolName |
String |
接続プール名を設定します。 |
ConnectionProperties |
name=value |
接続ファクトリの複数の接続プロパティを設定します。 |
ConnectionProperty |
name=value |
接続ファクトリの1つの接続プロパティを設定します。 |
ConnectionWaitTimeout |
int |
使用中の接続をクライアントが解放するまでの待機時間(秒)を設定します。 有効値の範囲は、0からInteger.MAX_VALUEまでです。デフォルトは3です。 |
DatabaseName |
String |
データベース名を設定します。 |
DataSourceName |
String |
データ・ソース名を設定します。 |
説明 |
String |
データ・ソースの説明を設定します。 |
FastConnectionFailoverEnabled |
Boolean |
このプール対応のデータ・ソースを使用してアクセスされる接続プールの高速接続フェイルオーバー(FCF)を有効化します。有効な値は、trueおよびfalseです。 |
HighCostConnectionReuseThreshold |
int |
接続ラベリングの高コストの接続再使用しきい値を設定します。 |
InactiveConnectionTimeout |
int |
非アクティブ接続タイムアウトを設定します。 有効値の範囲は、0からInteger.MAX_VALUEまでです。デフォルトは0です。 |
InitialPoolSize |
int |
初期プール・サイズを設定します。 有効値の範囲は、0からInteger.MAX_VALUEまでです。これを最大プール・サイズより大きい値に設定すると無効になります。デフォルトは0です。 |
LoginTimeout |
int |
ログイン・タイムアウトを設定します。 |
MaxConnectionReuseCount |
int |
接続再使用数プロパティを設定します。 |
MaxConnectionReuseTime |
long |
接続再使用時間プロパティを設定します。 |
MaxIdleTime |
int |
プールで使用可能な接続のアイドル・タイムアウトを設定します。 |
MaxPoolSize |
int |
接続の最大数を設定します。 有効値の範囲は、1からInteger.MAX_VALUEまでです。デフォルトはInteger.MAX_VALUEです。 |
MaxStatements |
int |
接続でプールするかキャッシュできる文の最大数を設定します。 |
MinPoolSize |
int |
接続の最小数を設定します。 有効値の範囲は、0からInteger.MAX_VALUEまでです。これを最大プール・サイズより大きい値に設定すると無効になります。デフォルトは0です。 |
NetworkProtocol |
String |
データ・ソース・ネットワーク・プロトコルを設定します。 |
ONSConfiguration |
String |
リモートONSサブスクリプションに使用される構成文字列を設定します。 |
パスワード |
String |
接続を取得するためのパスワードを設定します。 |
PortNumber |
int |
データベース・ポート番号を設定します。 |
PropertyCycle |
int |
プロパティ・サイクル(秒)を設定します。 |
RoleName |
String |
データ・ソース・ロール名を設定します。 |
ServerName |
String |
データベース・サーバー名を設定します。 |
SQLForValidateConnection |
String |
SQLForValidateConnectionプロパティの値(SQL)を設定します。 |
TimeoutCheckInterval |
int |
timeoutCheckInterval (秒)を設定します。 |
TimeToLiveConnectionTimeout |
int |
接続を使用中のままにできる最大時間(秒)を設定します。 |
URL |
String |
データベースへの接続を取得するためにデータ・ソースで使用するURLを設定します。 |
ユーザー |
String |
接続を取得するためのユーザー名を設定します。 |
ValidateConnectionOnBorrow |
Boolean |
流用した接続を最初に検証するかどうかを設定します。有効な値は、 |
注意:
通常の文字列リテラルに加え、システム・プロパティと暗号化プロパティがサポートされます。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの次のトピックを参照してください。jdbc-driver-params
URLが設定されている場合、URLプロパティは無視されます。encrypted-passwordが設定されている場合、パスワード・プロパティは無視されます。
属性ConnectionFactoryProperty、ConnectionFactoryProperties、ConnectionProperty
およびConnectionFactoryProperties
は、name1=value1,name2=value2...
という形式の値を受け入れます。
データベース接続のテスト
「データベース接続のテスト」ページでは、プロパティの自由形式の値を入力し、データ・ソース構成をファイナライズする前に、表名またはSQL文を使用してデータベース接続をテストできます。必要に応じて、Properties属性とSystem Properties属性を使用すると、追加の構成情報をテストできます。
ターゲットの選択
新しいUCPデータ・ソースのデプロイ先に、1つ以上のターゲットを選択します。ターゲットを選択していない場合でもデータ・ソースは作成されますが、デプロイされません。そのデータ・ソースは、後でデプロイする必要があります。
ここでは、WLSTを使用したUCPデータ・ソースの作成方法について説明します。
他のデータ・ソース・タイプを作成するのと同じ方法で、WLSTを使用してUCPデータ・ソースを作成できます。ただし、必要な属性の数は、UCPデータ・ソースの方が少なくなります。
UCPデータ・ソースの構成要素は、次のとおりです。
datasource-type=UCP
jdbc-driver-params url
jdbc-driver-params property - user
jdbc-driver-params password-encrypted
jdbc-data-source-params jndi-name
jdbc-driver-params other properties
WebLogic Serverデータ・ソース・ディスクリプタからの他の要素は、認識されません。他の要素を指定しても、無視されます。
例8-1に、UCPデータ・ソースを作成するためのサンプルWLSTスクリプトを示します
例8-1 UCPデータ・ソースを作成するためのサンプルWLSTスクリプト
import sys, socket import os hostname = socket.gethostname() connect("weblogic","welcome1","t3://"+hostname+":7001") edit() startEdit() serverName="AdminServer" serverBean = getMBean('/Servers/'+serverName) host='%s.us.company.com' %hostname print 'Creating UCP datasource' domain = getMBean("/") startEdit() resourceName='ucpDS' print "Creating datasource ds in domain" systemResource=domain.createJDBCSystemResource(resourceName) systemResource.setName(resourceName) jdbcResource=systemResource.getJDBCResource() jdbcResource.setName(resourceName) jdbcResource.setDatasourceType('UCP') driverParams=jdbcResource.getJDBCDriverParams() driverParams.setDriverName('oracle.ucp.jdbc.PoolDataSourceImpl') driverParams.setUrl('jdbc:oracle:thin:@dbhost:1521/otrade') properties = driverParams.getProperties() properties.createProperty('user', 'dbuser') properties.createProperty('ConnectionFactoryClassName', 'oracle.jdbc.pool.OracleDataSource') driverParams.setPassword('MYPASSWD') jdbcDataSourceParams=jdbcResource.getJDBCDataSourceParams() jdbcDataSourceParams.addJNDIName(resourceName) jdbcDataSourceParams.setGlobalTransactionsProtocol('None') cd('/SystemResources/' + resourceName ) set('Targets',jarray.array([ObjectName('com.bea:Name=' + serverName + ',Type=Server')], ObjectName)) save() activate()
注意:
UCPデータ・ソースの基礎としてWebLogic Serverに付属する汎用データ・ソースを作成するためのサンプルWLSTスクリプトも使用できます。EXAMPLES_HOME\wl_server\examples\src\examples\wlst\online\jdbc_data_source_creation.py
ここでEXAMPLES_HOME
は、WebLogic Serverのコード・サンプルを構成するディレクトリです。『WebLogic Scripting Toolの理解』のWLSTオンライン・サンプル・スクリプトに関する項を参照してください。
ここでは、ユニバーサル接続プールJDBCリソースのモニタリングについて説明します。
UCPデータ・ソースの実行時の統計は、WebLogic Server管理コンソールを使用するか、関連するランタイムMBeanを通じて表示できます。
JDBCUCPDataSourceRuntimeMBean
には、データ・ソースの現在の状態を取得するメソッドと、データ・ソースに関する統計を取得するメソッドが用意されています。取得できる統計には、平均のアクティブな接続数、現在のアクティブな接続数、最大のアクティブな接続数などがあります。このMBeanは、JDBCDataSourceRuntimeMBean
を拡張して、JDBCサービスから他のJDBC MBeanのリストとともにそれを返すことができるようにします。
実行時の統計に加え、テストに成功すると、testPool()
操作はNULLを返しますが、それ以外の場合はエラー文字列を返します(他のデータ・ソース・タイプと同様)。プールのテストが実行されるのは、検証用に実行するSQL文字列(SELECT 1 from DUAL
など)がSQLForValidateConnection
に設定されている場合のみです。操作の残りは、アクションを実行しません。
詳細は、Oracle WebLogic Server MBeanリファレンスのJDBCUCPDataSourceRuntimeMBeanを参照してください。
JDBCのモニタリングの詳細は、「WebLogic JDBCリソースのモニタリング」を参照してください。