首页 > Linux操作系统 > Linux操作系统 > ORA-00600: internal error code, arguments: [4511], [], [], [], [], [], [], []
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], [], [], [], [], []
*** 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)
Modified
03-JUN-2010
Type
REFERENCE
Note: For additional ORA-600 related information please read Note:146580.1
PURPOSE:
This article discusses the internal error "ORA-600 [kcbzpb_1]", what
it means and possible actions. The information here is only applicable
to the versions listed and is provided only for guidance.
ERROR:
ORA-600 [kcbzpb_1] [a] [b] [c]
VERSIONS:
versions 8.0 to 10.1
DESCRIPTION:
A block has been read cleanly from disk and updated successfully by the
clients of the cache layer.
Before the cache layer writes the block back to disk it does a health
check on the cache header.
If requested to do so (default), it generates a checksum for the block.
The health check is failing.
ARGUMENTS:
Arg [a] Expected relative dba of block
Arg [b] Indicator to type of corruption in header
Arg [c] 1 if a checksum was requested (default),
0 if no checksum was requested (db_block_checksum = FALSE)
FUNCTIONALITY:
Kernel Cache Buffer management
IMPACT:
PROCESS FAILURE
POSSIBLE INSTANCE FAILURE DUE TO DBWR PROCESS FAILURE
MEMORY CORRUPTION
SUGGESTIONS:
A stray write into memory overwrote the cache header. This could be the
result of a hardware or OS issue.
Check all memory hardware for possible errors.
If the Known Issues section below does not help in terms of identifying
a solution, please submit the trace files and alert.log to Oracle
Support Services for further analysis.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11088128/viewspace-687257/ ,如需转载,请注明出处,否则将追究法律责任。