ORA-00600: internal error code, arguments: [4511], [], [], [], [], [], [], []

Alert报错信息如下:

 

ARC0: Completed archiving  log 5 thread 1 sequence 8094

Thu Jul 22 09:16:08 2010

Errors in file /oracle/app/oracle/admin/xxx/udump/sdh_ora_22264.trc:

ORA-00600: internal error code, arguments: [4511], [], [], [], [], [], [], []

Thu Jul 22 10:03:59 2010

Errors in file /oracle/app/oracle/admin/xxx/udump/xxx_ora_3041.trc:

ORA-00600: internal error code, arguments: [4511], [], [], [], [], [], [], []

Thu Jul 22 10:04:21 2010

Errors in file /oracle/app/oracle/admin/xxx/udump/xxx_ora_3147.trc:

ORA-00600: internal error code, arguments: [4511], [], [], [], [], [], [], []

Thu Jul 22 10:04:27 2010

Errors in file /oracle/app/oracle/admin/xxx/udump/xxx_ora_3151.trc:

ORA-00600: internal error code, arguments: [25012], [3], [60], [], [], [], [], []

Thu Jul 22 10:04:35 2010

Errors in file /oracle/app/oracle/admin/xxx/udump/xxx_ora_3151.trc:

ORA-00600: internal error code, arguments: [25012], [3], [60], [], [], [], [], []

Thu Jul 22 10:04:42 2010

Errors in file /oracle/app/oracle/admin/xxx/udump/xxx_ora_3151.trc:

ORA-00600: internal error code, arguments: [25012], [3], [60], [], [], [], [], []

Thu Jul 22 10:04:51 2010

Errors in file /oracle/app/oracle/admin/xxxudump/xxx_ora_3151.trc:

ORA-00600: internal error code, arguments: [25012], [3], [987], [], [], [], [], []

 

xxx_ora_22264.trc显示如下

 

*** SESSION ID:(129.44845) 2010-07-22 09:16:08.743

*** 2010-07-22 09:16:08.743

ksedmp: internal or fatal error

ORA-00600: internal error code, arguments: [4511], [], [], [], [], [], [], []

Current SQL statement for this session:

DELETE FROM xx_VALUE_TMP

----- PL/SQL Call Stack -----

  object      line  object

  handle    number  name

c00000036f5f7900      

 636  package body xx.PG_xxx_RULE

c00000039318bbc0         1  anonymous block

分析:由上面的日志显示,每次报告ORA-00600[4511]错误都和一个语句有关DELETE FROM xx_VALUE_TMP,而这个语句是属于xx.PG_xx_RULE这个包的。

 

多次和应用厂商确认后,他们确认该应用程序段是新上的一个业务。从语句表面来看整个程序段中没有COMMIT操作,同时使用了嵌套循环,语句中DELETE FROM xx_VALUE_TMP操作没有WHERE条件

产生问题后,从oracle内部我们拿到了与此故障对应的文档

ORA-600 [kcbzpb_1] (Doc ID 139011.1)

其中讲到了,反复以离散写方式更新buff cache header,在某些情况下会造成坏块。

实际上出错的程序在业务并发时,此问题程序进行了反复全表delete(也就是离散写),这就是触发坏块的原因。

从以上分析来看,应用开发者在设计这个程序时,未考虑对应的表对象的并发操作。导致表的buff cache header被并发操作,因此在某些情况下,造成了数据库坏块。实际上,从该应用实现功能上来看,需要用临时表来实现,而在这里却把数据库的永久表当成了临时表来使用,所以建议对应用进行修改,使用global temp table来避免反复离散写。

 由于ORACLE在反复以离散写方式更新buff cache header的时候,会对数据库造成不利的影响,这是程序开发人员应具备的常识。所以程序开发的时候应该避免此情况的发生,这里的相应处理方法就是使用global temp table

 

 

ORA-600 [kcbzpb_1] (Doc ID 139011.1)
Modified03-JUN-2010TypeREFERENCE

 

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

转载于:http://blog.itpub.net/11088128/viewspace-687257/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值