---
title: 活跃事务阻止已删除的索引回收副本会使 clog 无法回收最终导致 clog 盘占用 100% 的原因和解决方法-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于活跃事务阻止已删除的索引回收副本会使 clog 无法回收最终导致 clog 盘占用 100% 的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决活跃事务阻止已删除的索引回收副本会使 clog 无法回收最终导致 clog 盘占用 100% 的原因和解决方法的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 活跃事务阻止已删除的索引回收副本会使 clog 无法回收最终导致 clog 盘占用 100% 的原因和解决方法

更新时间：2026-06-12 03:56

适用版本： V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 问题现象

当 clog 盘（`/data/log1`）磁盘占用百分比超过 `clog_disk_utilization_threshold`（默认值 80） 时，表明当前节点 clog 一直无法回收，此时可以查看冻结转储状态，因为冻结转储完成 MemTable 后，所产生的 clog 才能被安全回收。

含有关键 `index is deleted, will del it, no need merge` 信息的日志如下。

```shell
[2023-12-25 21:26:54.550295] INFO  [STORAGE] ob_partition_store.cpp:2285 [99480][0][Y0-0000000000000000-0-0] [lt=5] [dc=0] index is deleted, will del it, no need merge(ret=0, pkey={tid:1102810162718163, partition_id:0, part_cnt:0}, table_id=1102810162718164)

```

且 `__all_virtual_trans_stat` 表中可以查询到日志对应 `table_id` 的活跃事务。

## 问题的风险及影响

索引涉及的主表会卡转储，导致租户 MemStore 内存越来越高、clog 无法回收、clog 盘占用越来越高，如果 MemStore 内存使用率达到 100% 此节点此租户会无法写入，clog 盘使用率达到 `clog_disk_usage_limit_percentage` 配置的百分比时此节点会不可用。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 适用版本

OceanBase 数据库 V3.x 版本。

## 解决方法及规避发生

- 解决方法：

  通用排查步骤。

     1. 过滤日志关键字，查看阻塞 clog 回收的分区。

       ```shell
       grep can_skip_base observer.log | grep 'need_record_=true'

       ```
     2. 再根据分区 pkey 搜索日志。

       ```shell
       [2023-12-25 21:26:54.550295] INFO  [STORAGE] ob_partition_store.cpp:2285 [99480][0][Y0-0000000000000000-0-0] [lt=5] [dc=0] index is deleted, will del it, no need merge(ret=0, pkey={tid:1102810162718163, partition_id:0, part_cnt:0}, table_id=1102810162718164)
       observer.log.20231225213603:[2023-12-25 21:26:54.550390] INFO  [STORAGE] ob_partition_store.cpp:2285 [99480][0][Y0-0000000000000000-0-0] [lt=91] [dc=0] index is deleted, will del it, no need merge(ret=0, pkey={tid:1102810162718163, partition_id:0, part_cnt:0}, table_id=1102810162718165)

       ```

       如查找到上述信息，说明该索引已经被删除，正在等待垃圾回收（Garbage Clean 即 GC）且主表的 schema 还在，即 `__all_virtual_table` 表中可以找到如上日志 table_id 对应的记录。

       此时主表的转储会卡住导致 clog 一直无法回收。
     3. 通过 `__all_virtual_trans_stat` 查看到主表上有活跃的事务，主动杀掉事务后 clog 正常回收。
     4. 杀死活跃事务。

       通过 `__all_virtual_trans_stat` 找到此表上的事务对应的 session id，使用命令 `kill session_id` 或在 OCP 上终止活跃会话来规避。
 - 规避方式：

  避免长时间不提交活跃事务、通过拆分事务来避免超大事务。

上一篇

[死锁检测功能不完整](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002197441)

下一篇

[事务管理器引用泄露引起系统死锁无法提供服务](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002397822) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
