Oracle进程在读取数据块时会做一系列逻辑检测,当发现块当中存在逻辑讹误就会触发该ORA-00600[kddummy_blkchk]等内部错误;

[kddummy_blkchk]内部函数的功能大致与[kdBlkCheckError]相仿,它们都有3个参数argument

ORA-600[kddummy_blkchk]  [file#] [block#] [check code]

ORA-600[kdBlkCheckError]   [file#] [block#] [check code]


file#即问题块所在datafile的文件号,block#即问题块的块号,check code为发现逻辑讹误时的检测种类代码;我们也可以通过file#block#查找到存在问题的对象,例如上面这个中的file#262,block#2921312,检查种类代码为18038


可以用下面语句来file#262,block#2921312对应的数据库对象是什么

Select segment_name,segment_type,owner from dba_extents wherefile_id=262 and 2921312 between block_id and block_id + blocks -1;

 

说明:如果数据量很大,那上面的查询会很慢。


参考:

http://www.oracledatabase12g.com/archives/ora-00600-kddummy_blkchk错误一例.html