ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理
12cリリース1 (12.1.1)
B65892-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

14 WebLogic JDBCリソースの管理

この章では、管理コンソール、コマンドライン、JMXプログラムまたはWebLogic Scripting Tool (WLST)スクリプトを使用してドメイン内のJDBCデータ・ソースを管理する方法について説明します。

データ・ソースおよびデータベース接続のテスト

JDBCDataSourceRuntimeMBean.testPool

データ・ソース内のデータベース接続が正常な状態であることを確認するには、接続を定期的にテストする必要があります。WebLogic Serverでは、2種類の基本的なテストが行われます。データ・ソース上で属性を使って構成する自動テストと、データ・ソースのトラブルシューティングに利用できる手動テストです。

WebLogic Serverがプール接続の整合性を自動的に保てるようにすることで、DBMS接続に関する問題の大半は防げるはずです。自動接続テストの構成の詳細は、「データ・ソースの接続テスト・オプション」を参照してください。

データ・ソースからの接続の手動テストには、管理コンソールの「JDBCデータ・ソース: モニター: テスト」ページの「データ・ソースのテスト」機能(「JDBCデータ・ソースのテスト」を参照)またはJDBCDataSourceRuntimMBeantestPool()メソッドを使用できます。データ・ソースからのデータベース接続をテストするには、データ・ソースの構成で予約された接続のテストを有効化し、表名のテストを定義しておく必要があります。どちらも、管理コンソールを使用してデータ・ソースを作成した場合には、デフォルトで定義されます。

データ・ソースをテストする際、WebLogic Serverは接続を予約し、「表名のテスト」で定義した問合せを使用してそれをテストし、その後、接続を解放します。

データ・ソースの文キャッシュの管理

システム内のデータ・ソースにおける各接続について、WebLogic Serverは文キャッシュを作成します。接続でプリペアド文または呼出し可能文が使用されると、WebLogic Serverはその文をキャッシュして、再利用できるようにします。文キャッシュの詳細は、「文キャッシュによるパフォーマンスの向上」を参照してください。

データ・ソースの各接続は固有の文キャッシュを持ちますが、構成の設定はデータ・ソース内のすべての接続に対して行われます。管理コンソールを使用して、データ・ソース内のすべての接続について文キャッシュをクリアすることも、プログラムにより個々の接続について文キャッシュをクリアすることもできます。

データ・ソースの文キャッシュのクリア

JDBCDataSourceRuntimeMBean.clearStatementCache

データ・ソース内のすべての接続について文キャッシュを手動でクリアするには、管理コンソールを使用する(「JDBCデータ・ソース内の文キャッシュのクリア」を参照)か、またはJDBCDataSourceRuntimeMBeanclearStatementCache()メソッドを使用します。

単一接続用の文キャッシュのクリア

weblogic.jdbc.extensions.WLConnection.clearStatementCache()
weblogic.jdbc.extensions.WLConnection.clearCallableStatement(java.lang.
String sql)
weblogic.jdbc.extensions.WLConnection.clearCallableStatement(java.lang.
String sql,int resType,int resConcurrency)
weblogic.jdbc.extensions.WLConnection.clearPreparedStatement(java.lang.
String sql)
weblogic.jdbc.extensions.WLConnection.clearPreparedStatement(java.lang.
String sql,int resType,int resConcurrency)

weblogic.jdbc.extensions.WLConnectionインタフェースのメソッドを使用すると、単一の接続用の文キャッシュをクリアするか、キャッシュから個別に文をクリアできます。これらのメソッドは、処理が正常に実行されるとtrueを返し、文が見つからなかったために処理が失敗するとfalseを返します。

プリペアド文と呼出し可能文がキャッシュに格納される場合、これらは正確なSQL文と、必要に応じて結果セット・パラメータ(タイプおよび同時実行性オプション)に基づいて格納(キー化)されます。個々のプリペアド文または呼出し可能文をクリアする場合は、適切な結果セット・パラメータを取るメソッドを使用する必要があります。たとえば、resSetTypeResultSet.TYPE_SCROLL_INSENSITIVEresSetConcurrencyResultSet.CONCUR_READ_ONLYのキャッシュ内に呼出し可能文がある場合は、結果セット・パラメータを取るメソッドを使用することが必要です。

clearCallableStatement(java.lang.String sql,int resSetType,int resSetConcurrency)

パラメータとしてSQL文字列のみを取るメソッドを使用する場合は、メソッドは文を見つけられず、キャッシュからクリアされるものはありません。メソッドはfalseを返します。

現在アプリケーションによって使用中の文をクリアする場合、WebLogic Serverはその文をキャッシュから削除しますが、閉じはしません。現在使用中でない文をクリアする場合、WebLogic Serverはキャッシュからその文を削除して閉じます。

これらのメソッドの詳細は、WLConnectionのJavadocを参照してください。

接続プールの縮小

JDBCDataSourceRuntimeMBean.shrink

データ・ソースは、プール内の接続の初期数、最小数および最大数を定義するプロパティのセット(initialCapacityminCapacityおよびmaxCapacity)を備えています。すべての接続が使用されている場合、データ・ソースは自動的に1つの接続をプールに追加します。プールがmaxCapacityに達すると、最大数の接続が開かれます。これらの接続は、データ・ソースの自動縮小を有効化するか、shrink()メソッドを使用して手動でデータ・ソースを縮小しない限り、開いたままになります。

ピーク使用期間の終了後、データ・ソースから一部の接続を削除して、WebLogic ServerおよびDBMSのリソースを解放したい場合があります。管理コンソールの「JDBCデータ・ソース」:「制御」ページの「縮小」オプションを使用するか(Oracle WebLogic Server管理コンソール・ヘルプJDBCデータ・ソース内の接続プールの縮小に関する項を参照)、または、JDBCDataSourceRuntimeMBeanshrink()メソッドを使用できます。データ・ソースを縮小すると、WebLogic Serverはプール内の接続の数を、minCapacityと現在使用中の接続数のいずれか大きいほうの数まで削減します。

接続プールのリセット

JDBCDataSourceRuntimeMBean.reset

データ・ソース内のすべての使用可能なデータベース接続を閉じて再作成するには、管理コンソールの「JDBCデータ・ソース」:「制御」ページにある「リセット」オプションを使用するか(Oracle WebLogic Server管理コンソール・ヘルプJDBCデータ・ソース内の接続のリセットに関する項を参照)、またはJDBCDataSourceRuntimeMBeanreset()メソッドを使用できます。これは、たとえば、DBMSの再起動後に必要になる場合があります。通常、データ・ソースの1つの接続に失敗した場合、プールの中のすべての接続が不正になります。

接続プールの一時停止

JDBCDataSourceRuntimeMBean.suspend
JDBCDataSourceRuntimeMBean.forceSuspend

データ・ソースを一時停止するには、管理コンソールの「JDBCデータ・ソース」:「制御」ページの「一時停止」および「強制中断」オプションを使用するか(Oracle WebLogic Server管理コンソール・ヘルプJDBCデータ・ソースの一時停止に関する項を参照)、または、JDBCDataSourceRuntimeMBeansuspend()およびforceSuspend()メソッドを使用します。

データ・ソースを一時停止する(強制中断ではない)場合、データ・ソースは無効化されたものとしてマークされ、アプリケーションはプールからの接続を使用できません。一時停止されたときにデータ・ソースからの接続をすでに予約していたアプリケーションは、その接続を使用しようとすると、例外を受け取ります。データ・ソース内のすべての接続は、データ・ソースが一時停止される前の状態のままで保持されます。

データ・ソースを強制的に一時停止すると、すべての接続プールは破棄され、予約接続を使用しようとする後続試行は失敗します。閉じられる接続上のトランザクションはロールバックされます。

接続プールの再開

JDBCDataSourceRuntimeMBean.resume

一時停止したデータ・ソースを再び有効にするには、管理コンソールの「JDBCデータ・ソース」:「制御」ページの「再開」オプションを使用するか(Oracle WebLogic Server管理コンソール・ヘルプ中断されているJDBCデータ・ソースの再開に関する項を参照)、または、JDBCDataSourceRuntimeMBeanresume()メソッドを使用できます。データ・ソースを再開すると、WebLogic Serverはデータ・ソースを無効としてマークし、データ・ソースからの接続がアプリケーションで使用可能になります。データ・ソースを(強制中断ではなく)一時停止した場合、すべての接続はデータ・ソースの一時停止前と同じ状態に保持されます。データ・ソースの中断前に接続を予約してあったクライアントは、中断した箇所とまったく同じところから処理を続行できます。データ・ソースを強制的に一時停止した場合、クライアントは処理を続行するために新しい接続を確保する必要があります。


注意:

たとえばデータベース・サーバーが利用できない場合などの、正しく起動しなかったデータ・ソースは再開できません。


データ・ソースの停止

JDBCDataSourceRuntimeMBean.shutdown
JDBCDataSourceRuntimeMBean.forceShutdown

データ・ソースを停止するには、管理コンソールの「JDBCデータ・ソース」:「制御」ページの「停止」または「強制停止」オプションを使用するか(Oracle WebLogic Server管理コンソール・ヘルプJDBCデータ・ソースの停止に関する項を参照)、または、JDBCDataSourceRuntimeMBeanshutdown()およびforceShutdown()メソッドを使用できます。

データ・ソースを停止する(強制停止ではない)場合、WebLogic Serverはデータ・ソース内のデータベース接続を閉じ、データ・ソースを停止します。データ・ソースのいずれかの接続が使用中の場合、この操作は失敗します。

データ・ソースを強制停止する場合、WebLogic Serverはデータ・ソース内のデータベース接続を閉じ、データ・ソースを停止します。現在の接続ユーザーはすべて強制的に切断されます。

データ・ソースの起動

JDBCDataSourceRuntimeMBean.start

データ・ソースの停止後、管理コンソールの「JDBCデータ・ソース」:「制御」ページにある「起動」オプションを使用するか(Oracle WebLogic Server管理コンソール・ヘルプJDBCデータ・ソースの起動に関する項を参照)、または、JDBCDataSourceRuntimeMBeanstart()メソッドを使用できます。起動操作を実行すると、データ・ソースが再初期化されて接続が作成され、データ・ソースのヘルス状態が「実行中」になります。

DBMSネットワーク障害の管理

-Dweblogic.resourcepool.max_test_wait_secs=xx

xxは、WebLogic Serverが接続テストが失敗したと見なすまで接続テストを待機する秒数です。デフォルトでは、サーバー・インスタンスに10秒の値が割り当てられています。

このコマンド・ライン・フラグは、接続テストやアプリケーションの長時間のハング(たとえば10分間)を引き起こす可能性があるDBMSネットワーク障害のような障害を管理します。割り当てられた期間を過ぎると、サーバー・インスタンスはプールをパージして無効化し(すべての接続を閉じて、それ以上の予約の試行をブロック)、再接続が可能になり次第、プールを再び有効化します。

10秒という値は、DBMSが一時的にクライアントへのレスポンスを停止してから既存の接続上でサービスを再開する際に、最大のストレス負荷を許容できる合理的な時間です。ただし、待機時間が長すぎる場合や短かすぎる場合は、サーバーの起動に使用されるstartWebLogicスクリプトにフラグを追加して、使用する環境により適した値を指定してください。この時間の値をゼロ(0)秒に設定すると、サーバーはハングしている接続テスト上で無期限に待機します。