12.3 Oracle RACの統計情報の表示について
UCPは、一連のOracle RACの実行時統計情報を提供します。この統計情報は、接続プールがOracle RAC機能をどの程度利用しているか判断するために使用されます。また、Oracle RAC機能を使用するために接続プールが適切に構成されているかどうかの判断に役立てるためにも使用されます。統計情報には、FCF処理情報、実行時接続ロード・バランスの成否率、アフィニティ・コンテキストの成否率がレポートされます。
oracle.ucp.jdbc.oracle
パッケージにあるOracleJDBCConnectionPoolStatistics
インタフェースは、Oracle RACの統計情報を接続プールに問い合せるために使用されるメソッドを備えています。このインタフェースのメソッドは、データソースのgetStatistics
メソッドを使用して、プール対応のデータソースおよびプール対応のXAデータソースからコールできます。次に例を示します。
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource(); ... Long rclbS = ((OracleJDBCConnectionPoolStatistics)pds.getStatistics()). getSuccessfulRCLBBasedBorrowCount(); System.out.println("The RCLB success rate is "+rclbS+".");
データソースのgetStatistics
メソッドは、それ自身でコールすることも可能であり、接続プールの全統計情報を1つのString
として戻し、Oracle RACの統計情報を組み込みます。
12.3.1 高速接続フェイルオーバーの統計情報
getFCFProcessingInfo
メソッドは、最新の高速接続フェイルオーバー(FCF)の試行に関する情報をString
の形式で提供します。通常、FCFの情報は、FCFの問題の診断に役立てるために使用されます。この情報は、各FCFの試行結果(成功または失敗)、関連するOracle RACインスタンス、クリーンアップされた接続数、FCFの試行の失敗をトリガーした例外などで構成されます。次の例では、getFCFProcessingInfo
メソッドの使用方法を示します。
Sting fcfInfo = ((OracleJDBCConnectionPoolStatistics)pds.getStatistics()). getFCFProcessingInfo(); System.out.println("The FCF information: "+fcfInfo+".");
次の例では、getFCFProcessingInfo()
メソッドの出力文字列を示します。
Oct 28, 2008 12:34:02 SUCCESS <Reason:planned> <Type:SERVICE_UP> \ <Service:"svvc1"> <Instance:"inst1"> <Db:"db1"> \ Connections:(Available=6 Affected=2 FailedToProcess=0 MarkedDown=2 Closed=2) \ (Borrowed=6 Affected=2 FailedToProcess=0 MarkedDown=2 MarkedDeferredClose=0 Closed=2) \ TornDown=2 MarkedToClose=2 Cardinality=2 ... Oct 28, 2008 12:09:52 SUCCESS <Reason:unplanned> <Type:SERVICE_DOWN> \ <Service:"svc1"> <Instance:"inst1"> <Db:"db1"> \ Connections:(Available=6 Affected=2 FailedToProcess=0 MarkedDown=2 Closed=2) \ (Borrowed=6 Affected=2 FailedToProcess=0 MarkedDown=2 MarkedDeferredClose=0 Closed=2) ... Oct 28, 2008 11:14:53 FAILURE <Type:HOST_DOWN> <Host:"host1"> \ Connections:(Available=6 Affected=4 FailedToProcess=0 MarkedDown=4 Closed=4) \ (Borrowed=6 Affected=4 FailedToProcess=0 MarkedDown=4 MarkedDeferredClose=0 Closed=4)
ロギングを有効にしている場合、前述の情報はUCPログでも利用でき、FCFの結果を検証できます。
12.3.2 実行時接続ロード・バランスの統計情報
実行時接続ロード・バランスの統計情報は、接続プールがOracle RACの実行時接続ロード・バランシング機能を効率的に利用しているかどうかの判断に使用されます。この統計情報には、実行時接続ロード・バランシングのアルゴリズムを利用できたリクエストの数と、アルゴリズムを利用できなかったリクエストの数がレポートされます。getSuccessfulRCLBBasedBorrowCount
メソッドとgetFailedRCLBBasedBorrowCount
メソッドが、それぞれの統計情報の取得に使用されます。次の例では、getFailedRCLBBasedBorrowCount
メソッドの使用方法を示します。
Long rclbF = ((OracleJDBCConnectionPoolStatistics)pds.getStatistics()). getFailedRCLBBasedBorrowCount(); System.out.println("The RCLB failure rate is: "+rclbF+".");
失敗率が高い場合は、Oracle RACロード・バランシング・アドバイザまたは接続プールが適切に構成されていないことを示している可能性があります。
12.3.3 接続アフィニティの統計情報
接続アフィニティの統計情報は、接続プールが接続アフィニティを効率的に利用しているかどうかの判断に使用されます。この統計情報には、アフィニティ・コンテキストと一致した流用リクエストの数と、アフィニティ・コンテキストと一致しなかったリクエストの数がレポートされます。getSuccessfulAffinityBasedBorrowCount
メソッドとgetFailedAffinityBasedBorrowCount
メソッドが、それぞれの統計情報の取得に使用されます。次の例では、getFailedAffinityBasedBorrowCount
メソッドの使用方法を示します。
Long affF = ((OracleJDBCConnectionPoolStatistics)pds.getStatistics()). getFailedAffinityBasedBorrowCount(); System.out.println("The connection affinity failure rate is: "+affF+".");