1. 程式人生 > >oracle組合分區

oracle組合分區

sin hash分區 partition pda values to_date oracl 方法 mat

由於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‘)) )

oracle組合分區