融合分区是减少哈希分区表或索引的分区数量的一种方法,也可以用来减少复合哈希分区表的子分区数量。当一个哈希分区被融合时,它的内容会根据哈希函数重新分配到一个或多个其他分区。被融合的分区是由数据库来选定的,在其内容完成重新分布后会被删除。如果你在引用分区表定义的基表中进行融合分区操作,那么引用分区表会自动继承新的分区定义。
索引可能被标识为UNUSABLE,如下表所述:
表类型
索引操作
普通表(堆表)
除非你在ALTER TABLE语句中指定UPDATE INDEXES字句:
l l 对于新增分区和重新分配的现有分区的本地索引,被标识为UNUSABLE,必须重建。
l l 所有全局索引,或者分区全局索引的所有分区,被标识为UNUSABLE,必须重建。
索引组织表
l 对于本地索引,和普通表的处理方式一样。
l 所有全局索引保持可用;
在哈希分区表中融合一个分区
我们用ALTER TABLE ... COALESCE PARTITION语句在哈希分区表中融合一个分区。下面的语句通过融合一个分区,使表ouu1的分区数量减少了一个。
ALTER TABLE ouu1
COALESCE PARTITION;
在复合哈希分区表中融合一个子分区
下面的语句将分区us_locations的一个子分区的内容重新分布到同一分区的一个或多个其他子分区(由哈希函数决定),需要注意的是,对于一个间隔分区表而言,你只能融合物化范围分区或者物化间隔分区的哈希子分区。基本上,这个操作可视为MODIFY PARTITION ... ADD SUBPARTITION的逆操作。
ALTER TABLE diving MODIFY PARTITION us_locations
COALESCE SUBPARTITION;
融合全局哈希分区索引
在一个全局哈希分区索引中,我们可以使用ALTER INDEX语句的COALESCE PARTITION子句来让数据库减少一个索引分区。数据库会基于哈希分区的要求来选择分区。下面的语句将索引hgidx的分区数量减少了一个。
ALTER INDEX hgidx COALESCE PARTITION;