首批通过分布式安全可靠测评,为关键业务系统打造
重命名分区
更新时间:2026-05-20 08:27:47
创建分区表后,您可以为一级分区表或二级分区表重命名分区。
注意事项
分区重命名仅修改主表的分区名,不会修改主表所属的局部索引的分区名。但是,将分区重命名后,如果对该分区表执行了删除列等会重建局部索引的操作时,局部索引的分区名会变成与主表的分区名一致。
重命名分区时,新的分区名不能与表中已有的一级分区名或二级分区名相同。
在 OceanBase 数据库中,分区名对大小写不敏感,故不支持将分区名重命名为与原分区名大小写不同的分区名。
重命名一级分区名
您可以使用 RENAME PARTITION 子句重命名分区,语句如下:
ALTER TABLE table_name RENAME PARTITION partition_name TO new_partition_name;
执行重命名一级分区名操作后,一级分区表可以通过视图 USER_TAB_PARTITIONS 来确认分区名是否修改成功;二级分区表可以通过视图 USER_TAB_SUBPARTITIONS 来确认分区名是否修改成功。
示例如下:
创建非模板化二级分区表
t2_f_rr。obclient> CREATE TABLE t2_f_rr(col1 INT,col2 INT) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) (PARTITION p0 VALUES LESS THAN(100) (SUBPARTITION sp0 VALUES LESS THAN(2020), SUBPARTITION sp1 VALUES LESS THAN(2021) ), PARTITION p1 VALUES LESS THAN(200) (SUBPARTITION sp2 VALUES LESS THAN(2020), SUBPARTITION sp3 VALUES LESS THAN(2021), SUBPARTITION sp4 VALUES LESS THAN(2022) ) );创建成功后,查看分区表的分区名称。
obclient> SELECT table_name,partition_name,subpartition_name FROM USER_TAB_SUBPARTITIONS WHERE table_name = 'T2_F_RR';查询结果如下:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T2_F_RR | P0 | SP0 | | T2_F_RR | P0 | SP1 | | T2_F_RR | P1 | SP2 | | T2_F_RR | P1 | SP3 | | T2_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in set将一级分区
P0重命名为NEW_P0。ALTER TABLE T2_F_RR RENAME PARTITION P0 TO NEW_P0;再次查看分区名,可以看到分区名修改成功。
obclient> SELECT table_name,partition_name,subpartition_name FROM SYS.USER_TAB_SUBPARTITIONS WHERE table_name = 'T2_F_RR';查询结果如下:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T2_F_RR | NEW_P0 | SP0 | | T2_F_RR | NEW_P0 | SP1 | | T2_F_RR | P1 | SP2 | | T2_F_RR | P1 | SP3 | | T2_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in set
重命名二级分区名
重命名二级分区名的语句如下:
ALTER TABLE table_name RENAME SUBPARTITION partition_name TO new_partition_name;
执行重命名二级分区名操作后,可以通过查询视图 USER_TAB_SUBPARTITIONS 来确认分区名是否修改成功。
示例如下:
创建非模板化二级分区表
t3_f_rr。obclient> CREATE TABLE t3_f_rr(col1 INT,col2 INT) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) (PARTITION p0 VALUES LESS THAN(100) (SUBPARTITION sp0 VALUES LESS THAN(2020), SUBPARTITION sp1 VALUES LESS THAN(2021) ), PARTITION p1 VALUES LESS THAN(200) (SUBPARTITION sp2 VALUES LESS THAN(2020), SUBPARTITION sp3 VALUES LESS THAN(2021), SUBPARTITION sp4 VALUES LESS THAN(2022) ) );创建成功后,查看分区表的分区名称。
obclient> SELECT table_name,partition_name,subpartition_name FROM USER_TAB_SUBPARTITIONS WHERE table_name = 'T3_F_RR';查询结果如下:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T3_F_RR | P0 | SP0 | | T3_F_RR | P0 | SP1 | | T3_F_RR | P1 | SP2 | | T3_F_RR | P1 | SP3 | | T3_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in set将二级分区
SP1重命名为NEW_SP1。ALTER TABLE T3_F_RR RENAME SUBPARTITION SP1 TO NEW_SP1;再次查看分区名,可以看到分区名修改成功。
obclient> SELECT table_name,partition_name,subpartition_name FROM SYS.USER_TAB_SUBPARTITIONS WHERE table_name = 'T3_F_RR';查询结果如下:
+------------+----------------+-------------------+ | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | +------------+----------------+-------------------+ | T3_F_RR | P0 | SP0 | | T3_F_RR | P0 | NEW_SP1 | | T3_F_RR | P1 | SP2 | | T3_F_RR | P1 | SP3 | | T3_F_RR | P1 | SP4 | +------------+----------------+-------------------+ 5 rows in set