首批通过分布式安全可靠测评,为关键业务系统打造
分区操作
更新时间:2026-07-15 20:42:46
OceanBase 数据库 Oracle 模式下的分区操作包括重分区(将非分区表转换为一级分区表和二级分区表)、添加分区、删除分区和清空分区。
重分区
重分区的语法如下:
ALTER TABLE table_name MODIFY partition_option;
注意
当前版本只支持非分区表转换成分区表。
重分区示例
将非分区表转换成为一级分区表
obclient> CREATE TABLE tbl1(c1 INT PRIMARY KEY, c2 DATE);
Query OK, 0 rows affected
obclient> ALTER TABLE tbl1 MODIFY PARTITION BY HASH(c1) PARTITIONS 4;
Query OK, 0 rows affected
将非分区表转换成为二级分区表(模版化)
obclient> CREATE TABLE tbl2(c1 INT, c2 DATE, PRIMARY KEY(c1, c2));
Query OK, 0 rows affected
obclient> ALTER TABLE tbl2 MODIFY PARTITION BY HASH(c1)
SUBPARTITION BY RANGE (c2)
SUBPARTITION TEMPLATE(
SUBPARTITION p1 VALUES LESS THAN (TO_DATE('2016/02/01','YYYY/MM/DD')),
SUBPARTITION p2 VALUES LESS THAN (TO_DATE('2116/02/01','YYYY/MM/DD'))
);
Query OK, 0 rows affected
将非分区表转换成为二级分区表(非模版化)
obclient> CREATE TABLE tbl3(c1 INT, c2 DATE, PRIMARY KEY(c1, c2));
Query OK, 0 rows affected
obclient> ALTER TABLE tbl3 MODIFY PARTITION BY RANGE(c1)
SUBPARTITION BY RANGE(c2) (
PARTITION p0 VALUES LESS THAN(0),
PARTITION p1 VALUES LESS THAN(100));
Query OK, 0 rows affected
添加分区
添加分区的语法如下:
ALTER TABLE table_name ADD PARTITION (partition_definition)
如下示例为模板化二级分区表 tbl4 添加一级分区 p3,只需要指定一级分区的定义,二级分区的定义会自动按照模板填充。
obclient> CREATE TABLE tbl4(col1 INT, col2 INT, PRIMARY KEY(col1,col2))
PARTITION BY RANGE(col1)
SUBPARTITION BY RANGE(col2)
SUBPARTITION TEMPLATE
(
SUBPARTITION p0 VALUES LESS THAN (50),
SUBPARTITION p1 VALUES LESS THAN (100)
)
(
PARTITION p0 VALUES LESS THAN (100),
PARTITION p1 VALUES LESS THAN (200),
PARTITION p2 VALUES LESS THAN (300)
);
Query OK, 0 rows affected
obclient> ALTER TABLE tbl4 ADD PARTITION p3 VALUES LESS THAN (400);
Query OK, 0 rows affected
删除分区
删除分区的语法如下:
ALTER TABLE table_name DROP PARTITION partition_name;
删除分区的示例如下:
obclient> ALTER TABLE tbl4 DROP PARTITION p3;
Query OK, 0 rows affected
清空分区
清空分区的语法如下:
ALTER TABLE table_name TRUNCATE PARTITION partition_name;
清空分区的示例如下:
obclient> ALTER TABLE tbl4 TRUNCATE PARTITION p2;
Query OK, 0 rows affected