感觉我这辈子都不会忘记这个错误码了
起因:某天晚上发现一个表没法插入数据,plsql报错:“表不存在”,试了各种命令,truncate、drop都不行。因为这张表是张不太影响业务的表,而且报错原因问了不少大佬,都百思不得其解,实在是超出了我的认知范围,晚上11点多我就心大地回家了。第二天,8点多业务反馈系统到处都报错了,发现另一张非常影响业务的表出现了类似的情况。然后,系统团队的专业人士来看,无果,数据库重启,无果,系统重启(虽然知道没什么用),无果,最后找来了oracle的专家,出了一份故障报告。
因为涉及到公司隐私,我不能放出报告原件。(报告上写了:此文档仅供(我的公司名称)与oracle高级客户服务部(ACS)审阅。不得向与此无关的个人或机构传阅或复制。)
只记得专家和系统同事拷问了我的全部操作,他们那边日志也可以看到我执行过的语句。最后的结论是:遇到了oracle数据库的漏洞,需要数据库升级打补丁解决。
我问:为什么就让我遇到了呢?
专家老师(一个看起来就比较酷比较大牛的小哥):你比较幸运呀!
报告通篇我都看不太懂,以下是我的浅薄理解:
ORA600[ktecgs:kcbz_objdchk]报错是指对象校验时发现不一致。怀疑时bug35985645-partitioning。
在对表做DML操作时,进程发现对象的id在磁盘和内存中的号码对不上。即逻辑数据校验出错,原因是oracle在更新内部数据字典或者写入磁盘时出现写丢失的问题。