您好,欢迎访问一九零五行业门户网

查找Oracle高消耗语句的方法_javascript技巧

在运行下面的脚本之前需要先用生成awr报告的sql(程序脚本一般保存在$oracle_home下的rdbms/admin中,名称为awrrpt.sql,需要输入生成awr报告的天数范围)找到开始和结束的snapshot编号:begin_snap和end_snap。
复制代码 代码如下:
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 执行次数,
round(a.cpu_times / a.execs, 2) as 单次执行时间,
a.cpu_times as cpu消耗时间,
round(a.cpu_times / b.sum_time * 100, 2) as 消耗cpu百分比,
a.buffer_gets as 逻辑读,
round(a.buffer_gets / b.sum_buffer * 100, 2) as 逻辑读百分比,
a.disk_read as 物理读,
round(a.disk_read / b.sum_disk * 100, 2) as 物理读百分比,
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 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 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消耗时间 desc) res
where rownum exit
将脚本输出内容保存到记事本txt中,并将记事本的后缀名更改为.html,这样就可以输出以下的网页内容:
其它类似信息

推荐信息