ITPub博客

首页 > 数据库 > Oracle > 找出高CPU利用率的SQL:

找出高CPU利用率的SQL:

原创 Oracle 作者:hsqiang 时间:2008-01-03 11:35:13 0 删除 编辑

SELECT /*+ ORDERED */
sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN
(SELECT decode(sql_hash_value, 0, prev_hash_value, sql_hash_value), decode(sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '&pid'))
ORDER BY piece ASC;

查看该sql语句的执行计划(发现是全表扫);
分析这张表:analyze table t1 compute statistics for all indexed columns;
再查看该sql语句的执行计划(rowid扫);
再查看OS的CPU利用率,显著下降。
[Ref: http://www.eygle.com/case/how.to.getsql.which.cost.most.CPU.htm ]

SELECT V.SID, V.VALUE, B.USERNAME, B.OSUSER, B.TERMINAL, B.MODULE
FROM V$STATNAME S, V$SESSTAT V, V$SESSION B
WHERE S.NAME = 'CPU used by this session'
AND V.STATISTIC# = S.STATISTIC#
AND V.SID = B.SID
AND V.VALUE > 0
ORDER BY 2 DESC

[@more@]

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

上一篇: 没有了~
下一篇: 高效的SQL
请登录后发表评论 登录
全部评论
  • 博文量
    3
  • 访问量
    1901