---
title: 分区中间插入新分区后，SQL 执行报错 -4377-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于分区中间插入新分区后，SQL 执行报错 -4377相关的常见问题和使用技巧，帮助您快速解决分区中间插入新分区后，SQL 执行报错 -4377的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 分区中间插入新分区后，SQL 执行报错 -4377

更新时间：2026-05-21 09:16

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

## 适用版本

OceanBase 数据库所有版本。

## 问题现象

对分区表增加分区后，执行 UPDATE、INSERT 时 SQL 报错 -4377。报错信息因检查出错的位置不同而变化，示例如下。

```
ORA-00600: internal error code, arguments: -4377, fatal internal error in [check_old_row_legitimacy]

ERROR 4377 (HY000): fatal internal error in [check_new_row_partition_validity]

```

## 问题原因

默认设置下，对 Range 分区的分区表添加分区只能添加在最后的位置，即新分区的范围要大于之前最大的分区。OceanBase 数据库的这个限制是为了保证分区内数据的一致性，避免新增分区后，有的分区中存在不属于该分区的数据。如果用户设置租户配置项 `_enable_add_between_range_partitions = true`，则可以在 Range 分区的分区表中间插入分区，需要用户来保证分区间数据的一致性，否则会出现该问题。

- 设置 `_enable_add_between_range_partitions` 的方法：

  ```shell
  obclient> select * from __all_virtual_tenant_parameter_stat where name like "_enable_add_between_range_partitions";

  ```

  ```shell
  obclient> alter system set _enable_add_between_range_partitions = 'True' tenant='xxx';

  ```
 - 用户在中间插入分区必须确保满足以下条件：

     - 做分区管理前，数据表中的数据跟要新增的分区不能存在交集。
     - 做分区管理过程中，不能向数据表中插入属于新增分区的数据。

## 解决方法

纠正分区数据的不一致问题，关闭 `_enable_add_between_range_partitions`。

Previous

[非严格模式下 INSERT 分区裁剪报 4377](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000075124)

Next

[表扫描分区号不连续的原因](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002391978) ![有帮助](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) 咨询热线
