ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
10g リリース2(10.2)
B19245-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

110 DBMS_TRACE

DBMS_TRACEパッケージには、PL/SQLファンクション、プロシージャ、例外をトレースするインタフェースが含まれます。

この章では、次の項目について説明します。


DBMS_TRACEの使用方法


概要

DBMS_TRACEは、セッションでPL/SQLトレースを開始および停止するサブプログラムを提供します。トレース・データはプログラムの実行時に収集され、データベース表に書き込まれます。

一般的なセッションには、次の処理が含まれます。


セキュリティ・モデル

このパッケージは、SYSの下に作成する必要があります。


定数

DBMS_TRACEでは、次の定数を使用します。

trace_all_calls          constant INTEGER := 1;
trace_enabled_calls      constant INTEGER := 2;
trace_all_exceptions     constant INTEGER := 4;
trace_enabled_exceptions constant INTEGER := 8;
trace_all_sql            constant INTEGER := 32;
trace_enabled_sql        constant INTEGER := 64;
trace_all_lines          constant INTEGER := 128;
trace_enabled_lines      constant INTEGER := 256;
trace_stop               constant INTEGER := 16384;
trace_pause              constant INTEGER := 4096;
trace_resume             constant INTEGER := 8192;
trace_limit              constant INTEGER := 16;
trace_major_version      constant BINARY_INTEGER := 1;
trace_minor_version      constant BINARY_INTEGER := 0;

これらの定数についてはすべて記号形式(定数名)を使用することをお薦めします。


制限事項

PL/SQLトレースは、共有サーバー環境では使用できません。


使用上の注意

データ量の制御

大規模なアプリケーションをプロファイルすると、データ量が膨大になる可能性があります。トレース・データの収集に関する特定のプログラム・ユニットを使用可能にして、収集するデータ量を制御できます。

プログラム・ユニットは、コンパイルとデバッグを行って使用可能にできます。次のいずれかの方法で行います。

alter session set plsql_debug=true;
create or replace ... /* create the library units - debug information will be generated */

または

/* recompile specific library unit with debug option */
alter [PROCEDURE | FUNCTION | PACKAGE BODY]  <libunit-name> compile debug;

注意:

2番目の方法は、無名ブロックに対しては使用できません。

SET_PLSQL_TRACEプロシージャのTRACE_LEVELパラメータにTRACE_LIMITを指定することにより、最新の8,192レコード(概算)のみを保持して、データベースで使用する記憶域量を制限できます。

DBMS_TRACE出力を収集するデータベース表の作成

DBMS_TRACEパッケージで出力を書き込むためのデータベース表を作成する必要があります。作成しないと、データが収集されません。このような表を作成するには、TRACETAB.SQLスクリプトを実行してください。このスクリプトで作成した表の所有者は、SYSです。

トレース・データの収集

トレース可能なPL/SQL機能は、DBMSPBT.SQLスクリプトに記述されています。主なトレース機能は次のとおりです。

DBMS_TRACEの追加機能として、トレースの解析と再開および出力の制限もできます。

コールのトレース

使用可能なコールのトレースには、次の2つのレベルがあります。

リモート・プロシージャ・コール(RPC)については、使用可能かどうかを検出できないため、RPCではレベル1でのみトレースできます。


例外のトレース

使用可能な例外のトレースには、次の2つのレベルがあります。


SQLのトレース

使用可能なSQLのトレースには、次の2つのレベルがあります。


行のトレース

使用可能な行のトレースには、次の2つのレベルがあります。

行のトレース時には、行番号が変わるたびにレコードがデータベースに追加されます。プロシージャのコールおよびその戻り値によって行番号が変わる場合も、トレースの対象に含まれます。


注意:

すべてのタイプのトレースでは、レベル1がレベル2を上書きします。たとえば、レベル1とレベル2の両方が使用可能な場合は、レベル1が優先されます。


収集されたデータ

使用可能なプログラム・ユニットについてのみトレースが要求されていて、現行のプログラム・ユニットが使用可能ではない場合、トレース・データは書き込まれません。

コールをトレースする場合は、コールと戻り値の両方がトレースされます。トレースが使用可能であるかどうかのチェックは、コールされるルーチンまたはコールするルーチンのいずれか一方が使用可能な場合に、トレース実施と判断されます。

コールのトレースでは、プログラム・ユニットのタイプ、名前および行番号が常に出力されます。さらに、コール元のスタックの深さが書き込まれます。コール元のユニットが使用可能な場合は、コール側プロシージャ名も出力されます。コールされる側のユニットが使用可能な場合は、コールされるプロシージャ名が出力されます。

例外のトレースでは、行番号が書き込まれます。例外が発生すると、その例外がユーザー定義か事前定義のいずれであるかが示されます。事前定義の例外の場合は例外番号も出力されます。例外が発生した場所とそのハンドラの両方がトレースされます。トレースが使用可能であるかどうかのチェックは、例外が発生した場所と例外がハンドルされた場所で個別に行われます。

DBMS_TRACE.SET_PLSQL_TRACEおよびDBMS_TRACE.CLEAR_PLSQL_TRACEへのコールはすべて、データベースの特別なトレース・レコードに配置されます。したがって、トレース設定が変更された時点を常に確認できます。

トレース管理

収集した項目を確認するのみではなく、トレース処理を一時停止したり、再開することもできます。トレースが一時停止されてから再開されるまでの間、情報は収集されません。一時停止と再開には、定数TRACE_PAUSETRACE_RESUMEを使用します。トレースが一時停止または再開したことを示すためにトレース・レコードが生成されます。

定数TRACE_LIMITを使用すると、最新の8,192トレース・イベントのみを保持できます。これにより、データベースをいっぱいにすることなくトレースを繰り返すことができます。トレースの停止時には、最新の8,192レコードが保存されています。トレース・レコードごとにはチェックされないため、この制限は概算です。少なくとも要求されたトレース・レコードの数は生成され、1,000レコードまでは追加生成できます。


DBMS_TRACEサブプログラムの要約

表110-1 DBMS_TRACEパッケージのサブプログラム

サブプログラム 説明

CLEAR_PLSQL_TRACEプロシージャ


セッションでのトレース・データのダンプを停止します。

PLSQL_TRACE_VERSIONプロシージャ


トレース・パッケージのバージョン番号を取得します。

SET_PLSQL_TRACEプロシージャ


現行のセッションでトレースを開始します。



CLEAR_PLSQL_TRACEプロシージャ

このプロシージャは、トレース・データ収集を使用禁止にします。

構文

DBMS_TRACE.CLEAR_PLSQL_TRACE;

PLSQL_TRACE_VERSIONプロシージャ

このプロシージャは、トレース・パッケージのバージョン番号を取得します。DBMS_TRACEパッケージのバージョン番号とリリース番号を戻します。

構文

DBMS_TRACE.PLSQL_TRACE_VERSION (
   major OUT BINARY_INTEGER,
   minor OUT BINARY_INTEGER);

パラメータ

表110-2 PLSQL_TRACE_VERSIONプロシージャのパラメータ

パラメータ 説明

major

DBMS_TRACEのバージョン番号。

minor

DBMS_TRACEのリリース番号。



SET_PLSQL_TRACEプロシージャ

このプロシージャは、PL/SQLのトレース・データ収集を可能にします。

構文

DBMS_TRACE.SET_PLSQL_TRACE (
   trace_level INTEGER);

パラメータ

表110-3 SET_PLSQL_TRACEプロシージャのパラメータ

パラメータ 説明

trace_level

リストされている1つ以上の定数を指定する必要があります。定数を合計することにより、複数のPL/SQL言語機能のトレースを同時に使用可能にできます。制御定数trace_pause、trace_resumeおよびtrace_stopは、他の定数と組み合せて使用することはできません。

詳細は、「トレース・データの収集」を参照してください。