执行SQL语句报ORA-00600 错误的解决

在部署包含jsp、struts和ejb的新功能后,遇到WebLogic连接池失效及ORA-00600内部错误。经过排查和尝试,包括重启数据库、统计表信息等,最终通过在Oracle数据库初始化参数文件中设置_B_TREE_BITMAP_PLANS为FALSE解决了问题。

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

最近公司应用新开发了 几个功能(jsp+struts+ejb),当部署成功后,执行其中的一个功能后发现异常错误,

weblogic连接池失效,同时ORACLE ALERT日志报如下错误

ORA-00600: internal error code, arguments: [qkabix], [0], [], [], [], [], [], []

一开始是怀疑RAC有问题,重新启动数据库后,没有解决,后来怀疑是WEBLOGIC的问题,重新启动及部署应用后,依然没有解决。最后到METALINK上查找相关资料,发现BUGNO 5945798 与该现象相似,解决办法是对查询中涉及的表进行统计。

我执行了一下过程

EXEC DBMS_STATS.GATHRE_SCHEMA_STATS('USER');

但是执行之后,错误仍然没有解决,没有办法,在metalink上将这个问题提交,没想到,已经夜里11点多了,还有人在回复问题(估计不是中国吧),oracle给我的回复如下

Searched: WebIV
Keywords: qkabix qkaix qkatab qkajoi qkaqkn qkadrv
Found:
23 Bug.5871502 (10) CT IS GETTING ORA-00600 [QKABIX] INTERMITTANTLY. P59. V1020:
--> working on getting a reproducible testcase
11 Bug.5945798 (31) ORA-00600 [QKABIX] WHILE RUNNING A SELECT STATEMENT P197. V1020:
--> bug closed as Could Not Reproduce after setting init.ora parameter
_B_TREE_BITMAP_PLANS to FALSE and issue was resolved

eos (end of section)

18-APR-07 18:19:35 GMT

.
UPDATE
=======
Hello Wenbo,

Can you pls try setting _B_TREE_BITMAP_PLANS to FALSE and see if it resolves the issue.

Since you are not able to reproduce the error from a sqlplus session, you will need to set this parameter in the pfile/s
pfile:

_B_TREE_BITMAP_PLANS=FALSE

Then shutdown and restart the database.


 

按照oracle的要求操作,问题解决。看来oracle总嘲笑微软的bug多,其实自己的也不少呀

### ORA-00600 错误解决方案 ORA-00600Oracle 数据库中的一个内部错误代码,通常表示数据库遇到了不可预见的问题。此错误可能由多种原因引起,例如数据块损坏、内存问题或特定 SQL 语句执行异常。以下是解决 ORA-00600 错误的一般方法: #### 1. 确定具体错误参数 ORA-00600 错误通常会伴随一组参数值,这些参数可以提供关于错误来源的线索。例如,在引用中提到的错误场景中,可以通过检查错误日志获取更多详细信息[^2]。 #### 2. 检查自动诊断存储库 (ADR) Oracle 自动诊断存储库 (ADR) 中会记录与 ORA-00600 相关的事件,并生成对应的 Incident 文件。通过使用 ADR 命令解释器(ADRCI),可以提取和分析这些文件以帮助定位问题的根本原因[^2]。 #### 3. 使用 My Oracle Support (MOS) 访问 My Oracle Support (MOS) 并利用 ORA-00600 Lookup 工具(参考 Note 600.1)来查找特定 ORA-00600 错误的相关信息。此外,可以使用 Incident Packaging Service (IPS) 来打包相关的跟踪信息以便进一步分析。 #### 4. 检查数据库状态 在某些情况下,ORA-00600 错误可能是由于数据库未正确关闭或启动导致的。例如,如果尝试启动一个已经在运行的实例,则需要先关闭实例再重新启动[^1]。 ```sql SQL> shutdown abort; SQL> startup; ``` #### 5. 检查查询语句 某些复杂的查询可能导致 ORA-00600 错误。例如,在引用中提到的一个查询涉及多个表连接和条件过滤,可能会引发此错误[^3]。建议简化查询逻辑并逐步排查问题。 #### 6. 应用补丁或升级版本 如果 ORA-00600 错误是由已知的 Bug 引起的,可能需要应用相应的补丁程序或升级到更高版本的 Oracle 数据库。确保系统始终运行最新的稳定版本[^2]。 ```bash opatch apply <patch_number> ``` ### 示例代码:检查数据库实例状态 以下脚本可用于检查当前数据库实例的状态,以确保其正常运行。 ```sql SELECT instance_name, status FROM v$instance; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值