oracle组合分区

由于Interval分区是针对range的,11g-12.1版本,目前只有Interval—*一共3种Interval的复合分区

range-list方法:

partition by range (updatetime)
interval (numtodsinterval(1,'day'))
subpartition by list(PSNCODE)
SUBPARTITION TEMPLATE(
SUBPARTITION REGION_1 values('038716'),
SUBPARTITION REGION_2 values('270719') )
(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd')))

注意:每个分区有2个子分区,分区的子分区需要手动添加 

Interval分区目前测试,只支持range先分区的方式 

range-hash方法:每个分区10个子hash分区(可以指定每个子分区到单独的表空间)

partition by range (updatetime)
interval(numtodsinterval(1,'day'))
subpartition by hash(PSNCODE)

SUBPARTITION template
   ( SUBPARTITION p1 TABLESPACE ts1
   , SUBPARTITION p2 TABLESPACE ts2
   , SUBPARTITION p3 TABLESPACE ts3
   , SUBPARTITION P4 TABLESPACE ts4
   )

(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd'))) 

注意:这种方式可以实现完全自动的分区,非常适合自增长特性的10位数以上的大表

hash分区最好是2的次方个,不然数据会分布不均 

range-range方法:子分区需要手动添加,这种分区需要一般比较少见

PARTITION BY RANGE (time_id)

INTERVAL (NUMTODSINTERVAL(1,'DAY'))

SUBPARTITION BY RANGE(amount_sold)
   SUBPARTITION TEMPLATE
   ( SUBPARTITION p_low VALUES LESS THAN (1000)
   , SUBPARTITION p_medium VALUES LESS THAN (4000)
   , SUBPARTITION p_high VALUES LESS THAN (8000)
   , SUBPARTITION p_ultimate VALUES LESS THAN (maxvalue)
   )
 (PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy')) )

原文地址:https://www.cnblogs.com/zougang/p/9173060.html