首批通过分布式安全可靠测评,为关键业务系统打造
升级报错 tenant unit not exist but partition exist
更新时间:2026-07-02 15:41
适用版本
OceanBase 数据库 2.x、3.x 版本
问题现象
有两种情况会触发 tenant unit not exist but partition exist 这种报错。
在使用 OCP 升级 OceanBase 数据库版本时,预检查报错。
升级过程中遇到此报错,日志如下:
upgrade checker failed with 2 reasons: [(1066, u'10.xxx.xxx.xx', 2882) tenant unit not exist but partition exist] , [(1030, u'10.xxx.xxx.xx', 2882) tenant unit not exist but partition exist]
问题原因
上述两种情况均是由于垃圾副本的残留信息导致的预检查不通过,残留信息可能是因为垃圾回收机制(GC)的回收任务在执行过程中发生意外。 可以通过下述语句确认是否有垃圾副本的残留信息 :
obclient [(none)]> SELECT tenant_id, svr_ip, svr_port FROM __all_virtual_partition_info WHERE (tenant_id, svr_ip, svr_port) not in (SELECT tenant_id, svr_ip, svr_port FROM __all_unit, __all_resource_pool WHERE __all_unit.resource_pool_id = __all_resource_pool.resource_pool_id group by tenant_id, svr_ip, svr_port) GROUP BY tenant_id, svr_ip, svr_port;
解决方法
根据上面查出来的 OBServer 地址,在该 OBServer 上执行 GC 任务。
obclient [(none)]> ALTER SYSTEM RUN JOB 'check_partition_table' server='xxx.xxx.xxx.xxx:2882';