Method to find Oracle high consumption statements

  • 2020-03-30 02:24:13
  • OfStack

Before you can run the following script, you need to find the starting and ending snapshot Numbers: begin_snap and end_snap with the SQL that generated the AWR report (the program script is normally stored in the RDBMS /admin under $ORACLE_HOME, named awrrpt-sql, and you need to enter the range of days to generate the AWR report).
 
<span style="font-size:18px;">set line 1000 
set linesize 200 
set pagesize 2000 
set long 999999 
set echo on 
set markup html on 
select res.* 
from (select to_char(d.end_interval_time,'yyyy-mm-dd'), 
a.PARSING_SCHEMA_NAME, 
c.MODULE, 
a.sql_id, 
a.execs as  Number of executions , 
ROUND(a.cpu_times / a.execs, 2) as  Single execution time , 
a.cpu_times as cpu Elapsed time , 
ROUND(a.cpu_times / b.sum_time * 100, 2) as  consumption cpu The percentage , 
a.buffer_gets as  Logical reads , 
ROUND(a.buffer_gets / b.sum_buffer * 100, 2) as  Logical read percentage , 
a.disk_read as  Physical reads , 
ROUND(a.disk_read / b.sum_disk * 100, 2) as  Percentage physical read , 
c.sql_fulltext 
from (select PARSING_SCHEMA_NAME, 
sql_id, 
sum(EXECUTIONS_DELTA) AS execs, 
round(sum(CPU_TIME_DELTA) / 1000000, 2) AS cpu_times, 
round(sum(ELAPSED_TIME_DELTA) / 1000000, 2) AS elapsed_time, 
sum(BUFFER_GETS_DELTA) AS buffer_gets, 
sum(DISK_READS_DELTA) AS disk_read 
from sys.WRH$_SQLSTAT wr, gv$instance i 
where SNAP_ID <= &end_snap 
and snap_id >= &begin_snap 
and wr.INSTANCE_NUMBER = i.INSTANCE_NUMBER 
and i.instance_number = &instance_number 
group by PARSING_SCHEMA_NAME, wr.INSTANCE_NUMBER, sql_id) a, 
(SELECT round(SUM(CPU_TIME_DELTA) / 1000000, 2) sum_time, 
SUM(BUFFER_GETS_DELTA) sum_buffer, 
sum(DISK_READS_DELTA) sum_disk 
FROM sys.WRH$_SQLSTAT wr, gv$instance i 
where SNAP_ID <= &end_snap 
and snap_id >= &begin_snap 
and wr.INSTANCE_NUMBER = i.INSTANCE_NUMBER 
and i.instance_number = &instance_number) b, 
v$sqlarea c, 
dba_hist_snapshot d 
where a.execs > 0 
and a.sql_id = c.sql_id 
and a.PARSING_SCHEMA_NAME <> 'SYS' 
and d.snap_id = &end_snap 
order by cpu Elapsed time  desc) res 
where rownum < 41; 
exit</span> 

Save the script output to notepad TXT, and change the notepad suffix to.html, so you can output the following web content:
< img SRC = "border = 0 / / files.jb51.net/file_images/article/201403/20140322145210.jpeg? 2014222145638 ">

Related articles: