共享游标(cursor shared)_02

继续之前关于共享游标的实验
接下来要说明的一个问题是关于子游标的共享,在sql的文本完全相同的情况下,产生的父游标可能被共享,而这时cursor能否被共享就取决于子游标能否共享了,与子游标相关的关键因素是执行环境.,而非sql_text,即sql文本

实验步骤如下
SQL> show parameter optimizer_mode;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                       string      FIRST_ROWS_10
SQL> select count(*) from t1;

  COUNT(*)
----------
      1001

SQL> alter system set optimizer_mode = all_rows;

System altered.

SQL> select count(*) from t1;

  COUNT(*)
----------
      1001

SQL> col sql_text format a25;
SQL> select sql_id, sql_text, child_number, optimizer_mode, plan_hash_value from v$sql where sql_id = (select prev_sql_id from v$session where sid = sys_context('userenv', 'sid'));

SQL_ID        SQL_TEXT                  CHILD_NUMBER OPTIMIZER_ PLAN_HASH_VALUE
------------- ------------------------- ------------ ---------- ---------------
5bc0v4my7dvr5 select count(*) from t1              0 FIRST_ROWS      3724264953
5bc0v4my7dvr5 select count(*) from t1              1 ALL_ROWS        3724264953

SQL> select sql_id, optimizer_mode_mismatch from v$sql_shared_cursor where sql_id = '5bc0v4my7dvr5'
  2  ;

SQL_ID        O
------------- -
5bc0v4my7dvr5 N
5bc0v4my7dvr5 Y

由此得出了结论,在父游标共享的情况下(v$sql中的sql_id一致), 子游标由于出现了optimizer_mode的mismatch导致了不能共享。
而关于mismatch,在上一篇里面有了简单介绍,可以通过查看v$sql_shared_cursor来进行判断。

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

转载于:http://blog.itpub.net/23527828/viewspace-680463/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值