プライマリ・コンテンツに移動
Oracle® Database VLDBおよびパーティショニング・ガイド
12c リリース1 (12.1)
B71291-10
目次へ移動
目次
索引へ移動
索引

前
次

コンポジット時間隔 - ハッシュ・パーティション表の作成

複数のハッシュ・パーティションを含む時間隔 - ハッシュ・パーティション表は、PARTITION句で複数のハッシュ・パーティションを指定するか、サブパーティション・テンプレートを使用して作成できます。これらのいずれの方法も使用しない場合、後続の時間隔パーティションにはハッシュ・サブパーティションが1つのみ作成されます。

次の例では、time_idにより月間隔で時間隔パーティション化され、cust_idでハッシュ・サブパーティション化されたsales表を示します。この例では、個々のハッシュ・パーティションに特定の表領域を割り当てずに、複数のハッシュ・パーティションが指定されています。

CREATE TABLE sales
  ( prod_id       NUMBER(6)
  , cust_id       NUMBER
  , time_id       DATE
  , channel_id    CHAR(1)
  , promo_id      NUMBER(6)
  , quantity_sold NUMBER(3)
  , amount_sold   NUMBER(10,2)
  )
 PARTITION BY RANGE (time_id) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
 SUBPARTITION BY HASH (cust_id) SUBPARTITIONS 4
 (PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy'))
  )
PARALLEL;

次の例では、time_idにより月間隔で時間隔パーティション化され、cust_idでハッシュ・サブパーティション化された同じsales表を示します。ただし、この例では、個々のハッシュ・パーティションは別々の表領域に格納されます。後続のハッシュ・サブパーティションへの表領域の割当てを定義するために、サブパーティション・テンプレートが使用されています。

CREATE TABLE sales
  ( prod_id       NUMBER(6)
  , cust_id       NUMBER
  , time_id       DATE
  , channel_id    CHAR(1)
  , promo_id      NUMBER(6)
  , quantity_sold NUMBER(3)
  , amount_sold   NUMBER(10,2)
  )
 PARTITION BY RANGE (time_id) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
 SUBPARTITION BY hash(cust_id)
   SUBPARTITION template
   ( SUBPARTITION p1 TABLESPACE ts1
   , SUBPARTITION p2 TABLESPACE ts2
   , SUBPARTITION p3 TABLESPACE ts3
   , SUBPARTITION P4 TABLESPACE ts4
   )
 (PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy'))
  )
PARALLEL;

サブパーティション・テンプレートの使用方法の詳細は、「コンポジット・パーティション表を説明するサブパーティション・テンプレートの指定」を参照してください。