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

前
 
次
 

16 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ネットワーク障害などの障害が管理されます。割り当てられた期間が経過すると、サーバー・インスタンスは未使用の接続をパージし、アプリケーションが使用している接続を監視します。

DBMSがクライアントへの応答を一時的に停止し、既存の接続でサービスを再開する可能性がある場合、10秒という値により、ピーク時の負荷を許容する適切な時間が提供されます。ただし、待機時間が長すぎる場合、または短すぎる場合、サーバーを起動するために使用されるstartWebLogicスクリプトに、環境に合わせた値を含むフラグを追加します。時間の値をゼロ(0)秒に設定すると、サーバーは無限に待機します。