例: 無名ブロックの集約ルーチン・メトリックのリスト作成

ルーチン・モニターを使用すると、無名ブロックで実行されるステートメントの集約メトリックのリストを作成できます。

シナリオ

この例では、データベース管理者 (DBA) がステートメント・テキスト 'BEGIN ... END' の無名ブロックによって実行されるすべてのステートメントに関する集約メトリックを表示しようとしています。 DBA は以下の照会を発行し、パッケージ・キャッシュ内で無名ブロックの executable_id を検索します。
SELECT EXECUTABLE_ID 
   FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL,NULL,-1)) AS T 
   WHERE STMT_TEXT = 'BEGIN BLAH BLAH END'
返される結果は、次のとおりです。
EXECUTABLE_ID                                               
-------------------------------------------------------------------
x'01000000000000007A0000000000000000000000020020120801153841789993'

  1 record(s) selected.
DBA は、返された executable_id を使用して以下の照会を発行し、対象の無名ブロックの集約メトリックを検索します。
SELECT * FROM TABLE(MON_GET_ROUTINE('A', NULL,NULL,NULL,-2)) AS T 
   WHERE DYN_COMPOUND_EXEC_ID =  x'01000000000000007A0000000000000000000000020020120801153841789993'
返される結果は、次のとおりです。
ROUTINETYPE ROUTINESCHEMA   ROUTINEMODULENAME  ROUTINENAME                 SPECIFICNAME         DYN_COMPOUND_EXEC_ID                                               
----------- --------------- ------------------ --------------------------- -------------------- -------------------------------------------------------------------
C           SYSIBMINTERNAL  -                  COMPILED_ANON_BLOCK_INVOKE  SQL120801153841490   x'01000000000000007A0000000000000000000000020020120801153841789993'

  1 record(s) selected.

または、DBA は MON_GET_SECTION_ROUTINE 表関数を使用して無名ブロックに対応する内部プロシージャーとスキーマ名を検索し、それらの値を MON_GET_ROUTINE 表関数への入力として渡すこともできます。 この方法の場合に戻されるのは無名ブロックに関する情報だけなので、WHERE 節を使用して出力をフィルター処理する必要はありません。