DB2 Version 10.1 for Linux, UNIX, and Windows

SNAPDYN_SQL 管理ビューおよび SNAP_GET_DYN_SQL 表関数 - dynsql 論理グループのスナップショット情報の検索

SNAPDYN_SQL 管理ビューおよび SNAP_GET_DYN_SQL 表関数は、dynsql 論理データ・グループからのスナップショット情報を戻します。

管理ビューまたは表関数のどちらを使用しているかによって、以下のいずれかのセクションを参照してください。

SNAPDYN_SQL 管理ビュー

この管理ビューを使用すると、現在接続されているデータベースに関する dynsql 論理グループのスナップショット情報を検索できます。

このビューは、GET SNAPSHOT FOR DYNAMIC SQL ON database-alias CLP コマンドと同等の情報を戻します。

スキーマは SYSIBMADM です。

戻される可能性のある情報の完全なリストは、表 1 を参照してください。

許可

このビューを使用するには、以下のいずれかの許可が必要です。
  • SNAPDYN_SQL 管理ビューに対する SELECT 特権
  • SNAPDYN_SQL 管理ビューに対する CONTROL 特権
  • DATAACCESS 権限
  • DBADM 権限
  • SQLADM 権限
この表関数を使用するには、以下のいずれかの権限が必要です。
  • SNAP_GET_DYN_SQL 表関数に対する EXECUTE 特権
  • DATAACCESS 権限
  • DBADM 権限
  • SQLADM 権限
さらに、スナップショット・モニター・データにアクセスするには、以下のいずれかの権限も必要です。
  • SYSMON
  • SYSCTRL
  • SYSMAINT
  • SYSADM

デフォルトの PUBLIC 特権

制限のないデータベースでは、このビューが自動的に作成されると、SELECT 特権が PUBLIC に付与されます。

現在接続されているデータベース上で実行された動的 SQL のリストを、読み取られた行数の順序で取得します。
SELECT PREP_TIME_WORST, NUM_COMPILATIONS, SUBSTR(STMT_TEXT, 1, 60) 
   AS STMT_TEXT, DBPARTITIONNUM 
   FROM SYSIBMADM.SNAPDYN_SQL ORDER BY ROWS_READ
以下はこの照会の出力例です。
PREP_TIME_WORST      NUM_COMPILATIONS     ...
-------------------- -------------------- ...
                  98                    1 ...
                   9                    1 ...
                   0                    0 ...
                   0                    1 ...
                   0                    1 ...
                   0                    1 ...
                   0                    1 ...
                   0                    1 ...
                  40                    1 ...

  9 record(s) selected.
この照会からの出力 (続き)。
... STMT_TEXT                                                    ...
... ------------------------------------------------------------ ...
... select prep_time_worst, num_compilations, substr(stmt_text,  ...
... select * from dbuser.employee                                ...
... SET CURRENT LOCALE LC_CTYPE = 'en_US'                        ...
... select prep_time_worst, num_compilations, substr(stmt_text,  ...
... select prep_time_worst, num_compilations, substr(stmt_text,  ...
... select * from dbuser.employee                                ...
... insert into dbuser.employee values(1)                        ...
... select * from dbuser.employee                                ...
... insert into dbuser.employee values(1)                        ...
この照会からの出力 (続き)。
... DBPARTITIONNUM
... --------------
...              0
...              0
...              0
...              2
...              1
...              2
...              2
...              1
...              0

SNAP_GET_DYN_SQL 表関数

SNAP_GET_DYN_SQL 表関数は SNAPDYN_SQL 管理ビューと同じ情報を戻しますが、特定のデータベース・メンバー、すべてのデータベース・メンバーの集約、またはすべてのデータベース・メンバーのいずれかの特定のデータベースを対象とした情報を検索することができます。

この表関数は、GET SNAPSHOT FOR DYNAMIC SQL ON database-alias CLP コマンドと同等の情報を戻します。

戻される可能性のある情報の完全なリストは、表 1 を参照してください。

構文

構文図を読む構文図をスキップする
>>-SNAP_GET_DYN_SQL--(--dbname--+----------+--)----------------><
                                '-, member-'      

スキーマは SYSPROC です。

表関数パラメーター

dbname
現在接続されているデータベースと同じインスタンス内の有効なデータベース名を指定する、タイプ VARCHAR(128) の入力引数。 "Indirect" または "Home" のディレクトリー項目タイプを持つデータベース名を指定します。 このディレクトリー項目タイプは、LIST DATABASE DIRECTORY コマンドで確認できます。 現在接続されているデータベースからのスナップショットを取得するには、NULL または空ストリングを指定します。
member
有効なデータベース・メンバー番号を指定する、タイプ INTEGER のオプションの入力引数。現在のメンバーの場合は -1、すべてのアクティブなメンバーの集合の場合は -2 を指定します。 dbnameNULL に設定せずに、memberNULL に設定すると、member は暗黙的に -1 に設定されます。この入力オプションを使用しない場合、つまり dbname のみを指定する場合、データベースがアクティブなメンバーからデータが戻されます。

dbnamemember の両方を NULL に設定すると、SNAP_WRITE_FILE プロシージャーにより作成されるファイルからのデータの読み取りが試行されます。このファイルはいつでも作成される可能性があるため、データは現行のものであるとは限らないことに注意してください。 対応するスナップショット API 要求タイプを持つファイルが存在しない場合、SNAP_GET_DYN_SQL 表関数は、現在接続中のデータベースおよびデータベース・メンバー番号のスナップショットを取得します。

許可

以下のいずれかの権限が必要です。
  • SNAP_GET_DYN_SQL 表関数に対する EXECUTE 特権
  • DATAACCESS 権限
さらに、スナップショット・モニター・データにアクセスするには、以下のいずれかの権限も必要です。
  • SYSMON
  • SYSCTRL
  • SYSMAINT
  • SYSADM

デフォルトの PUBLIC 特権

制限のないデータベースでは、この関数が自動的に作成されると、EXECUTE 特権が PUBLIC に付与されます。

現在接続されているデータベース上で実行された動的 SQL のリストを、読み取られた行数の順序で取得します。
SELECT PREP_TIME_WORST, NUM_COMPILATIONS, SUBSTR(STMT_TEXT, 1, 60) 
   AS STMT_TEXT FROM TABLE(SNAP_GET_DYN_SQL('',-1)) as T
    ORDER BY ROWS_READ 
以下はこの照会の出力例です。
PREP_TIME_WORST      NUM_COMPILATIONS      ...
-------------------- ---------------------...
                   0                    0 ...
                  49                    1 ...
                   0                    0 ...
                  46                    1 ...
                   0                    0 ...
                   0                    0 ...
                   0                    0 ...
                  29                    1 ...
                   0                    0 ...
                   0                    0 ...
                  10                    1 ...
                   0                    0 ...
                   4                    0 ...
                  53                    0 ...
                   0                    0 ...
                   6                    1 ...
                 334                    0 ...
                   0                    0 ...
                   5                    0 ...
                  10                    0 ...
                 599                    0 ...
                  15                    1 ...
                   7                    0 ...

  23 record(s) selected.
この照会からの出力 (続き)。
... STMT_TEXT
... -----------------------------------------------------------
... SET :HV00017  :HI00017  = RPAD(VARCHAR(:HV00035  :HI00035 ),
... SELECT COLNAME, TYPENAME FROM  SYSCAT.COLUMNS WHERE TABNAME=
... DECLARE RES CURSOR WITH RETURN TO CALLER FOR SELECT R.TEXT F
... SELECT PREP_TIME_WORST, NUM_COMPILATIONS, SUBSTR(STMT_TEXT, 
... VALUES (:HV00026  :HI00026  + 1, :HV00024  :HI00024  + 1) IN
... VALUES (:HV00035  :HI00035  + 1, :HV00024  :HI00024  + 1) IN
... VALUES (1) INTO :HV00035  :HI00035                          
... SELECT TRIGNAME FROM  SYSCAT.TRIGGERS WHERE TABNAME='POLICY'
... VALUES (:HV00024  :HI00024 +1, :HV00022  :HI00022 +1) INTO :
... VALUES (1, CARDINALITY(CAST(:HV00040  :HI00040  AS "SYSIBMAD
... CALL SYSPROC.SYSINSTALLOBJECTS('POLICY','V','','')          
... SET :HV00017  :HI00017  = RPAD(VARCHAR(:HV00035  :HI00035 ),
... drop event monitor act                                      
... SELECT TABSCHEMA, TABNAME, TYPE, STATUS, TBSPACEID, PROPERTY
... CALL SAVE_EXEC_INFO (CAST(:HV00040  :HI00040  AS "SYSIBMADM"
... SET CURRENT LOCK TIMEOUT 5                                  
... SELECT TABNAME FROM SYSCAT.PERIODS WHERE PERIODNAME = 'SYSTE
... SELECT ARRAY_AGG(P.EXECUTABLE_ID ORDER BY M.IO_WAIT_TIME DES
... SET CURRENT ISOLATION RESET                                 
... CALL monreport.pkgcache()                                   
... SELECT A.SPECIFICNAME FROM SYSCAT.ROUTINES A WHERE (A.FENCED
... SELECT POLICY FROM SYSTOOLS.POLICY WHERE MED='DB2CommonMED' 
... VALUES 0                                                    

  23 record(s) selected.
ワークロードの実行後に、ユーザーは次の照会を表関数とともに使用できます。
SELECT STATS_FABRICATE_TIME,SYNC_RUNSTATS_TIME 
   FROM TABLE (SNAP_GET_DYN_SQL('mytestdb', -1)) 
   AS SNAPDB

STATS_FABRICATE_TIME   SYNC_RUNSTATS_TIME
---------------------- ------------------
                     2                 12
                     1                 30
この表関数に基づくビューの場合:
SELECT STATS_FABRICATE_TIME,SYNC_RUNSTATS_TIME 
   FROM SYSIBMADM.SNAPDYN_SQL  

STATS_FABRICATE_TIME   SYNC_RUNSTATS_TIME 
---------------------- ------------------ 
                     5                 10 
                     3                 20 
  2 record(s) selected.

戻される情報

表 1. SNAPDYN_SQL 管理ビューおよび SNAP_GET_DYN_SQL 表関数によって戻される情報
列名 データ・タイプ 説明または対応するモニター・エレメント
SNAPSHOT_TIMESTAMP TIMESTAMP スナップショットがとられた日時。
NUM_EXECUTIONS BIGINT num_executions - ステートメント実行回数
NUM_COMPILATIONS BIGINT num_compilations - ステートメント・コンパイル数
PREP_TIME_WORST BIGINT prep_time_worst - ステートメント最長準備時間
PREP_TIME_BEST BIGINT prep_time_best - ステートメント最短準備時間
INT_ROWS_DELETED BIGINT int_rows_deleted - 削除された内部行数
INT_ROWS_INSERTED BIGINT int_rows_inserted - 挿入された内部行数
INT_ROWS_UPDATED BIGINT int_rows_updated - 更新された内部行数
ROWS_READ BIGINT rows_read - 読み取り行数
ROWS_WRITTEN BIGINT rows_written - 書き込み行数
STMT_SORTS BIGINT stmt_sorts - ステートメント・ソート回数
SORT_OVERFLOWS BIGINT sort_overflows - ソート・オーバーフロー
TOTAL_SORT_TIME BIGINT total_sort_time - ソート時間合計
POOL_DATA_L_READS BIGINT pool_data_l_reads - バッファー・プール・データの論理読み取り
POOL_DATA_P_READS BIGINT pool_data_p_reads - バッファー・プール・データの物理読み取り
POOL_TEMP_DATA_L_READS BIGINT pool_temp_data_l_reads - バッファー・プール一時データの論理読み取り
POOL_TEMP_DATA_P_READS BIGINT pool_temp_data_p_reads - バッファー・プール一時データの物理読み取り
POOL_INDEX_L_READS BIGINT pool_index_l_reads - バッファー・プール索引の論理読み取り
POOL_INDEX_P_READS BIGINT pool_index_p_reads - バッファー・プール索引の物理読み取り
POOL_TEMP_INDEX_L_READS BIGINT pool_temp_index_l_reads - バッファー・プール一時索引の論理読み取り
POOL_TEMP_INDEX_P_READS BIGINT pool_temp_index_p_reads - バッファー・プール一時索引の物理読み取り
POOL_XDA_L_READS BIGINT pool_xda_l_reads - バッファー・プール XDA データの論理読み取り
POOL_XDA_P_READS BIGINT pool_xda_p_reads - バッファー・プール XDA データの物理読み取り
POOL_TEMP_XDA_L_READS BIGINT pool_temp_xda_l_reads - バッファー・プール一時 XDA データの論理読み取り
POOL_TEMP_XDA_P_READS BIGINT pool_temp_xda_p_reads - バッファー・プール一時 XDA データの物理読み取り : モニター・エレメント
TOTAL_EXEC_TIME BIGINT total_exec_time - ステートメント実行の経過時間 (秒単位)*
TOTAL_EXEC_TIME_MS BIGINT total_exec_time - ステートメント実行の経過時間 (小数のマイクロ秒単位)*
TOTAL_USR_CPU_TIME BIGINT total_usr_cpu_time - ステートメントのユーザー CPU の合計 (秒単位)*
TOTAL_USR_CPU_TIME_MS BIGINT total_usr_cpu_time - ステートメントのユーザー CPU の合計 (小数のマイクロ秒単位)*
TOTAL_SYS_CPU_TIME BIGINT total_sys_cpu_time - ステートメントのシステム CPU の合計 (秒単位)*
TOTAL_SYS_CPU_TIME_MS BIGINT total_sys_cpu_time - ステートメントのシステム CPU の合計 (小数のマイクロ秒単位)*
STMT_TEXT CLOB(2 M) stmt_text - SQL 動的ステートメント・テキスト
DBPARTITIONNUM SMALLINT dbpartitionnum - データベース・パーティション番号モニター・エレメント
STATS_FABRICATE_TIME BIGINT 動的ステートメントの照会コンパイル中に表または索引のスキャンを実行しないで、システムが必要とされる統計を作成するのに費やす合計時間 (ミリ秒)。
SYNC_RUNSTATS_TIME BIGINT 動的ステートメントの照会コンパイル中に同期 statistics-collect アクティビティーに費やされる合計時間 (ミリ秒)。
MEMBER SMALLINT member - データベース・メンバー・モニター・エレメント
* この列の元になるモニター・エレメントの合計消費時間を計算するには、このモニター・エレメントに関する _S で終わっている列で報告されている整数秒と、このモニター・エレメントに関する _MS で終わっている列に報告されている小数秒を、次の式を使用して加算しなければなりません: (monitor-element-name_S × 1,000,000 + monitor-element-name_MS) ÷ 1,000,000. 例えば、(ELAPSED_EXEC_TIME_S × 1,000,000 + ELAPSED_EXEC_TIME_MS) ÷ 1,000,000。