[20160517]11GR2Cursor_Sharing=force的bug

[20160517]11GR2Cursor_Sharing=force的bug.txt

--链接https://jonathanlewis.wordpress.com/2016/05/16/cursor_sharing-problem/,重复测试:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING         VERSION    BANNER
------------------- ---------- ----------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

create table t1 ( n1 number(8,0), v1 varchar2(10), d1 date, t1 timestamp);
insert into t1 values(-1,'x',sysdate, systimestamp);
begin
dbms_stats.gather_table_stats(
ownname          => user,
tabname          =>'T1',
method_opt       => 'for all columns size 1'
);
end;
/

2.测试插入数据:
alter session set cursor_sharing = force;
insert into t1 values(1, 'A', date'2016-01-01', null);
insert into t1 values(1, 'A', date'2016-01-02', null);
insert into t1 values(1, 'A', date'2016-01-03', null);

--记下sql_id=58udhcm270bhn

insert into t1 values(1, 'A', null, timestamp'2016-01-01 00:00:00');
insert into t1 values(1, 'A', null, timestamp'2016-01-02 00:00:00');
insert into t1 values(1, 'A', null, timestamp'2016-01-03 00:00:00');

--记下sql_id=d6psz1h127xm5

SELECT sql_id, child_number, hash_match_failed
  FROM v$sql_shared_cursor
WHERE sql_id in ('58udhcm270bhn', 'gssz5cbnt7mgn')
order by sql_id, child_number ;

SQL_ID        CHILD_NUMBER H
------------- ------------ -
58udhcm270bhn            0 N
58udhcm270bhn            1 Y
58udhcm270bhn            2 Y
gssz5cbnt7mgn            0 N
gssz5cbnt7mgn            1 Y
gssz5cbnt7mgn            2 Y
6 rows selected.

--可以发现每次执行产生1个子光标,导致光标无法共享.
SCOTT@book> @ &r/share gssz5cbnt7mgn
SQL_TEXT                       = insert into t1 values(:"SYS_B_0", :"SYS_B_1", null, timestamp:"SYS_B_2")
SQL_ID                         = gssz5cbnt7mgn
ADDRESS                        = 000000007B8F7CE8
CHILD_ADDRESS                  = 000000007B5B1950
CHILD_NUMBER                   = 0
REASON                         =
--------------------------------------------------
SQL_TEXT                       = insert into t1 values(:"SYS_B_0", :"SYS_B_1", null, timestamp:"SYS_B_2")
SQL_ID                         = gssz5cbnt7mgn
ADDRESS                        = 000000007B8F7CE8
CHILD_ADDRESS                  = 000000007CF24D60
CHILD_NUMBER                   = 1
HASH_MATCH_FAILED              = Y
REASON                         =
--------------------------------------------------
SQL_TEXT                       = insert into t1 values(:"SYS_B_0", :"SYS_B_1", null, timestamp:"SYS_B_2")
SQL_ID                         = gssz5cbnt7mgn
ADDRESS                        = 000000007B8F7CE8
CHILD_ADDRESS                  = 000000007CC3B258
CHILD_NUMBER                   = 2
HASH_MATCH_FAILED              = Y
REASON                         =
--------------------------------------------------
PL/SQL procedure successfully completed.

--看来解决sql语句共享的最好的方案还是"合理"地使用绑定变量.通过参数cursor_sharing = force往往是没有办法的办法.
--我在10g下使用dblink也遇到类似的问题.链接:http://blog.itpub.net/267265/viewspace-1985215/

时间: 2024-09-05 01:59:41

[20160517]11GR2Cursor_Sharing=force的bug的相关文章

ursor_sharing=SIMILAR 引发大量的 cursor: mutex S

今天一个朋友的数据库11.2.0.1 遇到这个问题,导致业务大面积的瘫痪查看等待如下:   IN_NUM EVENT_NAME                                                       NOW_SNAP_ID NOW_WAITED_TOTAL WAIT_TIME_MICRO    ROW_NUM ---------- ---------------------------------------------------------------- 

由cursor_sharing=force导致的ora-600错误

1.在alert_lxdb.log日志中报600错误 Errors in file /u01/app/oracle/admin/lxdb/udump/lxdb_ora_50379.trc: ORA-00600: internal error code, arguments: [kkslhsh1], [101], [], [], [], [], [], [] 注意这个问题可能会导致产生非常大的trc 文件而导致 文件系统满! 2.本问题的产生根本原因: 设置了 cursor_sharing = f

【MySQL】全索引扫描的bug

一 简介  在检查某业务数据库的slowlog 时发现一个慢查询,查询时间 1.57s ,检查表结构 where条件字段存在正确的组合索引,正确的情况下优化器应该选择组合索引,而非为啥会导致慢查询呢? 且看本文慢慢分析.二 分析   案例中的MySQL数据库版本 5.6.16 将生产环境的sql做适当修改,where条件不变.读者朋友可以测试一下其他的版本. root@rac1 10:48:11>explain select id, -> gmt_create, -> gmt_modif

MySQL源码学习:关于整型判断的一个bug

问题: 这个bug来源于官方的一个bug报告,感谢@印风_小希 . 现象很容易描述,直接上例子. 5.1以后的版本都有此问题. CREATE TABLE `tb` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, KEY `a` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into tb values (1,2),(2,5),(3,8),(4,6); select * from t

ExtJs2.2的grid的2个Bug:滚动条以及点击点击行后发生偏移问题

    最近用了很多开源的东西,发现开源的东西也是Bug如云,这不,又遇到了ExtJs2.2中的Grid的Bug.    bug1:出现纵向滚动条后,将横向滚动条拖到最后,然后会发现每选择一条记录整个grid就会往左移,右边空出一部份空白.   Bug2:出现横向滚动条后,向右稍拉滚动条,然后点击任意一行,会发现行内容向左偏移,滚动条向右越多,偏移越明显. ================ 分析:经查Ex.t2.3已无此Bug,跟踪两个代码后总结如下(我可是跟踪了好久的) Bug1:修改Grid

关于Oracle中重启数据库的一个bug

关于drop database在oracle中是致命的操作,这个操作自己在测试环境中体验过,会完全删除数据文件,因此这个操作非常敏感但是实用性不强,不过话说过来,这个操作也不是随便就能执行的,除了操作敏感的权限之外,其实还是有一些前提条件的. 在数据库open状态,是无法运行这个命令的.SQL> drop database TEST;drop database TEST              *ERROR at line 1:ORA-00933: SQL command not proper

ie 8-如何兼容ie8不支持小于1px的bug?

问题描述 如何兼容ie8不支持小于1px的bug? 现在需要每秒div宽度增加0.5px,其他浏览器都好,就是ie8不支持,一直为0,除了判断浏览器类型,还有其他方法吗? 解决方案 用一个变量来记录,不要使用parseInt(dom.style.width)来获取,ie8-每次只能增加1px <div id=""dv"" style=""border:solid 1px #000""></div><

C++语言出现的bug

输出语句不管是C语言的printf();还是cout << "" << endl; 在循环语句中会出现一个bug: 下面是不正常的两种情况: 下面是正常的: 可能的原因: "\n"表示内容为一个回车符的字符串.std::endl是流操作子,输出的作用和输出"\n"类似,但可能略有区别. std::endl输出一个换行符,并立即刷新缓冲区. 例如, std::cout << std::endl; 相当于 std:

Android端bug收集的SDK有哪些?

问题描述 Android端bug收集的SDK有哪些? Android端的crash追踪,bug收集的SDK有哪些?求推荐啊!! 解决方案 友盟,bugly(腾讯) 解决方案二: Android端不通过登录SDK实现QQ登录验证 解决方案三: 目前我接触到的是 友盟+TalkingData 解决方案四: Umeng和OneAPM