查看需绑定变量的sql

利用 FORCE_MATCHING_SIGNATURE,捕获可以绑定变量减少硬解析的sql以及执行次数:

(相似sql的 FORCE_MATCHING_SIGNATURE相同)

以下sql查找的是执行超过20次的未绑定变量的sql

SET pages 10000

SET linesize 250

column FORCE_MATCHING_SIGNATURE format 99999999999999999999999

WITH c AS

(SELECT FORCE_MATCHING_SIGNATURE,COUNT(*) cnt FROM v$sqlarea WHERE FORCE_MATCHING_SIGNATURE!=0 GROUP BY FORCE_MATCHING_SIGNATURE HAVING COUNT(*) > 20 )

,

sq AS

(SELECT sql_text ,FORCE_MATCHING_SIGNATURE,

row_number() over (partition BY FORCE_MATCHING_SIGNATURE ORDER BY sql_id DESC) p

FROM v$sqlarea s WHERE FORCE_MATCHING_SIGNATURE IN

(SELECT FORCE_MATCHING_SIGNATURE FROM c ) )

SELECT sq.sql_text ,

sq.FORCE_MATCHING_SIGNATURE,c.cnt "unshared count" FROM c,sq

WHERE sq.FORCE_MATCHING_SIGNATURE=c.FORCE_MATCHING_SIGNATURE AND sq.p =1 ORDER BY c.cnt DESC;

测试:

alter system flush shared_pool;

create table test as select * from dba_objects;

构造相似的sql并执行:

select * from test where object_id=201;

select * from test where object_id=202;

select * from test where object_id=203;

select * from test where object_id=204;

select * from test where object_id=205;

select * from test where object_id=206;

select * from test where object_id=207;

select * from test where object_id=208;

select * from test where object_id=209;

select * from test where object_id=210;

select * from test where object_id=211;

select * from test where object_id=212;

select * from test where object_id=213;

select * from test where object_id=214;

select * from test where object_id=215;

select * from test where object_id=216;

select * from test where object_id=217;

select * from test where object_id=218;

select * from test where object_id=219;

select * from test where object_id=220;

select * from test where object_id=221;

select * from test where object_id=222;

可以通过上述sql得到需变量绑定的sql

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值