yangtingkun
===========================================================
ORA-600(15851)错误
===========================================================

一个11g上面的错误。


会话的cursor_sharing设置不为EXACT时,且GROUP BY操作中,聚集函数的参数是常量时,会引发这个bug

下面通过一个简单的例子来再现问题:

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Solaris: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SQL> SELECT MAX(0), MAX(0) FROM DUAL GROUP BY DUMMY;

MAX(0) MAX(0)
---------- ----------
0 0

SQL> SHOW PARAMETER CURSOR_SHARING

NAME TYPE VALUE
------------------------------------ ---------------------- ----------------
cursor_sharing string EXACT
SQL> ALTER SESSION SET CURSOR_SHARING = SIMILAR;

会话已更改。

SQL> SELECT MAX(0), MAX(0) FROM DUAL GROUP BY DUMMY;

MAX(0) MAX(0)
---------- ----------
0 0

SQL> SELECT MIN(0), MIN(0) FROM DUAL GROUP BY DUMMY;
SELECT MIN(0), MIN(0) FROM DUAL GROUP BY DUMMY
*
1 行出现错误:
ORA-00600:
内部错误代码, 参数: [15851], [], [], [0x000000001], [

避免这个bug的方法就是将CURSOR_SHARING设置为EXACT。上面的例子展示了在EXACT的情况下,Oracle并不报错,而将会话的CURSOR_SHARING修改为SIMILAR,再分析新的SQL,就出现了这个600错误。

METALINK在文章Doc ID: Note:5757106.8中对这个bug进行了描述,Oracle在10.2.0.411.1.0.711.2FIX了这个bug

yangtingkun 发表于:2008.06.24 23:52 ::分类: ( ORACLE , Bug ) ::阅读:(170次) :: 评论 (0)

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
Blog信息
网站链接...