工作需要每月将总部下发的结算数据导入到表中,然后进行统计清分。每个月的数据量很大,累计下来后数据量更大。用sqlldr导入数据速度比较快。本次用sqlldr导入8月结算数据后,进行统计时报错:ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_3], [0], [0], [1], [], [], [], []。这不是第一次碰到这样的问题了,其实就是表中数据损坏了。首先想到的解决办法是删除这个表,重新导入数据,结果往往是又碰到这个问题。后来想到这可能是某些存储区域有问题,也就不再删除坏表了,解决办法如下:
1、通过日志知道计算到哪一步,再根据这一步涉及到的表,统计一下相关表的记录数就可以定位到表了。语句select count(*) from emsapp_js_jk_bcf 遍历整个表,碰到坏块就会报错。也可以加上时间条件:select count(*) from emsapp_js_jk_bcf t where t.jsrq>=to_date('20180801'