oracle查询高消耗语句,【Oracle脚本】查找Oracle高消耗语句

在运行下面的脚本之前需要先用生成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 <= &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消耗时间 desc) res

where rownum 

将脚本输出内容保存到记事本txt中,并将记事本的后缀名更改为.html,这样就可以输出以下的网页内容:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值