学无止境
分类: Oracle
2013-09-24 10:02:59
维护操作 |
范围分区 |
哈希分区 |
列表分区 |
范围-哈希分区 |
范围-列表分区 |
增加分区 |
ADD PARTITION |
ADD PARTITION |
ADD PARTITION |
ADD PARTITION MODIFY PARTITION ... ADD SUBPARTITION |
ADD PARTITION MODIFY PARTITION ... ADD SUBPARTITION |
聚结分区 |
n/a |
COALESCE PARTITION |
n/a |
MODIFY PARTITION ... COALESCE SUBPARTITION |
n/a |
删除分区 |
DROP PARTITION |
n/a |
DROP PARTITION |
DROP PARTITION |
DROP PARTITION DROP SUBPARTITION |
交换分区 |
EXCHANGE PARTITION |
EXCHANGE PARTITION |
EXCHANGE PARTITION |
EXCHANGE PARTITION EXCHANGE SUBPARTITION |
EXCHANGE PARTITION EXCHANGE SUBPARTITION |
合并分区 |
MERGE PARTITIONS |
n/a |
MERGE PARTITIONS |
MERGE PARTITIONS |
MERGE PARTITIONS MERGE SUBPARTITIONS |
修改默认属性 |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES MODIFY DEFAULT ATTRIBUTES FOR PARTITION |
MODIFY DEFAULT ATTRIBUTES MODIFY DEFAULT ATTRIBUTES FOR PARTITION |
修改分区实时属性 |
MODIFY PARTITION |
MODIFY PARTITION |
MODIFY PARTITION |
MODIFY PARTITION MODIFY SUBPARTITION |
MODIFY PARTITION MODIFY SUBPARTITION |
为列表分区增加值 |
n/a |
n/a |
MODIFY PARTITION...ADD VALUES |
n/a |
MODIFY SUBPARTITION ... ADD VALUES |
为列表分区删除值 |
n/a |
n/a |
MODIFY PARTITION...DROP VALUES |
n/a |
MODIFY SUBPARTITION ... DROP VALUES |
修改子分区模板 |
n/a |
n/a |
n/a |
SET SUBPARTITION TEMPLATE |
SET SUBPARTITION TEMPLATE |
移动分区 |
MOVE PARTITION |
MOVE PARTITION |
MOVE PARTITION |
MOVE SUBPARTITION |
MOVE SUBPARTITION |
重命名分区 |
RENAME PARTITION |
RENAME PARTITION |
RENAME PARTITION |
RENAME PARTITION RENAME SUBPARTITION |
RENAME PARTITION RENAME SUBPARTITION |
分裂分区 |
SPLIT PARTITION |
n/a |
SPLIT PARTITION |
SPLIT PARTITION |
SPLIT PARTITION SPLIT SUBPARTITION |
截断分区 |
TRUNCATE PARTITION |
TRUNCATE PARTITION |
TRUNCATE PARTITION |
TRUNCATE PARTITION TRUNCATE SUBPARTITION |
TRUNCATE PARTITION TRUNCATE SUBPARTITION |
1.增加分区:
如果是范围分区,新增的分区界限必须高于最后一个分区的限界。
ALTER TABLE PART_TAB1 ADD partition p8 values less than (to_date('2013-01-01','yyyy-mm-dd'));
增加列表分区
ALTER TABLE PART_TAB2 ADD partition pfz values ('FUZHOU');
增加哈希分区
ALTER TABLE PART_TAB3 ADD partition p6;
2.聚结分区
聚结分区只用于哈希分区,目的在于减少哈希分区的数量,当哈希分区聚结时,其内容会根据哈希算法分布到一个或多个其他分区之中,内容被重新分配之后,删除分区。
ALTER TABLE PART_TAB3 COALESCE PARTITION;
3.删除分区
删除一个分区,值得注意的是,哈希分区不能执行drop命令来删除分区,只能通过coalesce命令。
ALTER TABLE PART_TAB1 drop partition pmax UPDATE INDEXES;
ALTER TABLE PART_TAB5 drop subpartition P1_PSZ;
4.交换分区
交换分区,可以把一个分区的内容转换到一个非分区表中,也可以将一个非分区表的内容转换到分区表的一个分区中。需要压缩分区表时,采用交换分区的方式进行数据压缩,有更高的效率。
create table exchange_table_3 as select * from PART_TAB3 where 1=0;
ALTER TABLE PART_TAB3 EXCHANGE PARTITION p3 WITH TABLE exchange_table_3;
5.合并分区
合并分区可以将2个分区合并成一个分区。
合并分区不能用于哈希分区,其他分区方式都可以使用。
如果是范围分区,只能将相邻的2个分区合并,并且只能合并到下限的分区中。
ALTER TABLE PART_TAB1 MERGE PARTITIONS p7, p8 INTO PARTITION p8 UPDATE INDEXES;
6.修改默认属性
修改创建子分区的默认属性,只对以后添加的子分区有效。
修改以后创建子分区的默认表空间:
ALTER TABLE PART_TAB4 MODIFY DEFAULT ATTRIBUTES FOR PARTITION p1 TABLESPACE ldytbs;
7.修改分区实时属性
实时属性不能修改表空间的属性,修改实时表空间属性只能通过移动分区的方式。
ALTER TABLE PART_TAB1 MODIFY PARTITION p1 REBUILD UNUSABLE LOCAL INDEXES;
8.为列表分区增加值
为列表分区或子分区增加判断词
ALTER TABLE PART_TAB2 MODIFY PARTITION PSZ ADD VALUES ('SZ','NANSHAN','FUTIAN','YANTIAN','LUOHU');
9.为列表分区删除值
ALTER TABLE PART_TAB2 MODIFY PARTITION PSZ DROP VALUES ('NANSHAN','FUTIAN','YANTIAN','LUOHU');
10.修改子分区模板
ALTER TABLE PART_TAB4
SET SUBPARTITION TEMPLATE
(SUBPARTITION a TABLESPACE users,
SUBPARTITION b TABLESPACE ldytbs,
SUBPARTITION c TABLESPACE users,
SUBPARTITION d TABLESPACE ldytbs
);
11.移动分区
移动分区,可以将一个分区移动到另一个表空间中,并且可以加上压缩,并行,不记录日志等参数。
alter table part_tab1 move partition p1 tablespace ldytbs nologging compress parallel (degree 2);
12.重命名分区
ALTER TABLE part_tab1 RENAME PARTITION p1 TO p001;
13.分裂分区
分裂分区,将一个分区分成2个分区,哈希分区模式下不能分裂分区,其余2种分区模式下,分裂分区的方式各有不同。
范围分区模式下,使用at关键字,在该值之前的分裂为一个分区,之后的为另一个分区,at之后的这个值需要在原分区的范围内。
ALTER TABLE part_tab1 SPLIT PARTITION
p8 at (TO_DATE('2012-12-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) INTO
(
PARTITION p7,
PARTITION p8
);
列表分区模式下,用values关键字,引用的值必须在现有分区内,分裂之后,包含这些值的内容在第一个分区内,其他的在第二个分区内。
ALTER TABLE part_tab2
SPLIT PARTITION PSZ VALUES ('NANSHAN','FUTIAN','YANTIAN','LUOHU')
INTO
( PARTITION PSZ_district
TABLESPACE ldytbs,
PARTITION PSZ)
PARALLEL 4;
14.截断分区
可以像截断一张表一样,截断一个分区。
ALTER TABLE part_tab3 TRUNCATE PARTITION p3;