查询消耗资源的sql和session

1,v$sql

用v$sql视图查询,通过sql语句获取缓存的次数来决定,buffer_gets desc排列

SQL> SELECT *
  2    FROM (SELECT RANK() OVER(ORDER BY BUFFER_GETS DESC) AS RANK_BUFGETS,
  3                 buffer_gets,
  4                 TO_CHAR(100 * RATIO_TO_REPORT(BUFFER_GETS) OVER(), '999,99') PCT_BUFGETS,
  5                 s.sql_text
  6            FROM V$SQL S)
  7   WHERE RANK_BUFGETS < 11;
 
RANK_BUFGETS BUFFER_GETS PCT_BUFGETS                                                                      SQL_TEXT
------------ ----------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
           1  2956873070      15                                                                          DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate;  broken BOOLEAN :
           2  2823167833      14                                                                          DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate;  broken BOOLEAN :
           3  2049096597      11                                                                          INSERT INTO TRIGGER_OF_CORTAB_0 SELECT PROVIDERID FROM MLOG$_ON_COR_TABLE_0
           4  2048987393      11                                                                          DELETE FROM MLOG$_ON_COR_TABLE_0
           5  1575917593       8                                                                          INSERT INTO TRIGGER_OF_CORTABOTHER SELECT PROVIDERID FROM MLOG$_ON_COR_TABLE_OTH
           6  1575808391       8                                                                          DELETE FROM MLOG$_ON_COR_TABLE_OTHER
           7  1409073728       7                                                                          select distinct appid from ali_bchance_intro_pic where state=:"SYS_B_0"
           8  1409073660       7                                                                          select id from ali_bchance_intro_pic where (oracle_to_unix(sysdate)-oracle_to_un
           9   558996022       3                                                                          INSERT /*+ BYPASS_RECURSIVE_CHECK */ INTO "STAT"."VISIT_SUPCAT_STAT"(M_ROW$$,"ID
          10   520863427       3                                                                          SELECT b.session_id AS sid, NVL(b.oracle_username, :"SYS_B_00") AS username, a.o
 
10 rows selected
 
SQL>


2,dba_hist_sqlstat

从DBA_HIST_SQLSTAT视图中选出最占用资源的sql,然后通过sql_id查找视图v$sqlarea

SQL> select distinct a.sql_id, b.sql_text
  2    from (select hs.sql_id,
  3                 hs.snap_id,
  4                 hs.disk_reads_delta,
  5                 hs.executions_delta,
  6                 hs.disk_reads_delta /
  7                 decode(hs.executions_delta, 0, 1, hs.executions_delta)
  8            from dba_hist_sqlstat hs
  9           where hs.disk_reads_delta > 10000
 10           order by hs.disk_reads_delta desc) a
 11    join v$sqlarea b
 12      on a.sql_id = b.sql_id
 13   where rownum < 20;
 
SQL_ID        SQL_TEXT
------------- --------------------------------------------------------------------------------
avrr6jh7z7wvj  delete from "STAT"."VISIT_SUPCAT_STAT"
fw2wwvf35jthy select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
96d5wskfgbwp3 select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
7999tyrb33gpy INSERT /*+ BYPASS_RECURSIVE_CHECK */ INTO "STAT"."VISIT_SUPCAT_STAT"(M_ROW$$,"ID
b6usrg82hwsa3 call dbms_stats.gather_database_stats_job_proc (  )
47dvkng1gqxjt select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
azuahs9jvm4t7 select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
 
7 rows selected
 
SQL>


3,v$sqlarea

通过sql语句对磁盘的访问次数 disk_reads,用v$sqlarea

SQL> select *
  2    from (select b.username username,
  3                 a.disk_reads reads,
  4                 a.executions exec,
  5                 a.disk_reads / decode(a.executions, 0, 1, a.executions) rds_exec_ratio,
  6                 a.sql_text Statement
  7            from v$sqlarea a, dba_users b
  8           where a.parsing_user_id = b.user_id
  9             and a.disk_reads > 100000
 10           order by a.disk_reads desc)
 11   where rownum < 30;
 
USERNAME                            READS       EXEC RDS_EXEC_RATIO STATEMENT
------------------------------ ---------- ---------- -------------- --------------------------------------------------------------------------------
STAT                              6400061         11 581823.7272727  delete from "STAT"."VISIT_SUPCAT_STAT"
STAT                              3513263         10       351326.3 INSERT /*+ BYPASS_RECURSIVE_CHECK */ INTO "STAT"."VISIT_SUPCAT_STAT"(M_ROW$$,"ID
SYS                               1116643         26 42947.80769230 call dbms_stats.gather_database_stats_job_proc (  )
SYS                                404793          8      50599.125  BEGIN    SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS');  END;
SYS                                319883         26 12303.19230769 call dbms_space.auto_space_advisor_job_proc (  )
SYS                                314802        520 605.3884615384 insert into wri$_adv_objspace_trend_data select timepoint,  space_usage, space_a
SYS                                225518          1         225518 select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
SYS                                218308          1         218308 select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
RADER                              197115         30         6570.5 DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate;  broken BOOLEAN :
SYS                                182852          1         182852 select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
RADER                              181231         30 6041.033333333 DELETE FROM SUPPLY_LOG T WHERE T.PUBDATE SYS                                160771          1         160771 select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
SYS                                152768          1         152768 select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
 
13 rows selected
 
SQL>


4, v$sessmetric和v$session(SESSION回话)

逻辑读(logical_read_pct)和物理读(physical_read_pct)和cpu来排序来查看消耗较高的回话

SQL> select to_char(m.END_TIME, 'yyyy-mm-dd hh24:mi:ss') e_dttm,
  2         m.INTSIZE_CSEC / 100 ints,
  3         s.USERNAME usr,
  4         m.SESSION_ID sid,
  5         m.SESSION_SERIAL_NUM ssn,
  6         m.PHYSICAL_READS prds,
  7         m.LOGICAL_READS lrds,
  8         m.PGA_MEMORY,
  9         m.HARD_PARSES hp,
 10         m.SOFT_PARSES sp,
 11         m.PHYSICAL_READ_PCT prp,
 12         m.LOGICAL_READ_PCT lrp,
 13         ROUND(m.CPU) cpu100,
 14         s.SQL_ID
 15    from v$sessmetric m, v$session s
 16   where (m.PHYSICAL_READS > 50 or m.CPU > 50 or m.LOGICAL_READS > 50)
 17     and m.session_id = s.SID
 18     and m.SESSION_SERIAL_NUM = s.SERIAL#
 19   order by m.PHYSICAL_READS DESC, m.CPU desc, m.LOGICAL_READS desc;
 
E_DTTM                                                                            INTS USR                                   SID        SSN       PRDS       LRDS PGA_MEMORY         HP         SP        PRP        LRP     CPU100 SQL_ID
--------------------------------------------------------------------------- ---------- ------------------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- -------------
2014-08-06 17:02:33                                                              15.02 STAT                                  189      50167        782      70119    1797512          0          0        100 42.9729729          0
 
SQL>


5,查询使用频率最高的5个sql


SQL> select sql_text, executions
  2    from (select sql_text,
  3                 executions,
  4                 rank() over(order by executions desc) exec_rank
  5            from v$sql)
  6   where exec_rank <= 5;
 
SQL_TEXT                                                                         EXECUTIONS
-------------------------------------------------------------------------------- ----------
select matchbusin0_.ID as ID37_, matchbusin0_.PROVIDERID as PROVIDERID37_, match   15528215
select privilege#,level from sysauth$ connect by grantee#=prior privilege# and p    5286892
select matchbusin0_.ID as ID83_, matchbusin0_.PROVIDERID as PROVIDERID83_, match    4496001
select file# from file$ where ts#=:1                                                2639146
SELECT DECODE( :B1 , 0, 'INVALID', 1, 'VALID', 2, 'LOADING', 3, 'LOADED', 4, 'UP    1110848
 
SQL>


6,消耗磁盘读最多的5个sql

SQL> select disk_reads, sql_text
  2    from (select sql_text,
  3                 disk_reads,
  4                 rank() over(order by disk_reads desc) disk_reads_rank
  5            from v$sql)
  6   where disk_reads_rank <= 5;
 
DISK_READS SQL_TEXT
---------- --------------------------------------------------------------------------------
   6400061  delete from "STAT"."VISIT_SUPCAT_STAT"
   3513263 INSERT /*+ BYPASS_RECURSIVE_CHECK */ INTO "STAT"."VISIT_SUPCAT_STAT"(M_ROW$$,"ID
   1116643 call dbms_stats.gather_database_stats_job_proc (  )
    404793  BEGIN    SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS');  END;
    319883 call dbms_space.auto_space_advisor_job_proc (  )
 
SQL>


7,前10个大量逻辑读的sql

SQL> select buffer_gets, sql_text
  2    from (select sql_text,
  3                 buffer_gets,
  4                 dense_rank() over(order by buffer_gets desc) buffer_gets_rank
  5            from v$sql)
  6   where buffer_gets_rank <= 10;
 
BUFFER_GETS SQL_TEXT
----------- --------------------------------------------------------------------------------
 2958268573 DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate;  broken BOOLEAN :
 2823711103 DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate;  broken BOOLEAN :
 2049490914 INSERT INTO TRIGGER_OF_CORTAB_0 SELECT PROVIDERID FROM MLOG$_ON_COR_TABLE_0
 2049381689 DELETE FROM MLOG$_ON_COR_TABLE_0
 1576220854 INSERT INTO TRIGGER_OF_CORTABOTHER SELECT PROVIDERID FROM MLOG$_ON_COR_TABLE_OTH
 1576111631 DELETE FROM MLOG$_ON_COR_TABLE_OTHER
 1409344880 select distinct appid from ali_bchance_intro_pic where state=:"SYS_B_0"
 1409344812 select id from ali_bchance_intro_pic where (oracle_to_unix(sysdate)-oracle_to_un
  558996022 INSERT /*+ BYPASS_RECURSIVE_CHECK */ INTO "STAT"."VISIT_SUPCAT_STAT"(M_ROW$$,"ID
  520863427 SELECT b.session_id AS sid, NVL(b.oracle_username, :"SYS_B_00") AS username, a.o
 
10 rows selected
 
SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27013009/viewspace-1246675/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27013009/viewspace-1246675/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值