您的位置:首页 > 其它

分区表及分区索引(11)--合并表分区

2011-11-02 10:52 295 查看
全面学习分区表及分区索引(11)--合并表分区

合并两个分区成一个,适用于除hash之外的其它所有分区形式(hash分区有coalesce partition的嘛,前头刚刚讲过)。

语法很简单:alter table tbname merge partitions/subpartitions pt1,pt2 into partition/subpartition pt3;

同样也支持update indexes子句以避免单独执行造成索引失效的问题。

需要注意一点,要合并的两个分区必须是连续的,这点是由分区本身的特性所决定的,如例:

SQL> select table_owner ,table_name,partition_name,high_value

2 from dba_tab_partitions

3 where table_name = 'T_PART_RANGE';

TABLE_OWNER TABLE_NAME PARTITION_NAME HIGH_VALUE

------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------

KARL T_PART_RANGE T_RANGE_P1 10

KARL T_PART_RANGE T_RANGE_P2 20

KARL T_PART_RANGE T_RANGE_P3 MAXVALUE

SQL> alter table t_part_range merge partitions t_range_p2,t_range_p3 into partition t_range_max;

Table altered

SQL> select table_owner ,table_name,partition_name,high_value

2 from dba_tab_partitions

3 where table_name = 'T_PART_RANGE';

TABLE_OWNER TABLE_NAME PARTITION_NAME HIGH_VALUE

------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------

KARL T_PART_RANGE T_RANGE_MAX MAXVALUE

KARL T_PART_RANGE T_RANGE_P1 10

SQL> select * from t_part_range partition(t_range_max);

ID NAME

---------- ----------

8 no vaild.. //查看MAX分区,这个8 是上一节中 利用交换分区 + without validation 获得的。原来在第二个分区中的数据。

SQL> select partition_name ,high_value ,tablespace_name

2 from dba_tab_partitions

3 where table_name = 'T_PART_RANGE';

PARTITION_NAME HIGH_VALUE TABLESPACE_NAME

------------------------------ -------------------------------------------------------------------------------- ------------------------------

T_RANGE_MAX MAXVALUE KARL_SPACE

T_RANGE_P1 10 PART01

KARL_SAPCE //该TALBESPACE是原来创建建分区t_range_p3时没有指定TABLESPACE,所以默认指定的T_RANGE_MAX。

所以当

partition_name tablespace

--------------- ---------------------

t_range_p2 part02

t_range_p3 KARL_SPACE

做merge操作后。变成......

partition_name tablespace

--------------- ---------------------

t_range_MAX KARL_SPACE

注意,merge分区操作与coalesce分区操作一样,视被合并的分区数据量多少,都可能涉及到大量的IO操作。

其它合并组合分区的操作与上类似,如果要合并组合分区,注意关键字是merge subpartitions,这里就不做演示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: