Activity, whole spanASH active sessions across every compared window, by wait class and by wait event
These charts are drawn by the page script, so they need JavaScript. ASH is not scored: every scored number is in the tables below.
compared windowCurrentpinned
No ASH samples in DBA_HIST_ACTIVE_SESS_HISTORY across the compared span.
By wait class
By wait event
Hover for the values; drag across either chart to zoom both (6 hours or less shows the compared windows minute by minute), double-click to reset. Click a shaded window to pin it: the Timeline grid compares against it. Hover a wait class or event to highlight it (a class also lights its events): from the legend it is drawn from zero with the y axis fitted to it, so its shape over time reads directly. Click its band, or Shift+click the legend entry, to keep it; Esc clears.
Nothing moved beyond its normal range.
All 18 scored metrics sit within their normal range over the prior 4 windows.
WITH cdb_last_failed_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'FAILED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_last_succeeded_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'SUCCEEDED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_la…
select json_object(
'collected_at' value to_char(sys_extract_utc(systimestamp), 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'log_type' value 'oracle_metrics',
'event' value json_object('outcome' value 'success'),
'oracle' value json_object(
'metric' value json_object('type' value 'tablespace'),
'database' value json_object('name' value sys_context('USERENV', 'DB_UNIQUE_NAME')),
'tablesp…
SELECT /*+ NO_STATEMENT_QUEUING RESULT_CACHE (SYSOBJ=TRUE SHELFLIFE=30) */ "PROPERTY_NAME","PROPERTY_VALUE" FROM "SYS"."DATABASE_PROPERTIES" "K" WHERE "K"."PROPERTY_NAME"='GLOBAL_DB_NAME' AND 1=1
select xmlagg(
xmlelement("operation",
xmlattributes(operation as "name",
options as "options",
id as "id",
depth as "depth",
position as "pos"),
nvl2(object_na…
declare
policy varchar2(512);
alldest number := dbms_rcvman.FALSE#;
rlgscn number;
begin
if (:alldest > 0) then
alldest := dbms_rcvman.TRUE#;
end if;
dbms_rcvman.setRecoveryDestFile(TRUE);
dbms_rcvman.getRedoLogDeletionPolicy(policy => policy);
dbms_rcvman.setRedoLogDeletionPolic…
declare
policy varchar2(512);
alldest number := dbms_rcvman.FALSE#;
rlgscn number;
begin
if (:alldest > 0) then
alldest := dbms_rcvman.TRUE#;
end if;
dbms_rcvman.setRecoveryDestFile(TRUE);
dbms_rcvman.getRedoLogDeletionPolicy(policy => policy);
dbms_rcvman.setRedoLogDeletionPolic…
select json_object(
'collected_at' value to_char(sys_extract_utc(systimestamp), 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'log_type' value 'oracle_metrics',
'event' value json_object('outcome' value 'success'),
'oracle' value json_object(
'metric' value json_object('type' value 'tablespace'),
'database' value json_object('name' value sys_context('USERENV', 'DB_UNIQUE_NAME')),
'tablesp…
select xmlagg(
xmlelement("operation",
xmlattributes(operation as "name",
options as "options",
id as "id",
depth as "depth",
position as "pos"),
nvl2(object_na…
SELECT TO_CHAR(current_timestamp AT TIME ZONE 'GMT', 'YYYY-MM-DD HH24:MI:SS TZD') AS curr_timestamp, SUM(failed_count) AS failed_count , TO_CHAR(MIN(first_occur_time), 'yyyy-mm-dd hh24:mi:ss') AS first_occur_time, TO_CHAR(MAX(last_occur_time), 'yyyy-mm-dd hh24:mi:ss') AS last_occur_time, name FROM (SELECT COUNT(DBUSERNAME) AS failed_count, MIN(event_timestamp) AS first_occur_time, MAX(even…
select count(*) from dba_autotask_window_clients c, (select window_name, max(log_date) max_log_date from dba_scheduler_window_log where operation = 'OPEN' group by window_name) wo, (select window_name, max(log_date) max_log_date from dba_scheduler_window_log where operation = 'CLOSE' group by window_name) wc where c.window_name = wo.window_name and c.optimizer_stats = 'ENABLED' and wo.window_name …
select s.ts#, s.file#, s.block#, so.object_id, s.spare1, s.type#, s.hwmincr from seg$ s, sys_objects so where bitand(s.spare1,131072) = 0 and s.ts# = so.ts_number and s.file# = so.header_file and s.block# = so.header_block order by s.file# asc
WITH cdb_last_failed_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'FAILED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_last_succeeded_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'SUCCEEDED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_la…
select json_object(
'collected_at' value to_char(sys_extract_utc(systimestamp), 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'log_type' value 'oracle_metrics',
'event' value json_object('outcome' value 'success'),
'log' value json_object('level' value 'INFO'),
'oracle' value json_object(
'metric' value json_object('type' value 'health'),
'database' value json_object(
'name' value d.d…
select /*+ connect_by_filtering index(sysauth$ i_sysauth1) */ privilege#, bitand(nvl(option$, 0), 72), grantee#, level from sysauth$ connect by grantee#=prior privilege# and privilege#>0 start with grantee#=:1 and privilege#>0
SELECT /*+ NO_STATEMENT_QUEUING RESULT_CACHE (SYSOBJ=TRUE SHELFLIFE=30) */ "DBUSERNAME","EVENT_TIMESTAMP","ACTION_NAME","RETURN_CODE" FROM "AUDSYS"."UNIFIED_AUDIT_TRAIL" "K" WHERE "K"."ACTION_NAME"='LOGON' AND "K"."RETURN_CODE"<>0 AND SYS_EXTRACT_UTC("K"."EVENT_TIMESTAMP")>=SYS_EXTRACT_UTC(CURRENT_TIMESTAMP(6)-TO_DSINTERVAL('0 0:30:00'))
select /* QOSH:ANLYZ_TIME */ from_tz( cast ((max(analyzetime) - 1) as timestamp), to_char(systimestamp, 'TZH:TZM')) from sys.tab$ where analyzetime is not null
WITH cdb_last_failed_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'FAILED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_last_succeeded_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'SUCCEEDED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_la…
select s.ts#, s.file#, s.block#, so.object_id, s.spare1, s.type#, s.hwmincr from seg$ s, sys_objects so where bitand(s.spare1,131072) = 0 and s.ts# = so.ts_number and s.file# = so.header_file and s.block# = so.header_block order by s.file# asc
select 'INTER_MEDIA' as name, decode((select username from dba_users where username='ORDSYS'), 'ORDSYS', 'TRUE', 'FALSE') as selected
from dual
union
select 'SPATIAL' as name, decode((select username from dba_users where username='MDSYS'), 'MDSYS', 'TRUE', 'FALSE') as selected
from dual
union
select 'ORACLE_TEXT' as name, decode((select username from dba_users where username='CTXSYS'), 'CTXSYS', …
select cons.consumer_name
from sys.dba_queue_subscribers cons
left join sys.user$ us
on replace(cons.consumer_name,'SCHED$_AGT2$_')=us.user#
where
cons.queue_name='SCHEDULER$_EVENT_QUEUE' and
cons.consumer_name like 'SCHED$_AGT2$_%' and
us.user# is null
select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, nvl(property,0),subname,type#,flags,d_attrs from dependency$ d, obj$ o where d_obj#=:1 and p_obj#=obj#(+) order by order#
select /*+ connect_by_filtering index(sysauth$ i_sysauth1) */ privilege#, bitand(nvl(option$, 0), 72), grantee#, level from sysauth$ connect by grantee#=prior privilege# and privilege#>0 start with grantee#=:1 and privilege#>0
declare
agedFileRec dbms_rcvman.agedFileRec_t;
first boolean := FALSE;
alldest number := dbms_rcvman.FALSE#;
policy varchar2(512);
begin
if (:first > 0) then
first := TRUE;
if (:alldest > 0) then
alldest := dbms_rcvman.TRUE#;
end if;
dbms_rcvman.setR…
SELECT nonprimarydb.name as pdbName
,MAX(CASE WHEN takecdbstatus.open_mode LIKE 'MOUNT%' THEN 1
WHEN takecdbstatus.open_mode LIKE 'READ%' THEN 1
ELSE 0
END) as state_num
FROM gv$containers nonprimarydb
,gv$containers takecdbstatus
WHERE nonprimarydb.name <> 'PDB$SEED'
AND takecdbstatus.name = 'CDB$ROOT'
AND ((sys_context('USERENV','CURRENT_USER') like 'SYS%' AND takecdbstatus.open_mode LIKE 'MOU…
select pob.parttype from sys.tabpart$ tp, sys.partobj$ pob where tp.bo# = pob.obj# and tp.obj# = :oid
apkz5my1bt69sSYS update chaos.locks set v=v+1 where id=2
3.081
▼ 0.1%
#1 by elapsed
7jdsnpg2pzzfdSYS update chaos.locks set v=v+1 where id=1
2.080
▼ 0.3%
#2 by elapsed
fhf8upax5cxszSYS BEGIN sys.dbms_auto_report_internal.i_save_report (:rep_ref, :snap_id, :pr_class,
0.9339
▼ 26.2%
#3 by elapsed
0w26sk6t6gq98SYS SELECT XMLTYPE(DBMS_REPORT.GET_REPORT_WITH_SUMMARY(:B1 )) FROM DUAL
0.7192
▼ 30.6%
#4 by elapsed
0za9fv0j1vgkkSYS WITH MONITOR_DATA AS (SELECT * FROM TABLE(GV$(CURSOR( SELECT USERENV('instance') AS INST_I
0.5646
▼ 31.3%
#5 by elapsed
9pd2ghtwmafzgSYS BEGIN dbms_drs.do_observe(:indoc, :outdoc); END;
0.5166
▼ 14.5%
#6 by elapsed
plan stable No plan_hash_value changes detected for any of the 58 top SQL across the compared windows.
Per-SQL detail
Click a row for the full text, plan summary and per-snapshot timeline (a colour change = a plan switch). Ranked in: Elapsed, CPU, Gets, Reads, eXecutions; solid = in that ranking's current top 3.
WITH cdb_last_failed_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS …
Parsing schema
SYS
Module
emagent_SQL_oracle_database
Action
cdbjob_status
Optimizer mode
ALL_ROWS
Force-match sig
13562461939718721680
SQL profile
—
Text length
3,039 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
542043329
2026-08-23 11:38
2026-09-27 16:45
1,123
1,132
0.3516
2,073
WITH cdb_last_failed_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'FAILED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_last_succeeded_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
MAX(ACTUAL_START_DATE) AS START_DATE
FROM CDB_SCHEDULER_JOB_RUN_DETAILS
WHERE STATUS = 'SUCCEEDED'
GROUP BY CON_ID, OWNER, JOB_NAME
)
,
cdb_last_failed_jobs_with_earlier_success AS
(
SELECT cdb_last_failed_jobs.CON_ID,
cdb_last_failed_jobs.OWNER,
cdb_last_failed_jobs.JOB_NAME,
cdb_last_failed_jobs.START_DATE
FROM cdb_last_failed_jobs,
cdb_last_succeeded_jobs
WHERE cdb_last_failed_jobs.CON_ID = cdb_last_succeeded_jobs.CON_ID
AND cdb_last_failed_jobs.OWNER = cdb_last_succeeded_jobs.OWNER
AND cdb_last_failed_jobs.JOB_NAME = cdb_last_succeeded_jobs.JOB_NAME
AND cdb_last_failed_jobs.START_DATE < cdb_last_succeeded_jobs.START_DATE
)
,
cdb_last_failed_jobs_without_earlier_success AS
(
SELECT UNIQUE cdb_last_failed_jobs.CON_ID,
cdb_last_failed_jobs.OWNER,
cdb_last_failed_jobs.JOB_NAME,
cdb_last_failed_jobs.START_DATE
FROM cdb_last_failed_jobs, cdb_last_succeeded_jobs
WHERE (cdb_last_failed_jobs.CON_ID != cdb_last_succeeded_jobs.CON_ID)
OR (cdb_last_failed_jobs.OWNER != cdb_last_succeeded_jobs.OWNER)
OR (cdb_last_failed_jobs.JOB_NAME != cdb_last_succeeded_jobs.JOB_NAME)
)
,
cdb_latest_run_failed_jobs AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
START_DATE
FROM cdb_last_failed_jobs_without_earlier_success
UNION
SELECT CON_ID,
OWNER,
JOB_NAME,
START_DATE
FROM cdb_last_failed_jobs_with_earlier_success
),
cdb_final_latest_run_failed_jobs_set AS
(
SELECT CON_ID,
OWNER,
JOB_NAME,
START_DATE
FROM cdb_latest_run_failed_jobs
WHERE JOB_NAME NOT IN (SELECT JOB_NAME FROM CDB_SCHEDULER_JOBS WHERE STATE IN ('BROKEN', 'DISABLED'))
)
,
cdb_failed_count_job_set AS (
SELECT CON_ID, SUM(sub_fail_count) AS failed_count
FROM (
SELECT CON_ID, count(1) AS sub_fail_count
FROM cdb_final_latest_run_failed_jobs_set
GROUP BY CON_ID
UNION ALL
SELECT CON_ID, count(1) AS sub_fail_count
FROM CDB_JOBS WHERE (broken != 'Y' AND NVL(failures,0) > 0)
GROUP BY CON_ID
)
GROUP BY CON_ID
)
,
cdb_broken_count_job_set AS (
SELECT CON_ID, SUM(sub_broken_count) AS broken_count
FROM (
SELECT CON_ID, count(1) AS sub_broken_count
FROM CDB_SCHEDULER_JOBS
WHERE STATE = 'BROKEN'
GROUP BY CON_ID
UNION ALL
SELECT CON_ID, count(1) AS sub_broken_count
FROM CDB_JOBS
WHERE BROKEN = 'Y'
GROUP BY CON_ID
)
GROUP BY CON_ID
)
,
cdb_final_count_details AS (
SELECT F.CON_ID AS CON_ID,
NVL(F.failed_count,0) AS FAILED,
NVL(B.broken_count,0) AS BROKEN
FROM cdb_failed_count_job_set F LEFT JOIN cdb_broken_count_job_set B
ON F.CON_ID = B.CON_ID
UNION
SELECT B.CON_ID,
NVL(F.failed_count,0) AS FAILED,
NVL(B.broken_count,0) AS BROKEN
FROM cdb_broken_count_job_set B LEFT JOIN cdb_failed_count_job_set F
ON B.CON_ID = F.CON_ID
)
SELECT c.name AS pdb_name,
cdb_final_count_details.broken,
cdb_final_count_details.failed
FROM cdb_final_count_details, v$containers c
WHERE cdb_final_count_details.con_id = TO_NUMBER(c.con_id)
with pdbview AS
(select con_id, name from v$containers where con_id != 2)
SELECT pdb.nam…
Parsing schema
SYS
Module
emagent_SQL_oracle_database
Action
cdb_dbNInstanceInfo
Optimizer mode
ALL_ROWS
Force-match sig
15305793011113631743
SQL profile
—
Text length
2,604 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
576180558
2026-08-24 00:15
2026-09-26 03:45
27
27
0.4936
1,131
with pdbview AS
(select con_id, name from v$containers where con_id != 2)
SELECT pdb.name,
a.name "DB Name",
e.property_value "Global Name",
replace(b.banner, c.version, c.version_full) "DB Version",
c.host_name "Host Name",
c.instance_name "Instance Name" ,
to_char(c.startup_time,'YYYY-MM-DD HH24:MI:SS') "Instance Start Time",
decode(c.logins,'RESTRICTED','YES','NO') "Restricted Mode",
a.log_mode "Archive Log Mode" ,
case when pdb.con_id=0
then
decode(a.open_mode,'READ ONLY','YES','NO')
else
decode(vpb.OPEN_MODE,'READ ONLY','YES','NO')
end
"Read Only Mode",
nlsp1.value,
nlsp2.value,
p.property_value,
to_char(a.created,'YYYY-MM-DD HH24:MI:SS') created,
substr(banner,instr(banner,'Oracle Database '),19) release,
nvl(trim(substr(banner,instr(banner,'Oracle Database ')+19,instr(banner,' Release') - instr(banner,'Oracle Database ') - 19)),decode(instr(banner,'Personal'),0,'','Personal')) edition,
c.version_full dbversion,
DECODE(addr.word_len, 64, '1', '0') is64bit,
substr(substr(banner, instr(banner, '-') + 2),
instr(substr(banner, instr(banner, '-') + 2),' ')+1)
rel_status,
a.supplemental_log_data_min as sup_log_data_min,
case when (select count(*) from cdb_users u where u.username ='DVSYS' and u.user_id = 1279990 and u.con_id = pdb.con_id) > 0
then
case when (select value from v$option o where o.parameter ='Oracle Database Vault' and (o.con_id = pdb.con_id or o.con_id = 0)) ='TRUE'
then
1 -- Enabled
else
0 --Disabled
end
when (select count(*) from cdb_users u where u.username ='DVSYS' and u.user_id = 1279990 and u.con_id = pdb.con_id) = 0
then
case when (select value from v$option o where parameter ='Oracle Database Vault' and (o.con_id = pdb.con_id or o.con_id = 0)) = 'TRUE'
then
-1 -- Not Configured
else
-2 -- Not Installed
end
end
dv_status_code
FROM v$database a,
v$version b,
v$instance c,
CDB_PROPERTIES e,
v$nls_parameters nlsp1,
v$nls_parameters nlsp2,
CDB_PROPERTIES p,
(select length(addr)*4 word_len from v$process where rownum=1) addr,
pdbview pdb,
V$PDBS vpb
WHERE b.banner LIKE '%Oracle%'
AND nlsp1.parameter = 'NLS_CHARACTERSET'
AND nlsp2.parameter = 'NLS_NCHAR_CHARACTERSET'
AND e.property_name = 'GLOBAL_DB_NAME'
AND p.property_name = 'DEFAULT_TEMP_TABLESPACE'
AND (a.con_id = pdb.con_id OR a.con_id = 0)
AND (b.con_id = pdb.con_id OR b.con_id = 0)
AND (c.con_id = pdb.con_id OR c.con_id = 0)
AND (nlsp1.con_id = pdb.con_id OR nlsp1.con_id = 0 OR nlsp1.con_id = 1)
AND (nlsp2.con_id = pdb.con_id OR nlsp2.con_id = 0 OR nlsp2.con_id = 1)
AND e.con_id = pdb.con_id
AND p.con_id = pdb.con_id
AND vpb.con_id(+) = pdb.con_id
UPDATE wrh$_seg_stat_obj ob SET (snap_id, owner, object_name, subobject_name, tab…
Parsing schema
SYS
Module
—
Action
—
Optimizer mode
CHOOSE
Force-match sig
7169017389194603904
SQL profile
—
Text length
2,772 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
815229885
2026-08-23 21:30
2026-09-27 16:00
215
645
0.009733
283.8
UPDATE wrh$_seg_stat_obj ob SET (snap_id, owner, object_name, subobject_name, tablespace_name, object_type, partition_type, index_type, base_obj#, base_object_name, base_object_owner) = (SELECT snap_id + 1, nvl(ownername_kewrseg, owner), nvl(objname_kewrseg, object_name), nvl(subobjname_kewrseg, subobject_name), nvl(tsname_kewrseg, tablespace_name), decode(objtype_kewrseg, 0, object_type, sys.dbms_swrf_internal.awr_decode_object_type(objtype_kewrseg, 18)), decode(ptype_kewrseg, 0, partition_type, decode(ptype_kewrseg, 0, 'NONE', 1, 'RANGE', 2, 'HASH', 3, 'SYSTEM', 4, 'LIST', NULL, 'NONE', 'UNKNOWN')), decode(indtype_kewrseg, 0, index_type, decode(indtype_kewrseg, 1, 'NORMAL'|| decode(bitand(iprop_kewrseg, 4), 0, '', 4, '/REV'), 2, 'BITMAP', 3, 'CLUSTER', 4, 'IOT - TOP', 5, 'IOT - NESTED', 6, 'SECONDARY', 7, 'ANSI', 8, 'LOB', 9, 'DOMAIN')), coalesce(nullif(bobjn_kewrseg,0), so.base_obj#), case bobjname_kewrseg when NULL then so.base_object_name else case length(bobjname_kewrseg) when 0 then so.base_object_name else bobjname_kewrseg end end, case bowname_kewrseg when NULL then so.base_object_owner else case length(bowname_kewrseg) when 0 then so.base_object_owner else bowname_kewrseg end end FROM wrh$_seg_stat_obj so JOIN (select * from x$kewrtsegstat where con_id = :con_id_01 or ( (:con_id_02 = 1 and con_id = 0) or (:con_id_03 = 0 and con_id = 1)) ) io ON (dbid = :dbid and con_dbid = con_dbid_kewrseg and ts# = tsn_kewrseg and obj# = objn_kewrseg and dataobj# = objd_kewrseg) WHERE ob.dbid = so.dbid AND ob.con_dbid = so.con_dbid AND ob.ts# = so.ts# AND ob.obj# = so.obj# AND ob.dataobj# = so.dataobj#) WHERE dbid = :dbid AND object_name NOT LIKE '%MISSING%' AND object_name NOT LIKE '%TRANSIENT%' AND (ts#, obj#, dataobj#, con_dbid) in (SELECT tsn_kewrseg, objn_kewrseg, objd_kewrseg, con_dbid_kewrseg FROM (select * from x$kewrtsegstat where con_id = :con_id_04 or ( (:con_id_05 = 1 and con_id = 0) or (:con_id_06 = 0 and con_id = 1)) ) )
select json_object(
'collected_at' value to_char(sys_extract_utc(systimestamp), 'YYYY-MM…
Parsing schema
SYS
Module
sqlplus@ol9-19-dg1.localdomain (TNS V1-V3)
Action
—
Optimizer mode
ALL_ROWS
Force-match sig
935332091860047417
SQL profile
—
Text length
648 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
3181894540
2026-08-29 11:30
2026-09-27 16:45
1,569
23,341
0.004831
27.27
select json_object(
'collected_at' value to_char(sys_extract_utc(systimestamp), 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'log_type' value 'oracle_metrics',
'event' value json_object('outcome' value 'success'),
'oracle' value json_object(
'metric' value json_object('type' value 'tablespace'),
'database' value json_object('name' value sys_context('USERENV', 'DB_UNIQUE_NAME')),
'tablespace' value json_object(
'name' value tablespace_name,
'used_pct' value round(used_percent, 2),
'used_blocks' value used_space,
'total_blocks' value tablespace_size
)
) returning clob
) from dba_tablespace_usage_metrics
declare
policy varchar2(512);
alldest number := dbms…
Parsing schema
SYS
Module
—
Action
—
Optimizer mode
ALL_ROWS
Force-match sig
—
SQL profile
—
Text length
825 chars
declare
policy varchar2(512);
alldest number := dbms_rcvman.FALSE#;
rlgscn number;
begin
if (:alldest > 0) then
alldest := dbms_rcvman.TRUE#;
end if;
dbms_rcvman.setRecoveryDestFile(TRUE);
dbms_rcvman.getRedoLogDeletionPolicy(policy => policy);
dbms_rcvman.setRedoLogDeletionPolicy(policy => policy,
alldest => alldest);
if ((policy like '%APPLIED%' OR
policy like '%SHIPPED%') AND
policy not like '%BACKED UP%') then
dbms_rcvman.getSCNForAppliedPolicy(
minscn => :applied_scn
,rlgscn => rlgscn);
else
:applied_scn := 0;
end if;
end;
merge /* KSXM:OPTIM_DML_INF */ into sys.mon_mods_all$ m using dual …
Parsing schema
SYS
Module
—
Action
—
Optimizer mode
CHOOSE
Force-match sig
7187657109694262111
SQL profile
—
Text length
2,323 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
3238164414
2026-08-23 16:56
2026-09-27 16:45
2,354
294,561
0.000097
6.078
merge /* KSXM:OPTIM_DML_INF */ into sys.mon_mods_all$ m using dual on (m.obj# = :objn and (:pobjn = 0 or m.obj# = :pobjn or m.obj# in (select obj# from tabpart$ where bo# = :pobjn and obj# = :objn union all select obj# from tabcompart$ where bo# = :pobjn and obj# = :objn union all select tsp.obj# from tabsubpart$ tsp, tabcompart$ tcp where tsp.pobj# = tcp.obj# and (tcp.bo# = :pobjn or tcp.obj# = :pobjn) and tsp.obj# = :objn))) when matched then update set inserts = decode(:reset, 1, 0, inserts) + :ins, updates = decode(:reset, 1, 0, updates) + :upd, deletes = decode(:reset, 1, 0, deletes) + :del, flags = decode(:reset, 1, 0, flags - bitand(flags, :flag)) + :flag, drop_segments = decode(:reset, 1, 0, drop_segments) + :dropseg, timestamp = :time when NOT matched then insert (obj#, inserts, updates, deletes, timestamp, flags, drop_segments) values (:objn, :ins, :upd, :del, :time, :flag, :dropseg) where :ins != 0 or :upd != 0 or :del != 0 or :flag != 0 or :dropseg !=0
select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, nvl(property,0),subname,type#,flags,d_attrs from dependency$ d, obj$ o where d_obj#=:1 and p_obj#=obj#(+) order by order#
select /*+ connect_by_filtering index(sysauth$ i_sysauth1) */ privilege#, bitand(nvl(option$, 0), 72), grantee#, level from sysauth$ connect by grantee#=prior privilege# and privilege#>0 start with grantee#=:1 and privilege#>0
select 'INTER_MEDIA' as name, decode((select username from dba_users where username='ORDS…
Parsing schema
SYS
Module
emagent_SQL_oracle_database
Action
db_options
Optimizer mode
ALL_ROWS
Force-match sig
226190071430424382
SQL profile
—
Text length
2,239 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
2476633687
2026-08-24 00:15
2026-09-26 03:45
28
28
0.1482
1,616
select 'INTER_MEDIA' as name, decode((select username from dba_users where username='ORDSYS'), 'ORDSYS', 'TRUE', 'FALSE') as selected
from dual
union
select 'SPATIAL' as name, decode((select username from dba_users where username='MDSYS'), 'MDSYS', 'TRUE', 'FALSE') as selected
from dual
union
select 'ORACLE_TEXT' as name, decode((select username from dba_users where username='CTXSYS'), 'CTXSYS', 'TRUE', 'FALSE') as selected
from dual
union
select 'ULTRA_SEARCH' as name, decode((select username from dba_users where username='WKSYS'), 'WKSYS', 'TRUE', 'FALSE') as selected
from dual
union
select 'LABEL_SECURITY' as name, decode((select username from dba_users where username='LBACSYS'), 'LBACSYS', 'TRUE', 'FALSE') as selected
from dual
union
select 'SAMPLE_SCHEMA' as name, decode((select count(*) from dba_users where username IN('HR','PM','QS','SH','OE')), 0, 'FALSE', 'TRUE') as selected
from dual
union
select 'JSERVER' as name, decode((select count(*) from sys."_CURRENT_EDITION_OBJ" where type#=29), 0, 'FALSE', 'TRUE') as selected
from dual
union
select 'ORACLE_DATA_MINING' as name, decode((select status from dba_registry where comp_id='ODM'), 'VALID', 'TRUE', 'FALSE') as selected
from dual
union
select 'XDB' as name, decode((select username from dba_users where username='XDB'), 'XDB', 'TRUE', 'FALSE') as selected
from dual
union
select 'EM_REPOSITORY' as name, decode((select username from dba_users where username='SYSMAN'), 'SYSMAN', 'TRUE', 'FALSE') as selected
from dual
UNION
select 'Database Vault' as name, decode((SELECT 1 from (Select count(*) CNT
from dba_users where UPPER(username) in ('DVSYS','DVF') ) where CNT = 2),1,'TRUE','FALSE') as selected from dual
UNION
select 'Audit Vault' as name, decode((SELECT 1 from dba_users where UPPER(username) = 'AVSYS' and rownum = 1), 1, 'TRUE', 'FALSE') as selected
from dual
UNION
select 'Content Database' as name, decode((SELECT 1 from dba_users where UPPER(username) = 'CONTENT' and rownum = 1),1,'TRUE','FALSE') as selected
from dual
UNION
select 'Records Database' as name, decode((SELECT 1 from dba_users where UPPER(username) = 'CONTENT' and rownum = 1),1,'TRUE','FALSE') as selected
from dual
UNION
select parameter as name,value as selected from v$option
select cons.consumer_name
from sys.dba_queue_subscribers cons
left join s…
Parsing schema
SYS
Module
DBMS_SCHEDULER
Action
PURGE_LOG
Optimizer mode
ALL_ROWS
Force-match sig
—
SQL profile
—
Text length
318 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
389693511
2026-08-28 09:45
2026-09-26 10:00
26
26
0.04476
1,220
select cons.consumer_name
from sys.dba_queue_subscribers cons
left join sys.user$ us
on replace(cons.consumer_name,'SCHED$_AGT2$_')=us.user#
where
cons.queue_name='SCHEDULER$_EVENT_QUEUE' and
cons.consumer_name like 'SCHED$_AGT2$_%' and
us.user# is null
SELECT /*+ NO_STATEMENT_QUEUING RESULT_CACHE (SYSOBJ=TRUE SHELFLIFE=30) */ "DBUSERNAME","EVENT_TIMESTAMP","ACTION_NAME","RETURN_CODE" FROM "AUDSYS"."UNIFIED_AUDIT_TRAIL" "K" WHERE "K"."ACTION_NAME"='LOGON' AND "K"."RETURN_CODE"<>0 AND SYS_EXTRACT_UTC("K"."EVENT_TIMESTAMP")>=SYS_EXTRACT_UTC(CURRENT_TIMESTAMP(6)-TO_DSINTERVAL('0 0:30:00'))
SELECT TO_CHAR(current_timestamp AT TIME ZONE 'GMT', 'YYYY-MM-DD HH24:MI:SS TZD') AS curr…
Parsing schema
SYS
Module
Oracle Enterprise Manager.Metric Engine
Action
—
Optimizer mode
ALL_ROWS
Force-match sig
15582271173586173236
SQL profile
—
Text length
1,011 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
1561607518
2026-08-23 11:38
2026-09-27 16:45
1,050
1,055
0.05946
4,144
SELECT TO_CHAR(current_timestamp AT TIME ZONE 'GMT', 'YYYY-MM-DD HH24:MI:SS TZD') AS curr_timestamp, SUM(failed_count) AS failed_count , TO_CHAR(MIN(first_occur_time), 'yyyy-mm-dd hh24:mi:ss') AS first_occur_time, TO_CHAR(MAX(last_occur_time), 'yyyy-mm-dd hh24:mi:ss') AS last_occur_time, name FROM (SELECT COUNT(DBUSERNAME) AS failed_count, MIN(event_timestamp) AS first_occur_time, MAX(event_timestamp) AS last_occur_time, c.name FROM cdb_unified_audit_trail a, v$containers c WHERE a.ACTION_NAME='LOGON' and a.return_code <> 0 AND a.event_timestamp >= current_timestamp - TO_DSINTERVAL('0 0:30:00') AND a.con_id = c.con_id GROUP BY c.name UNION SELECT COUNT(username) AS failed_count, MIN(timestamp) AS first_occur_time, MAX(timestamp) AS last_occur_time, c.name FROM sys.cdb_audit_session a, v$containers c WHERE a.returncode != 0 AND a.ACTION_NAME = 'LOGON' AND a.timestamp >= current_timestamp - TO_DSINTERVAL('0 0:30:00') AND a.con_id = c.con_id GROUP BY c.name ) GROUP BY name
select /* QOSH:ANLYZ_TIME */ from_tz( cast ((max(analyzetime) - 1) as timestamp), to_char(systimestamp, 'TZH:TZM')) from sys.tab$ where analyzetime is not null
select json_object(
'collected_at' value to_char(sys_extract_utc(systimestamp), 'YYYY-MM…
Parsing schema
SYS
Module
sqlplus@ol9-19-dg1.localdomain (TNS V1-V3)
Action
—
Optimizer mode
ALL_ROWS
Force-match sig
1169769593972080845
SQL profile
—
Text length
2,455 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
473814785
2026-08-29 11:30
2026-09-27 16:45
1,550
22,898
0.003235
51.62
select json_object(
'collected_at' value to_char(sys_extract_utc(systimestamp), 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
'log_type' value 'oracle_metrics',
'event' value json_object('outcome' value 'success'),
'log' value json_object('level' value 'INFO'),
'oracle' value json_object(
'metric' value json_object('type' value 'health'),
'database' value json_object(
'name' value d.db_unique_name,
'role' value d.database_role,
'open_mode' value d.open_mode,
'protection_mode' value d.protection_mode,
'switchover_status' value d.switchover_status
),
'instance' value json_object(
'name' value i.instance_name,
'status' value i.status,
'database_status' value i.database_status,
'version' value i.version,
'startup_time' value to_char(i.startup_time, 'YYYY-MM-DD"T"HH24:MI:SS'),
'available' value case when i.status = 'OPEN' then 'true' else 'false' end format json
),
'metrics' value json_object(
'sessions' value json_object(
'current' value (select current_utilization from v$resource_limit where resource_name = 'sessions'),
'limit' value (select case when regexp_like(trim(limit_value), '^[0-9]+$') then to_number(trim(limit_value)) end from v$resource_limit where resource_name = 'sessions'),
'utilization_pct' value (select round(100 * current_utilization / nullif(case when regexp_like(trim(limit_value), '^[0-9]+$') then to_number(trim(limit_value)) end, 0), 2) from v$resource_limit where resource_name = 'sessions')
),
'processes' value json_object(
'current' value (select current_utilization from v$resource_limit where resource_name = 'processes'),
'limit' value (select case when regexp_like(trim(limit_value), '^[0-9]+$') then to_number(trim(limit_value)) end from v$resource_limit where resource_name = 'processes'),
'utilization_pct' value (select round(100 * current_utilization / nullif(case when regexp_like(trim(limit_value), '^[0-9]+$') then to_number(trim(limit_value)) end, 0), 2) from v$resource_limit where resource_name = 'processes')
),
'blocking_sessions' value (select count(*) from v$session where blocking_session is not null),
'failed_jobs_24h' value (select count(*) from dba_scheduler_job_run_details where status = 'FAILED' and log_date >= systimestamp - interval '1' day)
)
) returning clob
) from v$instance i cross join v$database d
SELECT nonprimarydb.name as pdbName
,MAX(CASE WHEN takecdbstatus.open_mode LIKE 'MOUNT%' T…
Parsing schema
SYS
Module
emagent_SQL_oracle_database
Action
pdbResponse_cdb
Optimizer mode
ALL_ROWS
Force-match sig
826682939208367061
SQL profile
—
Text length
828 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
4161125554
2026-08-23 16:56
2026-09-27 16:45
2,169
129,934
0.000314
0
SELECT nonprimarydb.name as pdbName
,MAX(CASE WHEN takecdbstatus.open_mode LIKE 'MOUNT%' THEN 1
WHEN takecdbstatus.open_mode LIKE 'READ%' THEN 1
ELSE 0
END) as state_num
FROM gv$containers nonprimarydb
,gv$containers takecdbstatus
WHERE nonprimarydb.name <> 'PDB$SEED'
AND takecdbstatus.name = 'CDB$ROOT'
AND ((sys_context('USERENV','CURRENT_USER') like 'SYS%' AND takecdbstatus.open_mode LIKE 'MOUNT%') OR (takecdbstatus.open_mode LIKE 'READ%'))
AND EXISTS (SELECT 1
FROM v$database
WHERE database_role <> 'PRIMARY')
GROUP BY nonprimarydb.name
UNION ALL
SELECT primarydb.name as pdbName
,MAX(CASE WHEN primarydb.open_mode like 'READ%' THEN 1 ELSE 0 END) as state_num
FROM gv$containers primarydb
WHERE primarydb.name <> 'PDB$SEED'
AND EXISTS (SELECT 1
FROM v$database
WHERE database_role = 'PRIMARY')
GROUP BY primarydb.name
SELECT /*+ NO_STATEMENT_QUEUING RESULT_CACHE (SYSOBJ=TRUE SHELFLIFE=30) */ "PROPERTY_NAME","PROPERTY_VALUE" FROM "SYS"."DATABASE_PROPERTIES" "K" WHERE "K"."PROPERTY_NAME"='GLOBAL_DB_NAME' AND 1=1
select count(*) from dba_autotask_window_clients c, (select window_name, max(log_date) max…
Parsing schema
SYS
Module
—
Action
—
Optimizer mode
CHOOSE
Force-match sig
—
SQL profile
—
Text length
657 chars
Plan hash
First seen
Last seen
Snapshots
Executions
Avg s/exec
Avg gets/exec
3322223638
2026-08-23 16:46
2026-09-27 10:30
452
444
0.009638
2,054
1474981312
2026-08-27 22:00
2026-09-25 22:00
373
21
0.03156
2,138
489053127
2026-09-09 05:00
2026-09-26 10:00
268
13
0.01578
2,616
2762765423
2026-09-09 06:45
2026-09-26 10:00
272
266
0.005819
2,734
select count(*) from dba_autotask_window_clients c, (select window_name, max(log_date) max_log_date from dba_scheduler_window_log where operation = 'OPEN' group by window_name) wo, (select window_name, max(log_date) max_log_date from dba_scheduler_window_log where operation = 'CLOSE' group by window_name) wc where c.window_name = wo.window_name and c.optimizer_stats = 'ENABLED' and wo.window_name = wc.window_name and wo.max_log_date < wc.max_log_date and wc.window_name not in (select h.window_name from dba_autotask_job_history h where h.client_name = 'auto optimizer stats collection' and h.job_start_time between wo.max_log_date and wc.max_log_date)
select s.ts#, s.file#, s.block#, so.object_id, s.spare1, s.type#, s.hwmincr from seg$ s, sys_objects so where bitand(s.spare1,131072) = 0 and s.ts# = so.ts_number and s.file# = so.header_file and s.block# = so.header_block order by s.file# asc
Showing 0 SQL chart(s); 5 SQL(s) had fewer than 5 ASH samples and are listed as placeholders.
SQL MonitorCaptured executions per statement; a sample, not every execution
69 executions captured in the compared span, but none met the inclusion floor (elapsed ≥ 1 s, an error, or more than one execution plan). The scatter below still plots every captured execution.
Execution scatter (full compared span)
Every captured execution, x = start time, y = elapsed (log scale). Diamond = error, triangle = a plan different from that sql_id's most common plan, size ∝ requested DOP. Colored series are the top 10 statements by Current-window max elapsed; grey = everything else.
Segment I/OTop 10 segments by I/O per window; ranked, not scored
I/O by file type — detail table (all four dimensions)
Metric
File type
Current
−1h
−2h
−3h
−4h
Data read (MB)
Control File
364.0 #1
345.0 #1
406.0 #1
374.0 #1
351.0 #1
Data read (MB)
Log File
39.00 #2
—
31.00 #2
40.00 #2
—
Data read (MB)
Other
1.000 #3
1.000 #2
—
1.000 #3
1.000 #2
Data read (MB)
Flashback Log
—
—
1.000 #3
—
—
Data written (MB)
Control File
58.00 #1
53.00 #1
70.00 #1
56.00 #1
55.00 #1
Data written (MB)
Archive Log
39.00 #2
—
31.00 #2
40.00 #2
—
Data written (MB)
Flashback Log
26.00 #3
25.00 #2
29.00 #3
28.00 #3
27.00 #2
Data written (MB)
Log File
20.00 #4
21.00 #3
20.00 #4
20.00 #4
19.00 #3
Data written (MB)
Other
1.000 #5
—
1.000 #5
1.000 #5
1.000 #4
Read requests
Control File
20.21 k #1
19.58 k #1
22.20 k #1
20.84 k #1
19.93 k #1
Read requests
Other
180.0 #2
177.0 #2
180.0 #2
180.0 #2
180.0 #2
Read requests
Log File
45.00 #3
—
120.0 #3
46.00 #3
—
Read requests
Flashback Log
16.00 #4
12.00 #3
16.00 #4
12.00 #4
16.00 #3
Write requests
Log File
3,940 #1
3,886 #1
3,994 #2
3,998 #1
3,949 #1
Write requests
Control File
3,706 #2
3,442 #2
4,432 #1
3,586 #2
3,566 #2
Write requests
Other
240.0 #3
236.0 #3
240.0 #3
240.0 #3
240.0 #3
Write requests
Flashback Log
102.0 #4
102.0 #4
117.0 #4
123.0 #4
117.0 #4
Write requests
Archive Log
39.00 #5
—
43.00 #5
40.00 #5
—
ParametersInitialization parameters whose value differs across the windows
No system parameters changed across the compared windows.
Reading the chartsWhat each chart and glyph on this page encodes
Band
Dot = Current, in σ from the prior mean. Shaded = normal (±1σ, ±2σ); ticks at ±2σ and ±3σ. Filled = finding, hollow = normal; past +8σ the dot pins and prints its z.
▲ ×5.4▲ 22.5%▼ 4.2%
Δ vs mean
×n when Current is at least twice the prior mean, else a percentage. Red or amber only on a finding.
13-window chart
One column per compared window, oldest left; Current last, wider, indigo. Band = normal range, line = mean, dot = finding.
Full-span activity
Top of every view: active sessions over the whole span as stacked areas, hourly (or the shorter cadence), by wait class and by wait event (the 14 largest, the rest as Other events); zoomed to 6 hours or less, the compared windows minute by minute. Stripes = compared windows (Current indigo, pinned amber, skipped grey). Hover for each series’ AAS, drag across either chart to zoom both, double-click to reset; a legend item hides its series, a stripe pins its window. Hover a class or event to highlight it: from the legend it is drawn from zero, its own axis; a class lights its events below. Click its band (or Shift+click the legend) to keep it, Esc clears.
Activity per window
Timeline Activity lane (all sessions) and the DB time card (foreground sessions only, ASH’s estimate of DB time): one stacked column per compared window, same wait classes. Current labels its two largest classes.
Span chart
All sections: active sessions by wait class across the whole span. Compared windows shaded, Current in indigo.
Trend
A table row’s windows as bars from zero, oldest left: shaded = normal range, indigo = Current. Hover a strip for the last four values and the normal range.
Release marker
A release or patch, on the boundary between the two windows it fell between. Its line runs down every chart.
Step line
Parameters and plan hashes step where the value changed. Dot = the change; labels = old and new value.
◆ plan changed✚ first seen▽ DOP downgrade
Glyphs
Drawn in the window where it happened.
Day profile
Last 24 h by hour vs the same hour on the prior days, one row per stat: red above, blue below (signed z). A triangle marks a flagged hour; the line chart below it plots one stat: pick it with its button (the dot and counts say how unusual its day is), a row label, or the arrow keys.
Hover and pin
Timeline: hover a column for its values; click a date or an ASH stripe to pin it. The gutter then compares against it (“vs 13 Aug”); Current or Esc clears it.
About this reportMethod, sources and thresholds behind every section
Scoring
z = (Current − μ) ÷ max(σ, 2% of |μ|) over the prior valid windows. |z| > 3 is large, |z| > 2 moderate, else normal — but only when the move is material: |Δ| ≥ 10% and, for wait classes, ≥ 2% of the Current window’s wait time (otherwise normal, tagged immaterial). Each metric has its own direction and floors (sql/lib/metric_policy.plsql): a move in the good direction is improved, an informational counter is noted — neither is highlighted or counted. Twins (the SYSMETRIC rate of a SYSSTAT counter, the CPU half of the CPU/wait ratio) are shown muted and never counted. Fewer than 3 prior values: Δ only. |z| beyond ±99 is capped for display; σ≈0 flags a baseline that barely moved.
Band and Δ
The band plots Current in σ from the prior mean on one scale for the whole page (−4 to +8σ). Normal range = μ ± 2σ in the row’s own unit. Δ vs mean reads ×n at twice the mean or more, else a percentage.
Windows
One window per step back from 2026-09-18 12:00:00, 1h wide, every 1h A window is skipped (and dropped from every baseline) when a snapshot is missing, the begin and end snapshot are the same, the instance restarted inside it, it straddles a DBID change, or its nearest snapshot is more than 15 minutes off the window edge.
DB time
DB CPU (dba_hist_sys_time_model, foreground) plus non-idle wait time (dba_hist_system_event, all sessions incl. background) per snapshot interval, stacked by wait class, from the earliest compared window to Current. Not a strict foreground DB-time profile. A snapshot pair across an instance restart is a gap.
Verdict
One sentence from the first two finding cards (the loudest card, then DB time when it is flagged): the lead metric and its move, ×n at twice the mean or more, else a percentage. For DB time, where the extra time went: CPU vs wait from DB CPU against DB time. Likely source: a statement that ran with a new plan in the Current window, else a newcomer in the top SQL by physical reads, else a statement first seen this window, else the segment the extra reads land on. Fixed phrases, no free text.
Finding cards
One card per metric family of the scoring policy (sql/lib/metric_policy.plsql); families that tell one story share a card: Physical I/O (physical and logical reads, long table scans, User I/O waits), DB time (DB time, the CPU / wait ratio, response time), Network (Network waits, SQL*Net bytes), Commit (Commit waits, commits), Parsing, Writes and redo. A card is led by its loudest large, else moderate, metric of the card’s main family. Twins are folded under related metrics and never counted.
DB time strip
DBA_HIST_SYSSTAT DB time per compared window, divided by 100 (centiseconds per second = average active sessions); release markers sit on the boundary between the two windows they fall between.
Checked and normal
Every other scored metric: the normal ones, loudest first; moved, too small to matter = past |z| 2 but under the metric’s materiality floor, or an informational counter; improved = a material move in the good direction. None of them is counted.
What changed around it
Plan change: a statement that ran in the Current window with a plan other than the prior windows’ most frequent one (SQL Monitor). Its bars are its elapsed seconds per window from DBA_HIST_SQLSTAT; the step line is the most frequent captured plan per window, carried over windows with no capture; only the SQL Monitor max elapsed is scored. Configuration: every changed parameter as a step line.
Evidence library
Summary view: every other section as one row with a one-line status and its counts; open a row to read the section in place. All sections shows every section in full.
ASH timeline
dba_hist_active_sess_history over the full span, one scan: hourly (or the cadence) in All sections; at the top of every view (Activity, whole span) on the same grid (coarser only past 10000 buckets), by wait class and by wait event (the 14 events with the most samples, ties by name, the rest summed as Other events), plus each compared window’s own values (samples ÷ 360 ÷ window hours; overlapping windows each count a shared sample) and a 1-minute series inside the compared windows (samples ÷ 6, each minute once; at most 40000 minutes, the most recent windows first), drawn when zoomed to 6 hours or less. ON CPU is CPU in both; Idle excluded. Compared windows shaded. ASH is not scored. Each event carries its wait class from the same scan, so highlighting a class lights its events (and an event its class); a highlighted series is re-stacked from zero on its own y axis, the others faded above it.
Timeline
One column per compared window, one row per metric, from the same values and scoring as the tables: the headline and every flagged load / metric row, flagged wait classes and the top foreground events, the top segments and datafile by reads, the top statements by elapsed (SQL Monitor rows for a plan change or a DOP downgrade), changed parameters. Statement, segment and file rows are ranked, not scored: a plain ratio against the mean of the prior windows they made the top list in. Needs JavaScript; every number is also in All sections.
Utilization
Workload volume and shape (transaction, call and logon rates, session counts, data and network volume) from DBA_HIST_SYSMETRIC_SUMMARY, averaged over each window. A usage overview, not a health check: the band is drawn but never scored.
Load profile
DBA_HIST_SYSSTAT (end − begin snapshot) ÷ window seconds, summed across instances. Trend: per-window values as bars, oldest to Current, over the shaded normal range. Current cell bar = value ÷ row maximum.
System metrics
DBA_HIST_SYSMETRIC_SUMMARY averaged over each window. Rates and counters: SUM across instances per snapshot, then AVG; ratios and latencies: AVG across instances per snapshot, then AVG. Units per metric name.
Wait events
Foreground: DBA_HIST_SYSTEM_EVENT; background: DBA_HIST_BG_EVENT_SUMMARY. Idle excluded. Top 10 events by time waited (s) and by average latency (ms = time waited ÷ total waits); the chart stacks wait-class time per window. When five or more flagged events moved together within a narrow band, the table notes one table-wide shift and demotes large rows to moderate.
Top SQL
Top 10 statements per ranking and window from DBA_HIST_SQLSTAT*_DELTA columns; ranked, not scored. The bump chart draws one line per statement across the windows; Break down by re-aggregates by parsing schema, module or action.
Top SQL ASH
For each statement in the Top SQL pool: ASH samples per bucket split by wait event (top 7 per statement, the rest as Other; CPU = ON CPU). Statements with fewer than 5 samples are placeholders.
SQL Monitor
Executions persisted by SQL Monitor (DBA_HIST_REPORTS, component_name='sqlmonitor'), summaries only. Only completed, expensive-enough or parallel executions are persisted, so a statement’s absence does not mean it ran fast and row counts are not execution rates. An execution still running at the report end has no row yet. Rows are attributed to a window by execution start time. The table is scored on max elapsed time (rule above); the scatter plots every captured execution.
Segment and file I/O
Segments: DBA_HIST_SEG_STAT*_DELTA joined to DBA_HIST_SEG_STAT_OBJ; reads and writes in blocks, requests in I/O calls. Files: DBA_HIST_FILESTATXS / DBA_HIST_TEMPSTATXS deltas, blocks scaled to MB by block size; the file-type view is DBA_HIST_IOSTAT_FILETYPE (all database I/O, so its totals differ). Ranked, not scored; the type rollups cover all segments and files.
Parameters
Initialization parameters from dba_hist_parameter whose value differs across the compared windows (value as of each window’s end snapshot, lowest container wins in a CDB). Highlighted cells differ from Current; — = not present at that snapshot; (unset) = present but empty.
Run 20260927165633740 · template simple · top_n 10 · generated 2026-09-27 16:56:33 +00:00 by SYS · read-only against DBA_HIST_*, no scratch schema.