V$SQL_MONITOR
V$SQL_MONITOR
displays SQL statements whose execution have been (or are being) monitored by Oracle. An entry is created in V$SQL_MONITOR
every time the execution of a SQL statement is being monitored. SQL monitoring is automatically started when a SQL statement runs parallel or when it has consumed at least 5 seconds of CPU or I/O time.When the SQL statement being monitored is executing, statistics in
V$SQL_MONITOR
are generally refreshed in near real time, once every second. Once the execution ends, monitoring information is not deleted immediately. Instead, it is kept in V$SQL_MONITOR
for at least one minute. The entry will eventually be deleted to reclaim its space as new statements are monitored.V$SQL_PLAN_MONITOR
V$SQL_PLAN_MONITOR
displays plan level monitoring statistics for each SQL statement found in V$SQL_MONITOR
. Each row in V$SQL_PLAN_MONITOR
corresponds to an operation of the execution plan being monitored. As with V$SQL_MONITOR
, statistics exposed in V$SQL_PLAN_MONITOR
are generally updated every second when the statement executes. These statistics are recycled on the same basis as V$SQL_MONITOR
.To eliminate the overhead of SQL plan monitoring, statistics collected for each operation of the plan don't record timing information such as elapsed time, CPU time, or I/O time. Instead, this timing information can be estimated quite accurately by joining
V$SQL_PLAN_MONITOR
with V$ACTIVE_SESSION_HISTORY
on SQL_ID
, SQL_EXEC_START
, SQL_EXEC_ID
, and SQL_PLAN_LINE_ID
(simply named PLAN_LINE_ID
in V$SQL_PLAN_MONITOR
). The result of that join is a sample of the activity performed by each operation in the plan, from which an estimate of CPU time and wait time can be derived.