ORACLE TOPsql

TOP 10 sql 

复制代码
SELECT   * 
    FROM (SELECT   b.username username, 
                     a.disk_reads 
                   / DECODE (a.executions, 0, 1, a.executions) rds_exec_ratio, 
                   a.sql_text STATEMENT 
              FROM v$sqlarea a, dba_users b 
             WHERE a.parsing_user_id = b.user_id AND b.username = 'ZYK' 
          ORDER BY rds_exec_ratio DESC) 
   WHERE ROWNUM < 11 
ORDER BY rds_exec_ratio DESC 
复制代码

 


1.       识别’低效执行’的SQL语句 
用下列SQL工具找出低效SQL: 

 

复制代码
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, 
        ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, 
        ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, 
        SQL_TEXT 
FROM   V$SQLAREA 
WHERE  EXECUTIONS>0 
AND     BUFFER_GETS > 0 
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8 
ORDER BY 4 DESC; 
复制代码

 

 

 

2.查找单条语句的内存占用率 

复制代码
alter system set pga_aggregate_target=10m 
alter system set workarea_size_policy=auto; 
select distinct * from a where rownum<500000; 

select sql_text,operation_type,policy,(last_memory_used/1024/1024), 
last_execution,last_tempseg_size 
from v$sql i,v$sql_workarea a 
where i.hash_value=a.hash_value 
and sql_text='select distinct * from a where rownum<500000'; 
复制代码

 


Top 10 by Buffer Gets: 

复制代码
set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
buffer_gets, executions, buffer_gets/executions "Gets/Exec", 
hash_value,address 
FROM V$SQLAREA 
WHERE buffer_gets > 10000 
ORDER BY buffer_gets DESC) 
WHERE rownum <= 10 ; 
复制代码


Top 10 by Physical Reads: 

复制代码
set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
disk_reads, executions, disk_reads/executions "Reads/Exec", 
hash_value,address 
FROM V$SQLAREA 
WHERE disk_reads > 1000 
ORDER BY disk_reads DESC) 
WHERE rownum <= 10 ; 
复制代码

 

 

Top 10 by Executions: 

复制代码
set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
executions, rows_processed, rows_processed/executions "Rows/Exec", 
hash_value,address 
FROM V$SQLAREA 
WHERE executions > 100 
ORDER BY executions DESC) 
WHERE rownum <= 10 ; 
复制代码

 

 

Top 10 by 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 ; 
复制代码

 

 

Top 10 by Sharable Memory: 

复制代码
set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
sharable_mem, executions, hash_value,address 
FROM V$SQLAREA 
WHERE sharable_mem > 1048576 
ORDER BY sharable_mem DESC) 
WHERE rownum <= 10 ; 
复制代码

 

 

Top 10 by 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 ;
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值