1、增加分区
对于范围分区来说,添加一个分区,必须该分区划定的界限高于原来的最大界限,也就是说只能往上加,不能往下加。那么对于用maxvalue关键字创建的范围分区就不能增加分区了
举例:
create table range_fraction ( id number(8), name varchar2(20), fraction number(3), grade number(2) ) partition by range(fraction) ( partition fraction_60 values less than(40), --不及格 partition fraction_80 values less than(60), --及格 partition fraction_100 values less than(80) --优秀 )对于该分区我们增加一个分区:
ALTER TABLE range_fraction ADD PARTITION fraction_100 VALUES LESS THAN (100);为列表分区添加一个分区:
create table range_fraction ( id number(8), name varchar2(20), fraction number(3), grade number(2) ) partition by list(grade) ( partition p1 values(1,2,3) tablespace tbs_haicheng , partition p2 values(4,5,6) tablespace users );
ALTER TABLE range_fraction ADD partition p3 VALUES (7,8);我们再为p3分区新增两个表分区值:
ALTER TABLE range_fraction MODIFY PARTITION p3 ADD VALUES(9,10);然后再将p3分区的表分区值中的10删掉:
ALTER TABLE range_fraction MODIFY PARTITION p3 DROP VALUES(10);
为哈希分区添加一个子分区:
ALTER TABLE TABLENAME ADD PARTITION PARTNAME;
添加一个子分区的格式:
ALTER TABLE TABLENAME MODIFY PARTITION PARTNAME ADD SUBPARTITION SUBPARTNAME;
2、删除分区
删除分区比较简单,格式如下:
ALTER TABLE ... DROP PARTITION part_name;
3、分区合并
合并父分区格式:
ALTER TABLE TABLENAME MERGE PARTITIONS p1-1, p1-2 INTO PARTITION p1 UPDATE INDEXES;如果省略了UPDATE INDEXES 的话需要为受影响的分区重建索引
合并子分区的格式:
ALTER TABLE TABLENAME MERGE SUBPARTITIONS part_1_sub_2, part_1_sub_3 INTO SUBPARTITION part_1_sub_2 UPDATE INDEXES;
4、转换分区
可以将分区表转换成非分区表,或者几种不同分区表之间的转换。如下:
CREATE TABLE hash_part02 AS SELECT * FROMhash_example WHERE 1=2; ALTER TABLE hash_example EXCHANGE PARTITIONpart02 WITH TABLE hash_part02;
这时,分区表hash_example中的part02分区的资料将被转移到hash_part02这个非分区表中。