当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