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

全面学习分区表及分区索引(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,这里就不做演示



















































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值