首批通过分布式安全可靠测评,为关键业务系统打造
表删除后未 GC 导致 Clog 无法回收的问题
更新时间:2026-06-12 04:01
适用版本
OceanBase 数据库 V3.x 版本。
问题现象
OCP 监控发现某个 OBServer 的 /data/log1 使用率超过 90%,排查发现 ilog+clog 使用已经超过 clog_disk_utilization_threshold 设置的 80%,也就是说 clog 没有被及时回收。
OBServer 日志中有 partition may be gc, but clog file still exist 的告警信息。
问题原因
系统中存在未及时 GC 的表,导致 Clog 无法回收。排查发现,阻止 Clog 回收的表已被删除,但却残余了一个副本没有被 GC。
- 在系统表
__all_virtual_table中已没有相关记录。 - 在系统表
__all_virtual_partition_info、__all_virtual_meta_table、__all_virtual_clog_stat中均还有一个副本的信息。 - 在系统表
__all_virtual_tenant_gc_partition_info中依然有这张表的记录,说明还未被 GC。
关于 GC 的机制,参见 OceanBase 数据库的 GC 回收处理机制。
解决方法
参考 OBServer 告警:partition may be gc, but clog file still exist 中的解决方法,手工将该表从 __all_virtual_tenant_gc_partition_info 中删除,允许 GC,从而解决 Clog 无法回收的问题。
delete from __all_tenant_gc_partition_info where table_id='1167681348748115';