在分析SQL性能的时候,经常需要确定资源消耗多的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
set pagesize 600;
set linesize 120;
select substr(sql_text, 180) "sql", count(*), sum(executions) "totexecs"
  from v$sqlarea
where executions < 5
group by substr(sql_text, 180)
having count(*) > 30
order by 2;

8 游标的观察
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;

9 查看当前用户&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;

ORACLE 如何定位消耗资源的SQL的更多相关文章

  1. 消耗资源的SQL的定位方法;

    解答:select sql_text from v$sql where disk_reads > 1000 or (executions > 0 and buffer_gets/execu ...

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

    链接:http://www.xifenfei.com/699.html 标题:oracle 中如何定位重要(消耗资源多)的SQL 作者:惜分飞©版权所有[文章允许转载,但必须以链接方式注明源地址,否则 ...

  3. (原创)性能测试中,Oracle服务器定位CPU使用率高的瓶颈(SQL)

    本篇博客记录一次性能测试过程中,定位对CPU使用率高的瓶颈问题,主要定位SQL为准 一.用SQL命令定位1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据 ...

  4. 如何查找消耗资源较大的SQL

    对于优化来讲,查找消耗资源较大的SQL至关重要,下面介绍几个之前用到的SQL. 1.从V$SQLAREA中查询最占用资源的查询. select b.username username,a.disk_r ...

  5. Oracle中查询和定位数据库问题的SQL语句

    --1)查询和定位数据库问题的SQL语句--Oracle常用性能监控SQL语句.sql --1查询锁表信息 select vp.SPID, vs.P1, vs.P1RAW, vs.P2, vs.EVE ...

  6. Oracle—通过操作系统进程查看数据库sql语句

    工作中遇到一个问题,某报表运行时间特别长,通过操作系统可以看到一个oracle进程消耗资源比较大,如何能够通过该操作系统进程找到具体SQL呢.记录如下: 1.查看Linux系统进程号 可以通过top动 ...

  7. 查询oracle比较慢的session和sql

    注:本文来源:sxhong   <查询oracle比较慢的session和sql> ---查询最慢的sql select * from ( select parsing_user_id,e ...

  8. Oracle性能分析1:开启SQL跟踪和获取trace文件

    当Oracle查询出现效率问题时,我们往往须要了解问题所在,这样才干针对问题给出解决方式.Oracle提供了SQL运行的trace信息,当中包括了SQL语句的文本信息.一些运行统计,处理过程中的等待, ...

  9. oracle 查询最近执行过的 SQL语句(转载)

    oracle 查询最近执行过的 SQL语句 (2014-06-09 18:02:43) 转载▼   分类: Database oracle 查询最近执行过的 SQL语句 select sql_text ...

随机推荐

  1. leetcode Largest Rectangle in Histogram 解法二

    上一篇文章讲了该题的一个解法.后来又发现一个更好的解法. 首先依旧考虑一个升序的数列,例如1,2,3,4,5.那么它的最大矩形显然是有5种可能,即 1*5,2*4,3*3,4*2,1*5.所以最大的矩 ...

  2. POJ 1363 Rails(栈)

    思路:将出车站的顺序存入数组train,由于入车站的顺序是固定的,为1~N,所以用P表示进站的车,初始为1. 接下来举例说明吧: 原来入站顺序:    1 2 3 4 5 读入的出战顺序: 3 4 2 ...

  3. Javascript通过className选择元素

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. javascript背景淡入淡出

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. 欧拉工程第69题:Totient maximum

    题目链接 欧拉函数φ(n)(有时也叫做phi函数)可以用来计算小于n 的数字中与n互质的数字的个数. 当n小于1,000,000时候,n/φ(n)最大值时候的n. 欧拉函数维基百科链接 这里的是p是n ...

  6. compiler 学习

    一款强大的编译器LLVM:http://llvm.org/docs/GettingStarted.html#layout http://llvm.org/docs/LangRef.html http: ...

  7. ios开发--清理缓存

    ios文章原文 一段清理缓存的代码如下: dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) , ...

  8. python各种类型转换-int,str,char,float,ord,hex,oct等

    int(x [,base ])         将x转换为一个整数  long(x [,base ])        将x转换为一个长整数  float(x )               将x转换到 ...

  9. VIM树状文件列表NERDTree

    下载和配置 NERDTree插件的官方地址如下,可以从这里获取最新的版本 https://github.com/scrooloose/nerdtree 下载zip安装包 或者使用下面官网源文件安装方法 ...

  10. .md文件 Markdown 语法说明

    Markdown 语法说明 (简体中文版) / (点击查看快速入门) 概述 宗旨 兼容 HTML 特殊字符自动转换 区块元素 段落和换行 标题 区块引用 列表 代码区块 分隔线 区段元素 链接 强调 ...