---
title: purge 并发引发的副本 checksum 数据不一致-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于purge 并发引发的副本 checksum 数据不一致相关的常见问题和使用技巧，帮助您快速解决purge 并发引发的副本 checksum 数据不一致的难题。
---
切换语言

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

划线反馈

# purge 并发引发的副本 checksum 数据不一致

更新时间：2026-06-10 09:46

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

## 问题现象

发生数据不一致的环境中出现的现象。

- `observer.log` 出现 ERROR 日志 `-4103 (OB_CHECKSUM_ERROR)`，命令如下。

  ```shell
  grep "ERROR.*-4103" observer.log

  ```
 - 在有问题的 OceanBase 数据库环境中通过 `__all_sstable_checksum` 查询有问题的同一分区 `data_checksum` 不同。
 - `observer.log` 里面出现 WARN 日志关键字 `sstable row count is not same to main table`，命令如下。

  ```shell
  grep "sstable row count is not same to main table" observer.log

  ```
 - 因为数据不一致导致合并卡住，可通过内部表 `_all_zone` 查看全局 `merge_status ERROR`（合并状态错误）。

  ```shell
  obclient> SELECT * FROM oceanbase.__all_zone;

  ```

## 关键诊断信息

### 触发条件

- 开启分区内并行转储 ，开启的参数是 `_enable_parallel_minor_merge`。
 - 发起删除批量数据的事务。
 - 冻结。
 - 事务提交。

## 问题原因

OceanBase 数据库内部 btree 的 purge 场景下，由于并发逻辑的 bug，可能导致某些线程的查询少行，从而使得出现问题主表的各个副本数据不一致。数据不一致问题本身对数据正确性有致命危害，OceanBase 数据库合并逻辑后有数据校验机制，在校验到数据不一致时便会报 checksum 相关的错误。

## 问题的风险及影响

该数据不一致问题本身会对数据正确性有致命危害，目前按照多副本提交为相对正确数据内容对现场进行应对处置。需要业务核对数据正确性。OceanBase 数据库合并逻辑后有数据校验机制，故遇到数据不一致问题时会在合并后数据校验阶段进行报错。该正确性问题需要预防、规避和修复，尽最大可能地避免该正确性问题。

## 影响租户

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

## 影响的版本

OceanBase 数据库企业版 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本。

## 解决方法及规避方式

- 解决方法:

     1. 升级至问题已修复版本。

       目前已修复的版本包括 OceanBase 数据库企业版 V2.2.77 BP10 Hotfix2（oceanbase-2.2.77-20220401180934）、V2.2.77 BP10 Hotfix3（oceanbase-2.2.77-20220525151131）、V2.2.77 BP11 (oceanbase-2.2.77-20220502140811)、V3.1.2 BP8 (oceanbase-3.1.2-20220329234820) 及后续版本。
     2. 升级至修复版本之后将分区内并行转储开启提升分区转储效率，命令如下。

       ```shell
       obclient> ALTER SYSTEM SET _enable_parallel_minor_merge = true;

       ```
 - 规避方式：

     1. 在能够升级至修复版本之前关闭 `_enable_parallel_minor_merge` 降低数据不正确问题出现的概率，命令如下。

       ```shell
       obclient> ALTER SYSTEM SET _enable_parallel_minor_merge = false;

       ```
     2. 设置 `_enable_parallel_minor_merge = false` 若出现数据不正确问题，请联系 OceanBase 技术支持来应急修复正确性问题（可能会涉及到删索引表、删副本等非常规操作），切记不能私自操作。

       #### 注意

       OceanBase 数据库 V1.4.x ~ V3.2.x 版本均存在该正确性问题，且引入单分区并行转储（`_enable_parallel_minor_merge`）后该问题更易暴露。

上一篇

[OceanBase 数据库 V4.x 版本中 ADAPTIVE 表组使用示例及手动触发负载均衡任务](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002830178)

下一篇

[OceanBase 数据库 V4.2 如何查询副本均衡进度](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000366654) ![有帮助](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) 咨询热线
