问题描述
某客户的Oracle 11.2.0.4 版本的数据库,alert日志中报错 ORA-600 qesmaGetTblSeg1。
查看MOS文档,与Bug 17957017描述的内容相似。
查看了相应的trc文件后发现
bash
vobjHd xxxxxxxxx, obsoleted 1
分析
obsoleted 1 表示该表在 Shared Pool 中的对象头(vobjHd)已被标记为"已废弃"。这通常发生在对该表执行 DDL(如 ADD PARTITION、SPLIT PARTITION、TRUNCATE 等)之后,但依赖该对象的内存结构(如 PAM、分区访问上下文)没有被正确刷新。
解决方法
临时解决方法
刷新 Shared Pool,清除已废弃的对象头,这会导致短暂的硬解析,建议在业务低峰执行。
bash
ALTER SYSTEM FLUSH SHARED_POOL;
根治方法
打补丁,或者升级到新版本的数据库。