Files
oracle/csierra/cs_internal/cs_sqlmon_hist_internal.sql

164 lines
8.0 KiB
MySQL
Raw Normal View History

2026-03-12 21:23:47 +01:00
COL sql_exec_start FOR A19 HEA 'SQL Exec Start';
COL last_refresh_time FOR A19 HEA 'Last Refresh Time';
COL report_id NEW_V report_id FOR 999999999 HEA 'Report ID';
COL status FOR A20 HEA 'Status';
COL duration FOR 999,990 HEA 'Duration';
COL plan_hash FOR 9999999999 HEA 'Plan Hash';
COL elapsed_time FOR 999,990.000 HEA 'Elapsed Time';
COL cpu_time FOR 999,990.000 HEA 'CPU Time';
COL user_io_wait_time FOR 999,990.000 HEA 'User IO Time';
COL concurrency_wait_time FOR 999,990.000 HEA 'Concurrency';
COL application_wait_time FOR 999,990.000 HEA 'Application';
COL plsql_exec_time FOR 999,990.000 HEA 'PL/SQL';
COL user_fetch_count FOR 999,990 HEA 'Fetches';
COL buffer_gets FOR 999,999,999,990 HEA 'Buffer Gets';
COL read_reqs FOR 999,999,990 HEA 'Read Reqs';
COL read_bytes FOR 999,999,999,999,990 HEA 'Read Bytes';
COL sid_serial FOR A15 HEA 'Sid,Serial';
COL pdb_name FOR A30 TRUNC HEA 'PDB Name';
COL user_name FOR A30 TRUNC HEA 'User Name';
COL module FOR A40 TRUNC HEA 'Module';
COL service FOR A40 TRUNC HEA 'Service';
COL program FOR A40 TRUNC HEA 'Program';
COL rn_sql_exec_start FOR 999,990 HEA 'Sta RN';
COL rn_duration FOR 999,990 HEA 'Dur RN';
--
PRO
PRO SQL MONITOR REPORTS (dba_hist_reports) top &&cs_sqlmon_top. and &&cs_sqlmon_top. most recent
PRO ~~~~~~~~~~~~~~~~~~~
WITH
sql_mon_hist_reports AS (
SELECT /*+ OPT_PARAM('_newsort_enabled' 'FALSE') OPT_PARAM('_adaptive_fetch_enabled' 'FALSE') OPT_PARAM('query_rewrite_enabled' 'FALSE') */ /* ORA-00600: internal error code, arguments: [15851], [3], [2], [1], [1] */
r.snap_id,
r.dbid,
r.instance_number,
r.report_id,
r.component_id,
r.session_id,
r.session_serial#,
r.period_start_time,
r.period_end_time,
r.generation_time,
r.report_parameters,
r.key1 AS
sql_id,
r.con_dbid,
r.con_id,
--xt.sql_id,
To_date(xt.sql_exec_start, 'MM/DD/YYYY HH24:MI:SS') AS
sql_exec_start,
ROW_NUMBER() OVER(ORDER BY To_date(xt.sql_exec_start, 'MM/DD/YYYY HH24:MI:SS') DESC NULLS LAST/*, To_number(Extractvalue(Xmltype(r.report_summary), '//stat[@name = "duration"]')) DESC NULLS LAST*/) AS rn_sql_exec_start,
xt.sql_exec_id,
Xmltype(r.report_summary).extract('//status/text()') AS
status,
Xmltype(r.report_summary).extract('//sql_text/text()') AS
sql_text,
To_date(Xmltype(r.report_summary).extract('//first_refresh_time/text()'),
'MM/DD/YYYY HH24:MI:SS') AS
first_refresh_time,
To_date(Xmltype(r.report_summary).extract('//last_refresh_time/text()'),
'MM/DD/YYYY HH24:MI:SS') AS
last_refresh_time,
To_number(Xmltype(r.report_summary).extract('//refresh_count/text()')) AS
refresh_count,
To_number(Xmltype(r.report_summary).extract('//inst_id/text()')) AS
inst_id,
--TO_NUMBER(xmltype(r.report_summary).extract('//session_id/text()')) AS session_id,
--TO_NUMBER(xmltype(r.report_summary).extract('//session_serial/text()')) AS session_serial,
To_number(Xmltype(r.report_summary).extract('//user_id/text()')) AS
user_id,
Xmltype(r.report_summary).extract('//user/text()') AS
user_name,
--TO_NUMBER(xmltype(r.report_summary).extract('//con_id/text()')) AS con_id,
Xmltype(r.report_summary).extract('//con_name/text()') AS
con_name,
Xmltype(r.report_summary).extract('//module/text()') AS
MODULE,
Xmltype(r.report_summary).extract('//service/text()') AS
service,
Xmltype(r.report_summary).extract('//program/text()') AS
program,
To_number(Xmltype(r.report_summary).extract('//plan_hash/text()')) AS
plan_hash,
Xmltype(r.report_summary).extract('//is_cross_instance/text()') AS
is_cross_instance,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "duration"]'))
AS duration,
ROW_NUMBER() OVER(ORDER BY To_number(Extractvalue(Xmltype(r.report_summary), '//stat[@name = "duration"]')) DESC NULLS LAST/*, To_date(xt.sql_exec_start, 'MM/DD/YYYY HH24:MI:SS') DESC NULLS LAST*/) AS rn_duration,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "elapsed_time"]')) AS
elapsed_time,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "cpu_time"]'))
AS cpu_time,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "user_io_wait_time"]')) AS
user_io_wait_time,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "concurrency_wait_time"]')) AS
concurrency_wait_time,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "application_wait_time"]')) AS
application_wait_time,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "plsql_exec_time"]')) AS
plsql_exec_time,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "user_fetch_count"]')) AS
user_fetch_count,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "buffer_gets"]')) AS
buffer_gets,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "read_reqs"]')
) AS
read_reqs,
To_number(Extractvalue(Xmltype(r.report_summary),
'//stat[@name = "read_bytes"]'
)) AS
read_bytes
FROM cdb_hist_reports r,
XMLTABLE('//sql' passing xmltype(r.report_summary)
COLUMNS
sql_id VARCHAR2(13) path '@sql_id',
sql_exec_start VARCHAR2(19) path '@sql_exec_start',
sql_exec_id NUMBER path '@sql_exec_id'
) xt
WHERE (r.period_end_time BETWEEN TO_DATE('&&cs_sample_time_from.', '&&cs_datetime_full_format.') AND TO_DATE('&&cs_sample_time_to.', '&&cs_datetime_full_format.') OR r.period_start_time BETWEEN TO_DATE('&&cs_sample_time_from.', '&&cs_datetime_full_format.') AND TO_DATE('&&cs_sample_time_to.', '&&cs_datetime_full_format.'))
AND r.component_name = 'sqlmonitor'
AND r.report_name = 'main'
AND r.key1 = '&&cs_sql_id.'
-- ORDER BY r.period_end_time - r.period_start_time DESC, r.period_start_time DESC
-- FETCH FIRST &&cs_sqlmon_top. ROWS ONLY
)
SELECT r.sql_exec_start,
r.rn_sql_exec_start,
r.last_refresh_time,
r.report_id,
r.status,
r.plan_hash,
r.duration,
r.rn_duration,
ROUND(r.elapsed_time / POWER(10, 6), 3) AS elapsed_time,
ROUND(r.cpu_time / POWER(10, 6), 3) AS cpu_time,
ROUND(r.user_io_wait_time / POWER(10, 6), 3) AS user_io_wait_time,
ROUND(r.concurrency_wait_time / POWER(10, 6), 3) AS concurrency_wait_time,
ROUND(r.application_wait_time / POWER(10, 6), 3) AS application_wait_time,
ROUND(r.plsql_exec_time / POWER(10, 6), 3) AS plsql_exec_time,
r.user_fetch_count,
r.buffer_gets,
r.read_reqs,
r.read_bytes,
LPAD(r.session_id,5)||','||r.session_serial# AS sid_serial,
r.con_name AS pdb_name,
r.user_name,
r.module,
r.program,
r.service
FROM sql_mon_hist_reports r
WHERE r.rn_sql_exec_start <= &&cs_sqlmon_top. OR r.rn_duration <= &&cs_sqlmon_top.
ORDER BY
r.sql_exec_start, r.rn_sql_exec_start
/