Cursor Sharing监控相关语句

自己总结和摘录的一些如何发现cursor sharing问题相关的一些SQL,很多是摘自Performance Tuning Guide,绝大部分并非原创。主要是探讨如何去发现相似的SQL或者查找SQL没有共享的原因。

[@more@]

-- 如果不知道那个进程或者程序有问题可以在v$sesstat中查看parse count和execute count的比例,比例高说明存在cursor sharing方面的问题
SELECT pa.SID, pa.VALUE "Hard Parses", ex.VALUE "Execute Count"
FROM V$SESSTAT pa, V$SESSTAT ex
WHERE pa.SID = ex.SID
AND pa.STATISTIC#=(SELECT STATISTIC#
FROM V$STATNAME WHERE NAME = 'parse count (hard)')
AND ex.STATISTIC#=(SELECT STATISTIC#
FROM V$STATNAME WHERE NAME = 'execute count')
AND pa.VALUE > 0;

-- 在整个系统角度查看可能没有共享的相似SQL,如果oracle不是10g release 2,可以查看v$sqlarea,当然,SQL相似可能不仅仅有查看前n个字符一个的方法
SELECT SUBSTR(SQL_TEXT, 1, 60), COUNT(*)
FROM V$SQLSTATS
WHERE EXECUTIONS < 4
GROUP BY SUBSTR(SQL_TEXT, 1, 60)
HAVING COUNT(*) > 1;

-- 查看拥有共同执行计划的SQL
SELECT SQL_TEXT FROM V$SQLSTATS WHERE PLAN_HASH_VALUE IN
(SELECT PLAN_HASH_VALUE
FROM V$SQLSTATS
GROUP BY PLAN_HASH_VALUE HAVING COUNT(*) > 4)
ORDER BY PLAN_HASH_VALUE;

-- 查看那些重新parse次数很多的SQL,如果oracle不是10g release 2,可以查看v$sqlarea
SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS
FROM V$SQLSTATS
ORDER BY PARSE_CALLS;

-- 对于一些一模一样的SQL,如果没有shared,可以通过以下的视图查看原因
-- 有可能是客户端环境不同,用户安全设置不同等等
select * from v$sql_shared_cursor;

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

转载于:http://blog.itpub.net/136097/viewspace-1007701/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值