2013年(350)
分类: Mysql/postgreSQL
2013-04-25 10:43:59
合并两个分区成一个,适用于除hash之外的其它所有分区形式(hash分区有coalesce partition的嘛,前头刚刚讲过)。
语法很简单:alter table tbname merge partitions/subpartitions pt1,pt2 into partition/subpartition pt3;
同样也支持update indexes子句以避免单独执行造成索引失效的问题。
需要注意一点,要合并的两个分区必须是连续的,这点是由分区本身的特性所决定的,如例:
JSSWEB> alter table t_partition_range merge partitions t_range_p1,t_range_p2
2 into partition t_range_pnew;
表已更改。
JSSWEB> select table_name,partition_name,high_value from user_tab_partitions
2 where table_name='T_PARTITION_RANGE';
TABLE_NAME PARTITION_NAME HIGH_VALUE
------------------------------ ------------------------------ ----------------
T_PARTITION_RANGE T_RANGE_P3 30
T_PARTITION_RANGE T_RANGE_PMAX MAXVALUE
T_PARTITION_RANGE T_RANGE_PNEW 20
JSSWEB> select *from t_partition_range partition(t_range_pnew);
ID NAME
---------- --------------------------------------------------
11 a
12 b
13 c
8 g
可见,合并分区操作不会造成数据丢失,另外如果你想为新分区指定属性的话,在语句末尾处增加存储属性即可(如果不指定,则新分区默认继续表的存储属性)。例如:
JSSWEB> select partition_name,high_value,tablespace_name from user_tab_partitions
2 where table_name='T_PARTITION_LIST';
PARTITION_NAME HIGH_VALUE TABLESPACE_NAME
-------------------- -------------------------------------------------- ---------------
T_LIST_P1 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 TBSPART01
T_LIST_P2 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 TBSPART02
T_LIST_P3 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 TBSPART03
T_LIST_PD default TBSPART04
JSSWEB> alter table t_partition_list merge partitions t_list_p2,t_list_p3
2 into partition t_list_p2 tablespace tbspart02;
表已更改。
JSSWEB> select partition_name,high_value,tablespace_name from user_tab_partitions
2 where table_name='T_PARTITION_LIST';
PARTITION_NAME HIGH_VALUE TABLESPACE_NAME
-------------------- -------------------------------------------------- ---------------
T_LIST_P1 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 TBSPART01
T_LIST_P2 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 11, 12, 13 TBSPART02
, 14, 15, 16, 17, 18, 19, 20
T_LIST_PD default TBSPART04
注意,merge分区操作与coalesce分区操作一样,视被合并的分区数据量多少,都可能涉及到大量的IO操作。
其它合并组合分区的操作与上类似,如果要合并组合分区,注意关键字是merge subpartitions,这里就不做演示了。
=====================================
查看前面的连载: