ORACLE start with connect by 报错 ORA00600

针对ORACLE10.2.0.3.0在Windows2003平台下运行应用时出现的ORA-00600内部错误,通过调整optimizer_features_enable参数至10.2.0.1版本,成功解决了与kkqcbydrv1相关的bug6838105。此方法避免了禁用基于成本的connect-by转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.itpub.net/7177735/viewspace-1261532/

ORACLE 10.2.0.3.0  

平台windows 2003 

    运行某应用时候出现如下错误: 

 

插入数据表[   ]时出现  ORA-00600:内部错误代码,参数:[kkqcbydrv 1],[],[],[],[],[],[] 错误的

 

   首先分析了下该应用,此为一接口程序,从另外一个应用系统里面取得数据,运行到这一步,应该已经到了本地的统计用户,在存盘之前出现的错误。因是远程应用,联系也不那么通畅,未详细分析SQL中是否含有connect by子句。查询了下网上的帖子,湖湘文化的帖子写的比较详细,认定为

Bug 6838105 - ORA-600 [kkqcbydrv:1] from CONNECT BY query [ID 6838105.8]

,被确认影响的版本是10.2.0.3和10.2.0.4,

    建议:

alter session set optimizer_features_enable='10.2.0.1';

这个参数调整优化器的版本

   或者

   Disable cost based transformation for connect-by:

   alter session set "_optimizer_connect_by_cost_based"=false;

   不过既然是隐含参数,自然是不推荐来更改的。

我们来看看官方文档对这个参数的解释:

OPTIMIZER_FEATURES_ENABLE acts as an umbrella parameter for enabling a series of optimizer features based on an Oracle release number.

For example, if you upgrade your database from release 8.0.6 to release 9.2, but you want to keep the release 8.0.6 optimizer behavior, you can do so by setting this parameter to 8.0.6. At a later time, you can try the enhancements introduced in releases up to and including release 9.2 by setting the parameter to 9.2.0.

   OPTIMIZER_FEATURES_ENABLE扮演一个保护参数,以便基于一个ORACLE版本号设置一系列优化器特性。

   例如,如果你从8.0.6 升级到9.2,但又必须保持版本8.0.6的优化器行为,你可以把此参数设置为8.0.6即可。以后,你可以将此参数设置为9.2.0,在9.2版本或者高于此版本的系统中来尝试新的增强特性。

利用这个参数的设置,可以查看一条SQL在不同版本的优化器的执行情况。

它的值可以查询相应版本的官方文档。

故决定采用第一种方法:

用超级用户连接到本地的统计数据库,运行命令:

SQL〉Alter system set optimizer_features_enable='10.2.0.1' scope=both;

 

再次运行应用,反馈回来的消息是问题解决,特此记录一下。

 

    不过应该说明的是,这个参数不应该轻易修改,因为这个参数会影响整个数据库,很可能会导致其它性能受到影响,应该经过认证再做更改更为妥当。

    Oracle声称在10.2.0.5和11.2.0.1版本中已修复该BUG,但有一帖子:http://www.cnblogs.com/fangwenyu/archive/2010/12/08/1898841.html显示在11.1.0.6 的版本仍然存在同样的问题。Oracle 11.1.0.7 patch set或者11.2.0.1.0就发现这个问题不存在了。

从10g开始,参数optimizer_features_enable是动态的了,这个参数在oracle9i中还是静态的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值