79 DBMS_HPROF
DBMS_HPROFパッケージは、PL/SQLアプリケーションの実行をプロファイルするためのインタフェースを提供します。階層的なプロファイラ・データの収集、未処理のプロファイラ出力の分析および情報生成のプロファイリングのためのサービスが提供されます。
この章では、次の項目について説明します。
参照:
PL/SQL階層プロファイラの詳細は、『Oracle Database開発ガイド』を参照してください。
79.1 DBMS_HPROFサブプログラムの要約
この表では、DBMS_HPROFパッケージのサブプログラムをリストし、簡単に説明します。
表79-1 DBMS_HPROFパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
未処理のプロファイラ出力を分析し、データベース表の階層プロファイラ情報を生成します。 |
|
|
ユーザーのセッションで階層プロファイラ・データ収集を開始します。 |
|
|
ユーザーのセッションでプロファイラ・データ収集を停止します。 |
79.1.1 ANALYZEファンクション
このファンクションは、未処理のプロファイラ出力を分析し、データベース表の階層プロファイラ情報を生成します。
構文
DBMS_HPROF.ANALYZE ( location VARCHAR2, filename VARCHAR2, summary_mode BOOLEAN DEFAULT FALSE, trace VARCHAR2 DEFAULT NULL, skip PLS_INTEGER DEFAULT 0, collect PLS_INTEGER DEFAULT NULL, run_comment VARCHAR2 DEFAULT NULL) RETURN NUMBER;
パラメータ
表79-2 ANALYZEファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ディレクトリ・オブジェクトの名前。このディレクトリ・オブジェクトにマップされたファイル・システム・ディレクトリから未処理のプロファイラ・データファイルが読み取られます。出力ファイルもこのディレクトリに書き込まれます。 |
|
|
分析する未処理のプロファイラ・データファイルの名前。このファイルは、 |
|
|
デフォルトでは(つまり、 |
|
|
指定したトレース・エントリをルートとするサブツリーのみが分析されます。デフォルト(traceが トレース・エントリは、引用符で囲まれた特別な修飾形式(スキーマ名、モジュール名およびファンクション名を含む)で指定する必要があり、たとえば、'" |
|
|
|
|
|
|
|
|
この実行に関してユーザーが指定したコメント。 |
戻り値
今回のアナライザ実行に対する一意の実行識別子。この識別子を使用すると、この実行に対応する結果を階層プロファイラ表から検索できます。
使用上のノート
-
rdbms/adminディレクトリにあるdbmshptab.sqlスクリプトを使用して、未処理のプロファイラ・データの分析結果を継続的に格納するための階層プロファイラ・データベース表や他のデータ構造を作成します。 -
dbmshptab.sqlを実行すると、以前に作成された階層プロファイラ表はすべて削除されます。
例
次のコマンドでは、階層プロファイラ表がHRスキーマにインストールされます。
connect HR/<password>;
@?/rdbms/admin/dbmshptab.sql79.1.2 START_PROFILINGプロシージャ
このプロシージャは、ユーザーのセッションで階層プロファイラ・データ収集を開始します。
構文
DBMS_HPROF.START_PROFILING ( location VARCHAR2 DEFAULT NULL, filename VARCHAR2 DEFAULT NULL, max_depth PLS_INTEGER DEFAULT NULL);
パラメータ
表79-3 START_PROFILINGプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ディレクトリ・オブジェクトの名前。このディレクトリ・オブジェクトにマップされたファイル・システム・ディレクトリに、未処理のプロファイラ出力が生成されます。 |
|
|
未処理のプロファイラ・データの出力ファイル名。ファイルは、 |
|
|
デフォルト(つまり、 |
使用上のノート
プロファイラは、max_depthの値よりも深いファンクションを個別に追跡しませんが、これらのファンクションで消費された時間は、max_depthの深さの祖先ファンクションに含まれます。
79.1.3 STOP_PROFILINGプロシージャ
このプロシージャは、ユーザーのセッションでプロファイラ・データ収集を停止します。また、このサブプログラムには、それまでにセッションで収集したデータをフラッシュする副次効果があり、これが実行の終了を示します。
構文
DBMS_HPROF.STOP_PROFILING;
例
未処理のプロファイラ・データ表でのプロファイル
DECLARE
analyze_runid number;
trace_id number;
BEGIN
-- create raw profiler data and analysis tables
-- call create_tables with force_it =>FALSE (default) when
-- raw profiler data and analysis tables do not exist already
DBMS_HPROF.CREATE_TABLES;
-- Start profiling
-- Write raw profiler data in raw profiler data table
trace_id := DBMS_HPROF.START_PROFILING;
-- Run the procedure to be profiled
test;
-- Stop profiling
DBMS_HPROF.STOP_PROFILING;
-- analyzes trace_id entry in raw profiler data table and writes
-- hierarchical profiler information in hprof’s analysis tables
analyze_runid := DBMS_HPROF.ANALYZE(trace_id);
END;
/