Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140942
  • 博文数量: 161
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -30
  • 用 户 组: 普通用户
  • 注册时间: 2017-09-21 21:45
文章分类
文章存档

2009年(1)

2008年(74)

2007年(48)

2006年(38)

我的朋友

分类: Oracle

2006-11-02 16:51:55

 
寻找CPU使用过量的session ,找出高CPU利用率的SQL:


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: ]

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

阅读(822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~