分裂二级分区¶
使用ALTER TABLE … SPLIT SUBPARTITION语句分裂二级子分区表。
在执行分裂分区时要创建两个新的分区表,然后在重新分布行到两个新的分区表里。这个代价是非常大的,因为这需要扫描被分区的表的所有行,然后再插入到新的分区里。如果不使用UPDATE INDEX从句,那么局部和全局索引也需要重建。
注意:分裂二级分区时,只能指定tablespace,压缩属性和lob属性。其他规则同分裂一级分区。
示例:分裂二级子分区表¶
将二级子分区表p1_sub2分裂成两个二级子分区表p1_sub2_1和p1_sub2_2
-- 清理环境
DROP TABLE tab;
DROP TABLESPACE ts1;
-- 创建表空间
CREATE TABLESPACE ts1 DATAFILE 'ts1.dt' SIZE 5M AUTOEXTEND ON NEXT 5M;
-- 创建分区表
CREATE TABLE tab
(
c1 int,
c2 varchar(2)
)
PARTITION BY RANGE(C1)
SUBPARTITION BY LIST(C2)
(
PARTITION p1 VALUES LESS THAN(10)
(
SUBPARTITION p1_sub1 VALUES ('A1', 'A2'),
SUBPARTITION p1_sub2 VALUES ('B1', 'B2', 'B3', 'C1', 'C2', 'C3')
),
PARTITION p2 VALUES LESS THAN(20)
);
ALTER TABLE tab SPLIT SUBPARTITION p1_sub2 values('B1', 'B2', 'B3')
INTO ( SUBPARTITION p1_sub2_1 TABLESPACE ts1, SUBPARTITION p1_sub2_2) ;
-- 删除表和表空间
DROP TABLE tab CASCADE;
DROP TABLESPACE ts1;