---
title: "分区策略使用示例 - 开发者中心 ODC V4.4.2 | OceanBase 文档中心"
description: 分区策略使用示例 本文档旨在介绍如何设置分区创建策略和分区删除策略。 设置 OceanBase MySQL 类型的表分区策略 本章节以设置 OceanBase MySQL 类型的表分区策略为例，介绍如何在数据源 mysql441 下数据库 doc_test_data_1 中，对 order 表设置创建分区策略和删除分…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*lqS5SYzz_YEAAAAAAAAAAAAADiGDAQ/original) 开发者中心 ODCV 4.4.2

# 分区策略使用示例

更新时间：2026-05-11 12:52:31

[编辑](https://github.com/oceanbase/odc-doc/edit/V4.4.2/zh-CN/800.data-Lifecycle-management/300.partition-scheme-management/330.partition-strategies-example.md)  

本文档旨在介绍如何设置分区创建策略和分区删除策略。

## 设置 OceanBase MySQL 类型的表分区策略

本章节以设置 OceanBase MySQL 类型的表分区策略为例，介绍如何在数据源 mysql441 下数据库 doc_test_data_1 中，对 `order` 表设置创建分区策略和删除分区策略。

1. 在 SQL 窗口中，编辑 SQL 语句以创建表 order。

    ![](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/433/800.data-Lifecycle-management/300.partition-scheme-management/330.partition-strategies-example/1.png)

   ```sql
   CREATE TABLE `order` (
    `time` date NOT NULL,
    `parti_key` int(11),
    `name` varchar(120) DEFAULT NULL
   ) partition by range columns(time, parti_key)
   (partition p2023_01 values less than ('2023-01-01', 20230101),
   partition p2023_02 values less than ('2023-02-01', 20230201))

   ```
 2. 在 SQL 开发窗口的 **作业** > **分区计划** > **新建分区计划**。

   ![2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/441/800.data-Lifecycle-management/manage-partitioning-plans-2.png)
 3. 在新建分区计划页面中，选择目标数据库，单击目标分区表右侧的 ![edit](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/icon/edit.jpg) 编辑分区策略。

   ![3](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/441/800.data-Lifecycle-management/partition-strategies-example-3.png)
 4. 在分区策略页面中，勾选 **分区策略** 项下的 **创建策略** 和 **删除策略**。

   ![4](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-4.png)
 5. 在 **创建分区** 区域中，设置分区创建策略。

   ![5](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-5.png)

      1. 设置将要创建的分区数量。
      2. 创建规则。

        如上图所示，可以对 `order` 表中包含的 `time` 和 `parti_key` 分区键设置分区策略。

             - `time`：该分区键类型为 `DATE`，属于时间类型，因此其可以使用 **顺序递增** 作为分区创建策略。示例中，`time` 分区键的创建策略是以当前时间（即分区计划任务实际运行时的时间）为基准时间，间隔 1 个月生成若干分区。
             - `parti_key`：该分区键类型为 `INT`，尝试使用 **自定义** 作为分区创建策略。假定需要以当前时间为基准，间隔 1 个月生成若干分区。参见 **自定义分区创建策略** 一节中关于 **自定义分区创建策略** 的表述，该表达式可以按照如下步骤生成：

                     1. 获取分区生成的基准时间：由于是以当前时间为基准，可以直接使用 `now()` 函数。
                     2. 定义分区生成的间隔：由于示例中是以 1 个月为间隔，因此在 **创建规则** > **细则** > **间隔** 中填入 1 作为固定间隔，且在步骤 1 表达式的基础上增加 interval 表达式，生成下一个分区。即 `now () + interval ${INTERVAL} month`，其中 `${INTERVAL}` 指代 **创建规则** > **细则** > **间隔** 中填入的值。
                     3. 生成对应分区键类型的分区表达式：`parti_key` 的类型为 `int`，但步骤 1 中生成的表达式的类型为时间类型，需要将其转换为 `int` 类型。您可以先将其转成数字样式的字符串，再转换为`int` 类型，即：`cast(date_format(now() + interval ${INTERVAL} month, '%Y%m01') as signed)`。

                       其中，

                                - `CAST(xxx AS SIGNED)`：将字段转换成整数。
                                - `DATE_FORMAT()`：将字段转换成日期格式。
                                - `NOW()`：返回当前日期。

                                 #### 说明

                                 在 ODC 中，还支持通过变量 ${LAST_PARTITION_VALUE} 引入当前数据库的分区上限值，例如 `${LAST_PARTITION_VALUE} + interval ${INTERVAL} month` 表示从数据库最新的分区上限值进行后续分区生成。
                                - `INTERVAL ${INTERVAL} MONTH`：按月间隔表达式，`${INTERVAL}` 为 ODC 定义的时间间隔函数固定用法。
                                - `'%Y%m01'`：日期格式。
      3. 选择命名方式。

        如上图所示，选择的命名方式为 **前缀+后缀**，该命名方式由一个固定字符串前缀和基于时间的可变后缀构成。

             1. 固定前缀：该前缀可由用户自由指定。
             2. 可变后缀：可选择时间类型的分区键对应的分区上界作为当前分区的命名后缀，另外可选时间的格式化输出格式以及时间的递增间隔。
             3. 配置完成后，单击 **测试生成** 按钮可以查看设置的分区名。
      4. 将表中最后一个分区的统计信息复制到新分区：否。
 6. 在 **删除分区** 区域中，配置分区删除策略，当前示例含义如下。

   ![6](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-6.png)

      - 分区保留数量：保留最近的 1 个分区，即删除最近 1 个分区外的其他分区。
      - 设置分区数据保留时间：分区保留最近 12 个月的数据。删除分区时，需确保该分区的上界小于设定的保留时间点，否则不予删除。
      - 删除后是否重建索引：删除分区后需要自动重建索引。
 7. 单击 **分区策略** 面板右下角的 **预览 SQL** 查看根据所设置的分区策略生成的 SQL 语句。

   ![7](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-7.png)
 8. 单击 **确定**，完成设置分区策略。

## 设置 OceanBase Oracle 类型的表分区策略

本章节以设置 OceanBase Oracle 类型的表分区策略为例，介绍如何在数据库 SYS 中，对 `order` 表设置创建分区策略和删除分区策略。

   ![9](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-9.png)

   ```sql
   CREATE TABLE "SYS"."order" (
   "TIME" DATE NOT NULL ENABLE,
   "KEY" NUMBER(*,0) NOT NULL ENABLE,
   "NAME" VARCHAR2(120) DEFAULT NULL
   ) COMPRESS FOR ARCHIVE REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
   partition by range("TIME", "KEY")
   (partition "p2024_01" values less than (TO_DATE(' 2024-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),20240101),
   partition "p2024_02" values less than (TO_DATE(' 2024-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),20240201));

   ![8](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-8.png)
 4. 在分区策略页面中，勾选 **分区策略** 项下的 **创建策略** 和 **删除策略**。

   ![10](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-10.png)

        如上图所示，可以对 `order` 表中包含的 `TIME` 和 `KEY` 分区键设置分区策略。

             - `TIME`：该分区键类型为 `DATE`，属于时间类型，因此其可以使用 **顺序递增** 作为分区创建策略。示例中，`TIME` 分区键的创建策略是以当前时间（即分区计划任务实际运行时的时间）为基准时间，间隔 1 个月生成若干分区。
             - `KEY`：该分区键类型为 `NUMBER`，尝试使用 **自定义** 作为分区创建策略。假定需要以当前系统时间为基准，间隔 1 个月生成若干分区。参见 **自定义分区创建策略** 一节中关于 **自定义分区创建策略** 的表述，该表达式可以按照如下步骤生成：

                     1. 获取分区生成的基准时间：由于是以当前系统时间为基准，可以直接使用 `sysdate` 函数。
                     2. 定义分区生成的间隔：由于示例中是以 1 个月为间隔，因此在 **创建规则** > **细则** > **间隔** 中填入 `NUMTOYMINTERVAL(1, 'MONTH')` 作为固定间隔，且在步骤 1 表达式的基础上增加 interval 表达式，生成下一个分区。即 `SYSDATE + ${INTERVAL}`，其中 `${INTERVAL}` 指代 **创建规则** > **细则** > **间隔** 中填入的值。
                     3. 生成对应分区键类型的分区表达式：`KEY` 的类型为 `NUMBER`，但步骤 1 中生成的表达式的类型为时间类型，需要将其转换为 `NUMBER` 类型。您可以先将其转成数字样式的字符串，再转换为`NUMBER` 类型，即：`TO_CHAR(SYSDATE + ${INTERVAL}, 'YYYYMM"01"')`。

                       其中，

                                - `TO_CHAR`：将字段转换成字符型。
                                - `SYSDATE`：返回当前系统时间。
                                - `YYYYMM"01"`：日期格式。
      3. 选择命名方式。

   ![11](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-11.png)

      - 分区保留数量：保留最近的 200 个分区，即删除最近 200 个分区外的其他分区。
      - 设置分区数据保留时间：分区保留最近 12 个月的数据。删除分区时，需确保该分区的上界小于设定的保留时间点，否则不予删除。
      - 删除后是否重建索引：删除分区后需要自动重建索引。
 7. 单击 **分区策略** 面板右下角的 **预览 SQL** 查看根据所设置的分区策略生成的 SQL 语句。

   ![12](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/442/partition-strategies-example-12.png)
 8. 单击 **确定**，完成设置分区策略。

## 相关文档

- [管理分区计划](https://www.oceanbase.com/docs/common-odc-1000000005551453)
 - [设置分区策略](https://www.oceanbase.com/docs/common-odc-1000000005551452)

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