在复合范围分区表中合并分区如前面所论述的“合并范围分区”。但是,当你合并两个复合范围分区时,生成的新分区将继承子分区模版的子分区描述,前提是该模版存在。如果不存在子分区模版,那么将会创建一个上限边界是MAXVALUE的新分区。
对于间隔范围分区表,你只能合并两个相邻的间隔分区,或者时最高范围分区和第一个间隔分区。如“合并间隔分区”所述,当你在间隔哈希分区表合并分区时,转换点时会移动的。
下面的语句合并了月份间隔范围分区表orders的两个分区。该表存在一个子分区模版。
ALTER TABLE orders
MERGE PARTITIONS FOR(TO_DATE('01-MAR-2007','dd-MON-yyyy')),
FOR(TO_DATE('01-APR-2007','dd-MON-yyyy'))
INTO PARTITION p_pre_may_2007;
如果2007年3月和4月的分区仍然在间隔范围分区表的间隔部分,那么合并操作将会把转换点移动到2007年5月1日。
对于分区p_pre_may_2007而言,所有子分区都将从子分区模版中继承他们的属性。新生成分区的数据由两个分区的数据组成。但是,可能存在数据库返回错误的情况。这个之所以会发生,可能是因为当同时满足下列条件时,数据可能会映射到新分区之外:
合并后子分区的一些值可能并不属于子分区模版。
子分区模版不包含一个上限边界值为MAXVALUE的子分区定义。
我们可以通过在子分区模版中指定一个上限边界值为MAXVALUE的子分区来消除这个错误条件。