如何获取Oracle sql monitor报告

发布时间 2023-08-01 21:56:32作者: 赖顺欠

ql_monitor监控执行时间超过5s的sql,或者开启并行的sql,或者加了/+monitor/的sql,应该是记录实例启动以来的sql

set linesize 200
set pages 30
col sql_text format a50 trunc 
col inst_id format 99
col username format a10 trunc
col sql_id format a14
col date_start format a20
col status format a6
col sql_exec_id format 999999999
col px_req format 999
col px_real format 999
select * from
(
select m.inst_id,m.username,m.sql_id, to_char(sql_exec_start, 'yyyymmdd HH24:MI:SS') date_start, 
       substr(status,1,5) as status, sql_exec_id,px_servers_requested px_req,px_servers_allocated as px_real,
       round(m.elapsed_time/1000000) "Elapsed(s)", round(m.CPU_TIME/1000000) "Cpu(s)"
       , sql_text
from gv$sql_monitor m
where m.process_name='ora'
--m.PX_SERVER# is null
--order by elapsed_time desc 
order by sql_exec_start desc
)
where rownum<=20;

查看sql_monitor的text报告

set echo off
set linesize 10000 pages 6000
set long 20000000
set longchunksize 20000000
set trimout on trims on term off head off
select DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id       => 'dy2stq5z7nqxf',
                                       SQL_EXEC_ID  => 16777216,
                                       report_level => 'ALL',
                                       type         => 'text') as report
  from dual;