Oracle 运维篇+查看TOP SQL

 

  •  最耗内存的10个sql(SGA)
set line 130
col sql_text for a100
col pct for 999
SELECT position,
       percent,
       sql_id,
       round(buffer_gets / 1024 / 1024, 2) mb,
       sql_text  FROM (SELECT a.*,
                              rank() over(ORDER BY buffer_gets DESC) position,
                              round(100 * ratio_to_report(buffer_gets)
                                    over()) Percent
                         FROM v$sqlarea a
                        WHERE command_type = 3) WHERE position < 11;
  • 使用资源最多的SQL语句:

(较高的磁盘读取(disk_reads消耗I/O)和较高的逻辑读取(buffer_gets消耗CPU)被用作衡量标准) 

select sql_text
  from (select sql_text, executions, buffer_gets, disk_reads
          from v$sql
         where buffer_gets > 100000
            or disk_reads > 100000
         order by buffer_gets + 100 * disk_reads DESC)
 where rownum <= 5;
                 
  • 使用CPU最多的SQL语句:

(较高的逻辑读取(buffer_gets消耗CPU)被用作衡量标准)

select sql_text
  from (select sql_text, executions, buffer_gets, disk_reads
          from v$sql
         where buffer_gets > 100000
         order by buffer_gets desc)
 where rownum <= 5;
#或者(直接使用v$sql里的cpu_time)
select sql_text, round(cpu_time / 1000000, 2) cpu_seconds
  from (select * from v$sql order by cpu_time desc)
 where rownum <= 5;
  •  使用磁盘I/O最多的SQL语句:

(较高的磁盘读取(disk_reads消耗I/O)被用作衡量标准)         

select sql_text
  from (select sql_text, executions, buffer_gets, disk_reads
          from v$sql
         where disk_reads > 100000
         order by disk_reads desc)
 where rownum <= 5;
  •  占用数据库时间最多的SQL语句:
select sql_text,
       round(elapsed_time / 1000000, 2) elapsed_seconds,
       executions
  from (select * from v$sql order by elapsed_time desc)
 where rownum <= 5;
  •  执行次数最多的SQL语句:
select sql_text, executions
  from (select * from v$sql where executions > 1000 order by executions desc)
 where rownum <= 5;
  • 解析调用最多的SQL语句:
select sql_text, parse_calls
  from (select *
          from v$sql
         where parse_calls > 1000
         order by parse_calls desc)
 where rownum <= 5;
  •  使用共享内存最多的SQL语句:

(使用共享内存大于1048576(bytes)的SQL语句会显示)  

select sql_text, sharable_mem
  from (select *
          from v$sql
         where sharable_mem > 1048576
         order by sharable_mem desc)
 where rownum <= 5;
  • 排序多的SQL
SELECT sql_text, sorts
  FROM (SELECT sql_text, sorts FROM v$sqlarea ORDER BY sorts DESC)
 WHERE ROWNUM < 21;
  • Parse Calls

set linesize 100

set pagesize 100

SELECT *
  FROM (SELECT substr(sql_text, 1, 40) sql,
               parse_calls,
               executions,
               hash_value,
               address
          FROM V$SQLAREA
         WHERE parse_calls > 1000
         ORDER BY parse_calls DESC)
 WHERE rownum <= 10;
  •  version_count

set linesize 100

set pagesize 100

SELECT *
  FROM (SELECT substr(sql_text, 1, 40) sql,
               version_count,
               executions,
               hash_value,
               address
          FROM V$SQLAREA
         WHERE version_count > 20
         ORDER BY version_count DESC)
 WHERE rownum <= 10;

※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值