共享游标

共享游标[@more@] 1 )父游标无法被共享的情形

与父游标有关的关键信息是SQL语句的文本。多个SQL语句只有在它们的文本完全一样才可以共享同一个父游标。这里不考虑cursor_sharing参数。

select * from t where object_id = 1000;

select * FROM t where object_id = 1000;

select * from t where object_id = 1000;

select * from t WHERE object_id = 1000;

视图v$sqlarea,可以确认系统创建了3个不同的父游标,其执行次数不同。

SQL_ID SQL_TEXT EXECUTIONS

------------- -------------------------------------------------- ----------

8t5k201n7j72y select * from t where object_id = 1000 2

303xay3pk7ddn select * FROM t where object_id = 1000 1

48fhsdafh7q9q select * from t WHERE object_id = 1000 1

2)父游标共享而子游标无法共享

与子游标有关的主要信息是执行计划与执行环境。

SQL> alter session set optimizer_mode = all_rows;

会话已更改。

SQL> select count(*) from t;

COUNT(*)

----------

11202

SQL> alter session set optimizer_mode = first_rows_10;

会话已更改。

SQL> select count(*) from t;

COUNT(*)

----------

11202

SQL> select sql_id, child_number, sql_text, optimizer_mode, plan_hash_value

2 from v$sql

3 where sql_id = (select prev_sql_id from v$session

4 where sid = sys_context('userenv', 'sid'));

SQL_ID CHILD_NUMBER SQL_TEXT OP

TIMIZER_ PLAN_HASH_VALUE

------------- ------------ -------------------------------------------------- --

-------- ---------------

cyzznbykb509s 0 select count(*) from t AL

L_ROWS 2966233522

cyzznbykb509s 1 select count(*) from t FI

RST_ROWS 2966233522

查询v$sql_shared_cursor可以得到哪种不匹配导致多个子游标的产生。

SQL> select child_number, optimizer_mode_mismatch

2 from v$sql_shared_cursor

3 where sql_id = 'cyzznbykb509s'

4 /

CHILD_NUMBER O

------------ -

0 N

1 Y

硬解析通常都是由不可共享的父游标,而不是由不可共享的子游标造成的。每个父游标一般只有少量子游标。

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

转载于:http://blog.itpub.net/9523925/viewspace-1031787/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值