ストアドの行ごとのコストを調べることができる。
実行するには以下の手順で。
■DBMS_PROFILERをインストールする。
sqlplusを起動し、sysユーザで接続する
conn sys/ora_pass@orcl as sysdba
profload.sqlを実行し、パッケージをコンパイルする
@?/rdbms/admin/profload.sql
※@?はORACLE_HOMEを示す
■DBMS_PROFILERで使用するテーブルの作成する。
sqlplusを起動し、DBMS_PROFILERで集計したいユーザで接続する。
proftab.sqlを実行しテーブルを作成する
@?/rdbms/admin/proftab.sql
■データを収集する。
--プロファイラの開始 exec dbms_profiler.start_profiler('hogehoge'); -- PLSQLの実行 DECLARE PA_MESSAGE VARCHAR2(200); v_Return NUMBER; BEGIN v_Return := hogehoge( PA_MESSAGE => PA_MESSAGE ); DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return); END; / --プロファイラの終了 exec dbms_profiler.stop_profiler;
start_profilerの引数は何でもよい。集計テーブルのCOMMENT列に設定される値となる。
■収集したデータを閲覧する。
収集したデータは以下のテーブルに格納される。
PLSQL_PROFILER_RUNS
PLSQL_PROFILER_UNITS
PLSQL_PROFILER_DATA
どの行にどのくらいコストがかかったかはPLSQL_PROFILER_DATAをSelect すれば分かる。
select RUNID, UNIT_NUMBER, LINE#, --行番号 TOTAL_OCCUR, --その行が実行された回数 TOTAL_TIME, --その行の実行時間(合計) 単位:ナノ秒 MIN_TIME, --その行の実行時間(最小) MAX_TIME --その行の実行時間(最大) from PLSQL_PROFILER_DATA order by LINE#
動作確認環境: oracle10g