基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
因不同表创建了两个同名索引导致卡合并、无法执行 DDL,RS 日志告警 build index name hashmap failed 的原因及处理方法
更新时间:2026-05-22 08:56
问题现象
从 CDB_OB_MAJOR_COMPACTION 视图中查看到租户的 STATUS 长时间处于 COMPACTING 状态(合并卡住)。

且 __all_virtual_compaction_diagnose_info 视图中可以看到大量此租户 compaction 时的报错,error_code=-5627(schema刷新失败)

关键信息
关键日志:build index name hashmap failed。 发生异常后,rootservice 节点的 rootservice.log 内会打印 EDIAG 级别日志,完整关键日志如下。
[2024-10-12 14:33:02.476743] EDIAG [SHARE.SCHEMA] rebuild_table_hashmap (ob_schema_mgr.cpp:5033) [3341696][DDLQueueTh0][T0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=19][errcode=0] build index name hashmap failed(ret=0, ret="OB_SUCCESS", hash_ret=-4200, hash_ret="OB_HASH_EXIST", tmp_ret=0, exist_table_id=675596, exist_database_id=523437, index_name=DSG_ROWID_3194, table_id=675708, databse_id=523437, index_name=DSG_ROWID_3194)
其中会显示两个冲突的同名索引表的表 id:exist_table_id=675596 和 table_id=675708。
问题原因
在对表新加唯一列(alter table add column same_name unique)时由于带了 unique 关键字,内核会分配随机索引名,但仅保证了同一个表内的索引名不重复,未保证不同表之间的索引名不重复。 问题发生时 RootService 服务检查发现两张表存在索引重名,进而导致 schema 刷新失败并不停重试。
问题的风险及影响
租户 schema 刷新卡住,合并会卡住,无法执行任何 DDL 操作。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V4.x 版本。
解决方法及规避方式
解决方法:
遇到如上问题时,请联系 OceanBase 技术支持,在指导下修改内部表并轮转重启集群(仅做集群升级无法解决此问题)。
警告
修改内部表存在一定的风险,请勿自行操作。如果需要修改,请联系 OceanBase 技术支持团队。
规避方式
避免并行执行 alter table add column 同名列 unique 操作。无法规避,但触发概率低。