V$SQL_PLAN_MONITOR
は、V$SQL_MONITOR
にある、各SQL文に対するプラン・レベルの監視統計を示します。V$SQL_PLAN_MONITOR
内の各行は、監視対象の実行計画の操作に対応します。V$SQL_MONITOR
と同様に、V$SQL_PLAN_MONITOR
内で公開された統計は、通常、文の実行中に毎秒更新されます。これらの統計は、V$SQL_MONITOR
と同様、再利用されます。
SQLプラン監視のオーバーヘッドを回避するために、プランの各操作で収集される統計では、経過時間、CPU時間、I/O時間などの時間情報を記録しません。かわりに、この時間情報は、SQL_ID
、SQL_EXEC_START
、SQL_EXEC_ID
およびSQL_PLAN_LINE_ID
(V$SQL_PLAN_MONITOR
では単純にPLAN_LINE_ID
という)のV$ACTIVE_SESSION_HISTORY
とV$SQL_PLAN_MONITOR
を結合することによって、きわめて正確に見積もることができます。この結合の結果は、プラン内の各操作によって実行されるアクティビティのサンプルで、ここからCPU時間および待機時間の見積りを導出できます。これは、V$ACTIVE_SESSION_HISTORY
で検出される対応アクティビティ・タイプのサンプル数に応じて、V$SQL_MONITOR
で検出される文レベル監視時間の統計情報をブレークすることによって達成されます。
列 | データ型 | 説明 |
---|---|---|
KEY |
NUMBER |
V$SQL_PLAN_MONITOR をV$SQL_MONITOR に効率的に結合するための外部キー(V$SQL_MONITOR を参照) |
STATUS |
VARCHAR2(19) |
SQL実行のステータス:
|
FIRST_REFRESH_TIME |
DATE |
SQL文の監視の開始時刻 |
LAST_REFRESH_TIME |
DATE |
SQL文の統計が前回更新された時刻 |
FIRST_CHANGE_TIME |
DATE |
この操作によって最初に行が生成された時刻 |
LAST_CHANGE_TIME |
DATE |
この操作によって最後に行が生成された時刻 |
REFRESH_COUNT |
NUMBER |
統計がリフレッシュされた回数 |
SID |
NUMBER |
監視対象のSQL文を実行している(または実行が完了した)セッション識別子 |
PROCESS_NAME |
VARCHAR2(5) |
プロセス名識別子 |
SQL_ID |
VARCHAR2(13) |
SQL識別子 |
SQL_EXEC_START |
DATE |
実行の開始時刻 |
SQL_EXEC_ID |
NUMBER |
実行識別子 |
SQL_PLAN_HASH_VALUE |
NUMBER |
SQLプランのハッシュ値 |
SQL_CHILD_ADDRESS |
RAW(4 | 8) |
子カーソルのアドレス |
PLAN_PARENT_ID |
NUMBER |
現行の手順の出力に基づいて動作する、次の実行手順のID |
PLAN_LINE_ID |
NUMBER |
エントリのプランの行番号 |
PLAN_OPERATION |
VARCHAR2(30) |
プランの操作の名前(V$SQL_PLAN からの) |
PLAN_OPTIONS |
VARCHAR2(30) |
プランのオプション名(V$SQL_PLAN からの) |
PLAN_OBJECT_OWNER |
VARCHAR2(30) |
表または索引を含むスキーマを持つユーザーの名前 |
PLAN_OBJECT_NAME |
VARCHAR2(30) |
表名または索引名 |
PLAN_OBJECT_TYPE |
VARCHAR2(20) |
オブジェクトのタイプ |
PLAN_DEPTH |
NUMBER |
ツリー内の操作の深さ(レベル)。レベル情報を取得するために、必ずしもCONNECT BY 文(通常、PLAN_TABLE 表からの行をインデントするために使用)を発行する必要はない。ルート操作(文)は、レベル0です。 |
PLAN_POSITION |
NUMBER |
同じPARENT_ID を持つすべての操作の処理順序 |
PLAN_COST |
NUMBER |
オプティマイザのコストベース方法で見積もった操作コスト。ルールベース方法を使用する文の場合、この列はNULL。 |
PLAN_CARDINALITY |
NUMBER |
コストベースのオプティマイザによる操作によって作成された行数の見積り |
PLAN_BYTES |
NUMBER |
コストベースのオプティマイザによる操作によって作成されたバイト数の見積り |
PLAN_TIME |
NUMBER |
オプティマイザのコストベース方法で見積もった、操作の経過時間(秒)。ルールベース方法を使用する文の場合、この列はNULL。 |
PLAN_PARTITION_START |
VARCHAR2(64) |
アクセスされたパーティション範囲の開始パーティション |
PLAN_PARTITION_STOP |
VARCHAR2(64) |
アクセスされたパーティション範囲の終了パーティション |
PLAN_CPU_COST |
NUMBER |
オプティマイザのコストベース方法で見積もった操作のCPUコスト。ルールベース方法を使用する文の場合、この列はNULL。 |
PLAN_IO_COST |
NUMBER |
オプティマイザのコストベース方法で見積もった操作のI/Oコスト。ルールベース方法を使用する文の場合、この列はNULL。 |
PLAN_TEMP_SPACE |
NUMBER |
オプティマイザのコストベース方法で見積もった操作(ソートまたはハッシュ結合)の一時領域の使用方法。ルールベース方法を使用する文の場合、この列はNULL。 |
STARTS |
NUMBER |
この操作が実行された回数。たとえば、操作は、ネステッド・ループ結合の右側にある場合には複数回実行される(ネステッド・ループ結合左側に入力されている各行の場合は1回)。 |
OUTPUT_ROWS |
NUMBER |
実行が開始されてからこの操作によって生成された行数。この数は、この操作の実行数すべてに対して累積される。STARTS 列の値で割ると、操作の実行当たりの平均行数が算出される。STARTS 列の値は、OUTPUT_ROWS 列の値以上になる。値は通常等しくなるが、内部の最適化の状況次第で大きくなることもある。 |
IO_INTERCONNECT_BYTES |
NUMBER |
Oracle Databaseとストレージ・システムの間で交換されたI/Oのバイト数。Oracleが実行の監視を開始した後のみ保持される。 |
PHYSICAL_READ_REQUESTS |
NUMBER |
監視対象のSQLによって発行された物理読取りI/Oリクエスト数。Oracleが実行の監視を開始した後のみ保持される。 |
PHYSICAL_READ_BYTES |
NUMBER |
監視対象のSQLによってディスクから読み取られたバイト数。Oracleが実行の監視を開始した後のみ保持される。 |
PHYSICAL_WRITE_REQUESTS |
NUMBER |
監視対象のSQLによって発行された物理書込みI/Oリクエスト数。Oracleが実行の監視を開始した後のみ保持される。 |
PHYSICAL_WRITE_BYTES |
NUMBER |
監視対象のSQLによってディスクに書き込まれたバイト数。Oracleが実行の監視を開始した後のみ保持される。 |
WORKAREA_MEM |
NUMBER |
問合せ実行時に操作が使用するメモリー量(バイト)。実行が終了している場合はNULL。これは、ソート、ハッシュ結合、グループ化など、作業領域を使用した操作に対してのみ適用される。 |
WORKAREA_MAX_MEM |
NUMBER |
WORKAREA_MEM の最大値(バイト)。操作が作業領域を使用していない場合はNULL。実行が終了した時点で、この値は、文の実行中にこの操作が消費した最大メモリー量を保持する。 |
WORKAREA_TEMPSEG |
NUMBER |
問合せ実行時に操作が使用する一時領域の量(バイト)。操作がディスクに収容されていないか、実行が終了している場合はNULL。 |
WORKAREA_MAX_TEMPSEG |
NUMBER |
WORKAREA_TEMPSEG の最大値(バイト)。この操作がディスクに収容されていない場合はNULL。実行が終了した時点で、この値は、実行時全体でこの操作が消費した最大一時領域量を保持する。 |