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

链接:http://www.xifenfei.com/699.html

标题: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;
1 由于ARCHIVE挂起导致数据库挂死 2 NIT文件SGA区设置太大,导致内存不够用,数据库和系统都挂死 3 由于临时表空间无法扩展导致数据库被挂起 4由于未打补丁导致RMAN备份时将数据库挂起 5由于BLOB类型的表记录数太多操作又太频繁导致数据库效率急差 6由于未对特大表(达到或超过100万条记录)定期做表分析导致数据库操作特别慢 7由于空间不够导致插入数据时扩展索引失败 8由于REDOLOG破坏导致数据库异常 9由于控制文件被破坏导致数据库无法正常启动 10由于数据文件丢失或破坏导致数据库无法正常启动 11由于空间参数设置不合理导致扩展表空间、索引等失败 12由于时间格式的环境变量设置问题导致话单无法入库 13由于大事务未使用大回滚段导致事务挂起 14由于数据库连接数太多导致服务器进程数多或内存耗尽 15由于使用了MTS方式,导致数据库操作特别慢(包括备份) 16由于存在一个大事务操作,导致数据库性能特别差或产生频繁日志切换 17由于没有COMMIT,导致数据库表被锁住 18索引创建不合理,导致数据库查询特别慢 19 由于BUFFER参数设置不合理导致EXP失败 20由于EXP不向上兼容,语言不兼容,导致不同版本、不同字符集的数据库无法导入 21 由于创建表空间时误将其创建在以‘本地管理’,导致在表空间上的所有对象无法修改其存储参数 22 错误地在系统表空间上建无关的数据文件 23 ORACLE客户端在P4上安装不成功 24由于LISTENER.ORA或TNSNAMES.ORA配置问题导致网络问题 25由于环境变量设置问题导致VERSOIN版本启动问题 26用户数据、表破坏下的数据恢复 27 由于OS层问题导致数据库ORA-600错误 .....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值