首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V3.x 版本 batch update 会偶发报错 ORA-00600: internal error code, arguments: -4016, Internal error 的原因和解决方法
更新时间:2026-05-28 02:06
问题现象
JDBC 使用批处理 update(batch update)时会偶发报错 ORA-00600: internal error code, arguments: -4016, Internal error。
关键信息
关键日志:expr should be columnlized。 完整日志如下。
[2024-09-27 11:56:45.494735] WARN [SQL.ENG] check_expr_columnlized (ob_static_engine_cg.cpp:300) [2881160][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=27] [dc=0] expr should be columnlized(ret=-4016, expr=0x7eecebd19200, expr={item_type:"T_REF_COLUMN", result_type:{meta:{type:"INT", collation:"binary", coercibility:"NUMERIC"}, accuracy:{length:-1, precision:1, scale:0}, flag:0, calc_type:{type:"CHAR", collation:"utf8mb4_bin", coercibility:"IMPLICIT"}}, expr_info:["IS_COLUMN", "CNT_COLUMN"], rel_id:[2], table_id:18446744073709551613, column_id:17, database_name:"", table_name:"VIEW1", synonym_name:"", synonym_db_name:"", column_name:"group_param_1", expr_level:0, expr_levels:[0], column_flags:0, enum_set_values:[], is_lob_column:false, is_joined_dup_column:false, is_unpivot_mocked_column:false, is_hidden:false})
问题原因
batch dml 改写不正确,错误改写了更新列上的约束表达式,导致优化器生成的计划表达式分配不正确,最终校验出异常后报错。
问题的风险及影响
语句偶发执行失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户
适用版本
OceanBase 数据库 V3.x 版本。
解决方法
将 OceanBase 数据库 V3.x 版本升级至 V4.x 版本。
不使用 batch dml,或者删除更新列上的约束。