首批通过分布式安全可靠测评,为关键业务系统打造
SQL 查询报内部错误 ora-00600 -4016
更新时间:2026-05-26 09:46
问题现象
OceanBase 数据库 Oracle 租户业务从源端表导入约一千万行数据到 OceanBase 测业务语句报错,表是分区表并且包含 CLOB,其中 1000 多行数据超过 1.5M 溢出到行外存储,用户所有包含投影 CLOB 列的语句都会报错,4016/4201 等错误码根据不同的导入方式或者查询语句都可能产生。
关键诊断信息
触发条件
分区表叠加需要溢出存储的大对象。
问题原因
OceanBase 数据库 V3.2.x 版本中存储做了分区级 rescan 的性能优化,支持在分区间共享查询迭代器,减少重新构造的开销。但是这里遗漏了 LOB 迭代器的刷新,因为 LOB 的读取强依赖 SSTable 结构,迭代器不能直接重用,需要使用新分区对应 SSTable 信息重新初始化。
问题的风险及影响
根据上述原因,因此在业务环境中刚好遇到分区表叠加需要溢出存储的大对象时就可能产生问题。
影响租户
影响 OceanBase 数据库中的 Oracle 租户,对于 SYS 租户和 MySQL 租户无影响。
影响版本
OceanBase 数据库企业版 V3.2.3 GA(oceanbase-3.2.3.0-20220418212020)及之后版本、V3.2.4 GA(oceanbase-3.2.4.0-100000072022102819)及之后版本。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V3.2.3 BP8(oceanbase-3.2.3.3-108000062023041511)及之后版本、V3.2.4 BP3(oceanbase-3.2.4.3-103000032023041816)及之后版本。