oracle性能检测语句

来源:互联网 发布:数据交换平台接口规范 编辑:程序博客网 时间:2024/06/03 14:52
可以到v$sql中查询,比如以buffer_gets,executions,disk_reads等条件判断.


--值得怀疑的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;
 

--逻辑读多的SQL
select *
 from(select buffer_gets, sql_text
         from v$sqlarea
        where buffer_gets>500000
        order by buffer_gets desc)
where rownum<=30;
 

--执行次数多的SQL
select sql_text, executions
 from(select sql_text, executions from v$sql area order by executions desc)
where rownum<81;


--读硬盘多的SQL
select sql_text, disk_reads
 from(select sql_text, disk_reads from v$sql area order by disk_reads desc)
where rownum<21;


--排序多的SQL
select sql_text, sorts
 from(select sql_text, sorts from v$sql area order by sorts desc)
where rownum<21;


--分析的次数太多,执行的次数太少,要用绑变量的方法来写sql
set page size 600;
set line size 120;
select substr(sql_text,1,80) "sql",count(*),sum(executions) "totexecs"
 from v$sql area
where executions<5
group by substr(sql_text,1,80)
having count(*)>30
order by 2;


--游标的观察
set pages 300;
select sum(a.value), b.name
 from v$sesstat a, v$statname b
where a.statistic#=b.statistic#
  and b.name='opened cursors current'
group by b.name;
select count(0) from v$open_cursor;
select user_name, sql_text,count(0)
 from v$open_cursor
group by user_name, sql_text
having count(0)>30;


--查看当前用户&username执行的SQL
select sql_text
 from v$sqltext_with_newlines
where(hash_value, address)in
       (select sql_hash_value, sql_address
         from v$session
        where username='&username')
order by address, piece;

原创粉丝点击