问题描述
OceanBase 数据库 V2.2.77 版本,在 Oracle 模式下使用 ANALYZE TABLE 命令报错。
ORA-00600: internal error code, arguments: -4016, Internal error
示例:
使用 ANALYZE TABLE 命令。
obclient > ANALYZE TABLE YWFY.LIFE_COSTANA_CONTROL_COGNOS COMPUTE STATISTICS; ErrorCode = 600, SQLState = HY000, Details = ORA-00600: internal error code, arguments: -4016, Internal error在使用 ANALYZE TABLE 命令时观察到日志报错信息。
WARN [SQL.RESV] resolve_generated_column_expr (ob_dml_resolver.cpp:6572) [9486][3765][xxxxx-xxxxx] [lt=50] [dc=0] no need referece other column, it should not happened(expr_str=sysdate, ret=-4016) WARN [SQL.RESV] resolve_basic_column_item (ob_dml_resolver.cpp:807) [9486][3765][xxxxx-xxxxx] [lt=19] [dc=0] resolve expr_default column expr failed(ret=-4016, col_def=sysdate, *col_schema={tenant_id:1096, table_id:xxxxx, column_id:22, schema_version:xxxxx, rowkey_position:0, index_position:0, order_in_rowkey:0, tbl_part_key_pos:0, meta_type:{type:"DATETIME", collation:"binary", coercibility:"NUMERIC"}, accuracy:{length:-1, precision:19,scale:0}, is_nullable:true, is_zero_fill:false, is_autoincrement:false, is_hidden:false, charset_type:1, on_update_current_timestamp:false, orig_default_value:{"NULL":"NULL"}, cur_default_value:{"VARCHAR":"sysdate", collation:"invalid_type", coercibility:"IMPLICIT"}, column_name:"INSERTDATE", comment:"", column_flags:8, extended_type_info:[], prev_column_id:21, next_column_id:23, column_ref_idxs:NULL})
问题原因
在 OceanBase 数据库 V3.2.3 版本之前,Oracle 模式下的 ANALYZE TABLE 不是一个完整的功能,其内部实现使用 MySQL 语法,可能会出现不可知的问题。
适用版本
OceanBase 数据库 V3.2.3 之前的版本。
解决方法
不建议在 OceanBase 数据库 V3.2.3 版本之前的 Oracle 模式下使用 ANALYZE TABLE。