メトリックには、エンドツーエンド・メトリックとDynamic Monitoring Service(DMS)メトリックの2種類があります。エンドツーエンド・メトリックは、アプリケーション・コードへのエントリからJDBCを使用してデータベースまで(およびその逆)の、アプリケーション・アクティビティにタグ付けするために使用されます。DMSメトリックはアプリケーション・コンポーネントのパフォーマンスを計測するために使用されます。JDBCでは、ユーザーによるエンドツーエンド・メトリックの使用は一般的に推奨されていません。
この章では、Oracle JDBC 11.1によって生成されたDMSメトリックについて、次の項で説明します。
Oracle Database 10g以上では、Oracle Java Database Connectivity(JDBC)は、エンドツーエンド・メトリックをサポートしています。Oracle Database 11gリリース1(11.1)でエンドツーエンド・メトリックをアプリケーションが直接設定できるのは、DMS対応のJARを使用していない場合のみです。アプリケーションがDMS対応のJARファイルを使用している場合は、DMSを経由してのみエンドツーエンド・メトリックを設定できます。DMSメトリックはすべて、次のDMS対応のJARファイルで使用できます。
ojdbc15dms.jar
ojdbc15dms_g.jar
ojdbc6dms.jar
ojdbc6dms_g.jar
他のJDBC JARファイルはいずれもDMSメトリックを生成しません。Oracle JDBC 11.1リリースで生成されるメトリックは、Oracle JDBCの10.2、10.1、9.2以下のバージョンと異なり、以前のバージョンとの互換性を維持しようとしていません。互換性モードもありません。以前のバージョンのJDBCで生成されたDMSメトリックの正確な詳細に依存しているシステムは、Oracle JDBC 11.1が生成したメトリックを処理すると、想定外の動作をすることがあります。これは設計どおりの動作で、変更できません。
文メトリックは、ある接続におけるすべての文について一括してレポートすることも、各文について個々にレポートすることもできます。DMSメトリックは、個別の文に関連するメトリックを除いて、すべて常時有効です。
注意: SQLText 文メトリックは、有効にも無効にもできます。デフォルトでは無効です。有効の場合、すべての文で有効です。 |
一括メトリックと個別メトリックのどちらを使用するかを決定するために、JDBCはDMSConsoleセンサーの重みをチェックします。センサーの重みがDMSConsole.NORMAL
以下の場合は、JDBCは一括文メトリックを生成します。センサーの重みがDMSConsole.NORMAL
を超えている場合は、JDBCは個別文メトリックを生成します。
プリコンパイルされたSQL文またはコール可能文を作成する場合、JDBCはDMSConsoleセンサーの重みをチェックし、文作成時点のセンサーの重みに応じて、メトリックが生成されます。文が作成された後でセンサーの重み値を変更しても、文が一括メトリックと個別メトリックを切り替えることはありません。
注意: 文キャッシュが存在する場合、文は新たに作成されず、キャッシュから取得されるため、センサーの重みを変更しても変化がないように見えることがあります。 |
一括文メトリックと個別文メトリックの両方に対して、生成される文メトリックのリストは1つのみ存在します。これら2つのリストの唯一の相違は文の集計です。個別文メトリックが生成される場合、JDBCドライバによって作成された別個の文オブジェクトに対してそれぞれ1セットのメトリックが生成されます。一方、一括文メトリックが生成される場合、指定された接続によって作成されたすべての文が、同一の文メトリック・セットを使用します。たとえば、execute
フェーズのイベントを考えます。個別文メトリックが使用される場合、作成される各文が別のexecute
フェーズ・イベントを持ちます。このため、このような文が2つある場合、2つの別個の文について実行統計情報を区別することができます。一方が実行時間1秒で、もう一方が実行時間3秒だった場合、2つの別個のexecuteフェーズ・イベントが存在することになります。一方は実行時間と平均時間が1秒で、もう一方は実行時間と平均時間が3秒です。一括文メトリックが使用される場合、すべての文が、その接続に共通する単一のexecute
フェーズ・イベントを持ちます。このため、このように同一の接続によって作成された2つの文から、2つの文の実行統計情報を区別することはできません。一方が実行時間1秒で、もう一方が実行時間3秒だった場合、共通のexecute
フェーズ・イベントが、総実行時間4秒、平均時間2秒とレポートします。
DMSのバージョンに応じて、SQLText文メトリックの生成を決定するメカニズムには次の2つがあります。
DMS JARファイルの11.1バージョンがclasspath
環境変数に存在する場合、JDBCはDMS更新SQLテキスト・フラグをチェックします。このフラグがtrue
の場合、SQLText
メトリックは更新されます。
DMS JARファイルの11.1バージョンがclasspath
環境変数に存在しない場合、JDBCはDMSStatementMetrics
接続プロパティの値を使用します。この文プロパティがtrue
の場合、SQLText
メトリックは更新されます。この接続プロパティのデフォルト値はfalse
です。
SQLTextメトリックが生成されるかどうかは、使用される文メトリックの種類、つまり個別文メトリックか一括文メトリックかには関係ありません。
JMX(Java Management Extensions)は、アプリケーション、システム・オブジェクト、デバイス、サービス指向ネットワークおよびJVM(Java Virtual Machine)を管理および監視するためのツールを取り揃えたJavaテクノロジです。JMXをサポートする管理アプリケーションを使用して、DMSメトリックに実行時に容易にアクセスできます。JMXを使用してDMSデータにアクセスする方法の詳細は、次のURLを参照してください。http://www.oracle.com/technology/products/ias/toplink/doc/1013/main/_html/optimiz004.htm#BEEFGGBE