oracle 中如何定位重要(消耗资源多)的SQL

1、查看值得怀疑的SQL

select substr(to_char(s.pct, '99.00' ),2)|| '%' load ,
        s.executions executes,
        p.sql_text
from ( select address,
                disk_reads,
                executions,
                pct,
                rank()over( order by disk_reads desc ) ranking
          from ( select address,
                        disk_reads,
                        executions,
                       100*ratio_to_report(disk_reads)over() pct
                  from sys.v_$sql
                 where command_type!=47)
         where disk_reads>50*executions) s,
        sys.v_$sqltext p
where s.ranking<=5
   and p.address=s.address
order by 1, s.address, p.piece;

2、查看消耗内存多的sql

select b.username,
        a. buffer_gets,
        a.executions,
        a.disk_reads / decode(a.executions, 0, 1, a.executions),
        a.sql_text SQL
   from v$sqlarea a, dba_users b
  where a.parsing_user_id = b.user_id
    and a.disk_reads > 10000
  order by disk_reads desc ;

3、查看逻辑读多的SQL

select *
from ( select buffer_gets, sql_text
          from v$sqlarea
         where buffer_gets>500000
         order by buffer_gets desc )
where rownum<=30;

4、查看执行次数多的SQL

select sql_text, executions
   from ( select sql_text, executions from v$sqlarea order by executions desc )
  where rownum < 81;

5、查看读硬盘多的SQL

select sql_text, disk_reads
from ( select sql_text, disk_reads from v$sqlarea order by disk_reads desc )
where rownum<21;

6、查看排序多的SQL

select sql_text, sorts
from ( select sql_text, sorts from v$sqlarea order by sorts desc )
where rownum<21;

7、分析的次数太多,执行的次数太少,要用绑变量的方法来写sql

select substr(sql_text, 1, 80) "sql" , count (*), sum (executions) "totexecs"
   from v$sqlarea
  where executions < 5
  group by substr(sql_text, 1, 80)
having count (*) > 30
  order by 2;

转载:http://www.xifenfei.com/699.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值