36 JDBC DMSメトリック
DMSメトリックはアプリケーション・コンポーネントのパフォーマンスを計測するために使用されます。
この章では、以下のトピックについて説明します。
ノート:
エンドツーエンド・メトリックと呼ばれる別のメトリックがあります。エンドツーエンド・メトリックは、アプリケーション・コードへのエントリからJDBCを使用してデータベースまで(およびその逆)の、アプリケーション・アクティビティにタグ付けするために使用されます。
JDBCでは、次のエンドツーエンド・メトリックをサポートしています。
-
Action
-
ClientId
-
ExecutionContextId
-
Module
-
State
以前のリリースでは、前述のメトリックを使用する場合、oracle.jdbc.OracleConnection
インタフェースのsetEndToEndMetrics
およびgetEndToEndMetrics
メソッドを使用できました。しかしながら、Oracle Database 12cリリース1 (12.1)以降、これらのメソッドは非推奨になりました。setEndToEndMetrics
およびgetEndToEndMetrics
メソッドのかわりに、setClientInfo
およびgetClientInfo
メソッドを使用することをお薦めします。
Oracle Database 10gでは、Oracle Java Database Connectivity(JDBC)は、エンドツーエンド・メトリックをサポートしています。Oracle Database 12cリリース1 (12.1)で、エンドツーエンド・メトリックをアプリケーションが直接設定できるのは、DMS対応のJARファイルを使用していない場合のみです。アプリケーションがDMS対応のJARファイルを使用している場合は、DMSを経由してのみエンドツーエンド・メトリックを設定できます。
警告:
アプリケーションがDMS対応のJARファイルを使用する場合、DMSメトリックを使用することを強くお薦めします。
関連項目:
エンドツーエンド・メトリックの詳細は、「Oracle Database JDBC Java APIリファレンス」を参照
36.1 JDBC DMSメトリックの概要
DMSメトリックを使用すると、アプリケーションおよびシステム開発者は、カスタマイズされたパフォーマンス・メトリックを特定のソフトウェア・コンポーネントのために測定およびエクスポートできます。DMSメトリックはすべて、次のDMS対応のJARファイルで使用できます。
-
ojdbc6dms.jar
-
ojdbc6dms_g.jar
-
ojdbc7dms.jar
-
ojdbc7dms_g.jar
他のJDBC JARファイルはいずれもDMSメトリックを生成しません。Oracle JDBC 12cリリース1 (12.1)で生成されるメトリックは、Oracle JDBCの10.2、10.1、9.2以前のバージョンと異なっており、以前のバージョンとの互換性を維持しようとしていません。互換性モードもありません。以前のバージョンのJDBCで生成されたDMSメトリックの正確な詳細に依存しているシステムは、Oracle JDBC 12cが生成したメトリックを処理すると、想定外の動作をすることがあります。これは設計どおりの動作で、変更できません。
文メトリックは、ある接続におけるすべての文について一括してレポートすることも、各文について個々にレポートすることもできます。DMSメトリックは、個別の文に関連するメトリックを除いて、すべて常時有効です。
ノート:
SQLText
文メトリックは、有効にも無効にもできます。デフォルトでは無効です。有効の場合、すべての文で有効です。
36.2 生成されるメトリックの種類の決定について
一括メトリックと個別メトリックのどちらを使用するかを決定するために、JDBCはDMSConsoleセンサーの重みをチェックします。センサーの重みがDMSConsole.NORMAL
以下の場合は、JDBCは一括文メトリックを生成します。センサーの重みがDMSConsole.NORMAL
を超えている場合は、JDBCは個別文メトリックを生成します。
プリペアド文またはコール可能文を作成する場合、JDBCはDMSConsoleセンサーの重みをチェックし、文作成時点のセンサーの重みに応じて、メトリックが生成されます。文が作成された後でセンサーの重み値を変更しても、文により一括メトリックと個別メトリックが切り替えられることはありません。
ノート:
文キャッシュが存在する場合、文は新たに作成されず、キャッシュから取得されるため、センサーの重みを変更しても変化がないように見えることがあります。
一括文メトリックと個別文メトリックの両方とも、生成される文メトリックのリストは1つのみです。これら2つのリストの唯一の相違は文の集計です。個別文メトリックが生成される場合、JDBCドライバによって作成された別個の文オブジェクトごとにそれぞれ1セットのメトリックが生成されます。一方、一括文メトリックが生成される場合、指定された接続によって作成されたすべての文が、同一の文メトリック・セットを使用します。
たとえば、'execute
'フェーズ・イベントを検討してみましょう。個々の文メトリックが使用される場合、作成される各々の文は異なった'execute
'フェーズのイベントを持ちます。このため、そのような文2つから、2つの異なる文に対応する実行統計を識別することが可能です。片方の実行時間が1秒で、もう一方の実行時間が3秒の場合、'execute'フェーズの異なる2つのイベント(合計時間と平均時間が1秒のイベントと、合計時間と平均時間が3秒のイベント)があることになります。しかし、一括文メトリックを使用すると、すべての文が、その接続に共通の、単一の'execute
'フェーズのイベントを使用することになります。このため、同じ接続によって作成されるそのような2つの文から、2つの文の実行統計を識別することができなくなります。片方の実行時間が1秒で、もう一方の実行時間が3秒の場合、'execute
'フェーズが共通のイベント(合計時間が4秒で平均時間が2秒)が報告されます。
36.3 SQLTextメトリックの生成について
DMSのバージョンに応じて、SQLText
文メトリックの生成を決定するメカニズムには次の2つがあります。
-
DMS JARファイルの12cバージョンが
classpath
環境変数に存在する場合、JDBCはDMS更新SQLテキスト・フラグをチェックします。このフラグがtrue
の場合、SQLText
メトリックは更新されます。 -
DMS JARファイルの12cバージョンが
classpath
環境変数に存在しない場合、JDBCはDMSStatementMetrics
接続プロパティの値を使用します。この文プロパティがtrue
の場合、SQLText
メトリックは更新されます。この接続プロパティのデフォルト値はfalse
です。
SQLText
メトリックが生成されるかどうかは、使用される文メトリックの種類、つまり個別文メトリックか一括文メトリックかには関係ありません。
36.4 JMXを使用したDMSメトリックへのアクセスについて
JMX(Java Management Extensions)は、アプリケーション、システム・オブジェクト、デバイス、サービス指向のネットワーク、JVM(Java仮想マシン)を管理および監視するツールを提供するJavaテクノロジです。JMXをサポートする管理アプリケーションを使用して、実行時に容易にDMSメトリックにアクセスできます。JMXを使用したDMSデータへのアクセスの詳細は、URL http://www.oracle.com/technetwork/middleware/toplink/overview/index.html
を参照してください。
関連項目:
JMXの詳細は、『Oracle Database Java開発者ガイド』を参照してください。