---
title: "Truncate 分区 | OceanBase 文档中心"
description: Truncate 分区 您可以根据业务需要，清空分区表中分区的数据，保留分区结构。 分区表对 Truncate 分区操作的支持情况 OceanBase 数据库中，一级分区表和二级分区表对 Truncate 分区操作的具体支持情况如下表所示。 分区表 Truncate 一级分区 Truncate 二级分区 一级分区表 …
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.0.0 社区版

# Truncate 分区

更新时间：2026-06-23 18:12:04

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0/zh-CN/500.administrator-guide/800.distributed-storage-management/200.manage-partition-table/600.truncate-partition.md)  

您可以根据业务需要，清空分区表中分区的数据，保留分区结构。

## 分区表对 Truncate 分区操作的支持情况

OceanBase 数据库中，一级分区表和二级分区表对 Truncate 分区操作的具体支持情况如下表所示。

| 分区表 | Truncate 一级分区 | Truncate 二级分区 |
| --- | --- | --- |
| 一级分区表 | Range / Range Columns / List / List Columns | 支持 | - |
| 一级分区表 | Hash / Key | 不支持 | - |
| 二级分区表 | Range + Range / Range + Range Columns / Range + List / Range + List Columns | 支持 | 支持 |
| 二级分区表 | Range + Hash / Range + Key | 支持 | 不支持 |
| 二级分区表 | Range Columns + Range / Range Columns + Range Columns / Range Columns + List / Range Columns + List Columns | 支持 | 支持 |
| 二级分区表 | Range Columns + Hash / Range Columns + Key | 支持 | 不支持 |
| 二级分区表 | List + Range / List + Range Columns / List + List / List + List Columns | 支持 | 支持 |
| 二级分区表 | List + Hash / List + Key | 支持 | 不支持 |
| 二级分区表 | List Columns + Range / List Columns + Range Columns / List Columns + List / List Columns + List Columns | 支持 | 支持 |
| 二级分区表 | List Columns + Hash / List Columns + Key | 支持 | 不支持 |
| 二级分区表 | Hash + Range / Hash + Range Columns / Hash + List / Hash + List Columns / Hash + Hash / Hash + Key | 不支持 | 不支持 |
| 二级分区表 | Key + Range / Key + Range Columns / Key + List / Key + List Columns / Key + Hash / Key + Key | 不支持 | 不支持 |

## Truncate 一级分区

您可以 Truncate 分区表中的一级分区。 Truncate 一级分区的 SQL 语法如下：

```sql
ALTER TABLE table_name TRUNCATE PARTITION partition_name[, partition_name ...];

```

> **说明**
>
>  
>
> - Truncate 一级分区时，可以将一个或多个分区中的数据清空。
>  - 在 Truncate 一级分区时，请尽量避免该分区上存在活动的事务或查询，否则可能会导致 SQL 语句报错，或者出现一些异常情况。在 `sys` 租户下，通过视图 `oceanbase.GV$OB_TRANSACTION_PARTICIPANTS` 查询当前还未结束的事务上下文状态。
>  - 对于二级分区表，Truncate 一级分区时，会将一个或多个一级分区及其对应的二级分区中的数据全部清空。

部分示例如下：

- 清空一级分区表 `tbl1_r` 中 `M202001` 和 `M202002` 分区中的数据。

  ```sql
  obclient> CREATE TABLE tbl1_r (log_id BIGINT NOT NULL,log_value VARCHAR(50),log_date TIMESTAMP NOT NULL)
         PARTITION BY RANGE(UNIX_TIMESTAMP(log_date))
          (PARTITION M202001 VALUES LESS THAN(UNIX_TIMESTAMP('2020/02/01'))
         , PARTITION M202002 VALUES LESS THAN(UNIX_TIMESTAMP('2020/03/01'))
         , PARTITION M202003 VALUES LESS THAN(UNIX_TIMESTAMP('2020/04/01'))
         , PARTITION M202004 VALUES LESS THAN(UNIX_TIMESTAMP('2020/05/01'))
         , PARTITION M202005 VALUES LESS THAN(UNIX_TIMESTAMP('2020/06/01'))
         , PARTITION M202006 VALUES LESS THAN(UNIX_TIMESTAMP('2020/07/01'))
         , PARTITION M202007 VALUES LESS THAN(UNIX_TIMESTAMP('2020/08/01'))
         , PARTITION M202008 VALUES LESS THAN(UNIX_TIMESTAMP('2020/09/01'))
         , PARTITION M202009 VALUES LESS THAN(UNIX_TIMESTAMP('2020/10/01'))
         , PARTITION M202010 VALUES LESS THAN(UNIX_TIMESTAMP('2020/11/01'))
         , PARTITION M202011 VALUES LESS THAN(UNIX_TIMESTAMP('2020/12/01'))
         , PARTITION M202012 VALUES LESS THAN(UNIX_TIMESTAMP('2021/01/01'))
          );
  Query OK, 0 rows affected

  obclient> ALTER TABLE tbl1_r TRUNCATE PARTITION M202001,M202002;
  Query OK, 0 rows affected

  ```
 - 清空 Range Columns + List Columns 分区表 `t_f_rclc` 的一级分区 `p0` 中的数据。

## Truncate 二级分区

Truncate 二级分区的 SQL 语法如下：

```sql
ALTER TABLE table_name TRUNCATE SUBPARTITION subpartition_name[, subpartition_name ...];

```

> **说明**
>
>  
>
> - Truncate 二级分区表中的二级分区时，请尽量避免该分区上存在活动的事务或查询，否则可能会导致 SQL 语句报错，或者出现一些异常情况。在 `sys` 租户下，通过视图 `oceanbase.GV$OB_TRANSACTION_PARTICIPANTS` 查询当前还未结束的事务上下文状态。
>  - 当 Truncate 多个二级分区时，这些二级分区必须属于同一个一级分区。

以清空 Range + Range 分区表 `t_f_rr` 的二级分区 `sp1` 和 `sp2` 中的数据为例，示例如下：

```sql
obclient> CREATE TABLE t_f_rr(col1 INT,col2 TIMESTAMP)
       PARTITION BY RANGE(col1)
       SUBPARTITION BY RANGE(UNIX_TIMESTAMP(col2))
        (PARTITION p0 VALUES LESS THAN(100)
           (SUBPARTITION sp0 VALUES LESS THAN(UNIX_TIMESTAMP('2021/04/01')),
            SUBPARTITION sp1 VALUES LESS THAN(UNIX_TIMESTAMP('2021/07/01')),
            SUBPARTITION sp2 VALUES LESS THAN(UNIX_TIMESTAMP('2021/10/01')),
            SUBPARTITION sp3 VALUES LESS THAN(UNIX_TIMESTAMP('2022/01/01'))
           ),
         PARTITION p1 VALUES LESS THAN(200)
           (SUBPARTITION sp4 VALUES LESS THAN(UNIX_TIMESTAMP('2021/04/01')),
            SUBPARTITION sp5 VALUES LESS THAN(UNIX_TIMESTAMP('2021/07/01')),
            SUBPARTITION sp6 VALUES LESS THAN(UNIX_TIMESTAMP('2021/10/01')),
            SUBPARTITION sp7 VALUES LESS THAN(UNIX_TIMESTAMP('2022/01/01'))
            )
         );
Query OK, 0 rows affected

obclient> ALTER TABLE t_f_rr TRUNCATE SUBPARTITION sp1,sp2;
Query OK, 0 rows affected

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
