サブパーティションテンプレートを使用してサブパーティションを定義し、サブパーティションの仕様を簡素化できます。 サブパーティションテンプレートでサブパーティション記述子を定義してから、テーブル内の各パーティションにサブパーティションテンプレートを適用するだけで済みます。 これにより、テーブル内の複数のパーティションのサブパーティション記述子を一度に定義できます。
注
- パーティションにサブパーティション記述子を指定しない場合、システムは自動的にサブパーティションテンプレートを使用してサブパーティションを定義します。
- パーティションにサブパーティション記述子を指定した場合、システムは自動的にその記述子を使用してサブパーティションを定義します。
- パーティションにサブパーティション記述子を指定せず、使用可能なサブパーティションテンプレートがない場合、システムは自動的にデフォルトのサブパーティションを作成します。
- サブパーティションテンプレートにサブパーティション名を指定した場合、このテンプレートに基づいて作成されるサブパーティションの名前は、「partition name_subpartition template name」形式で指定されます。 たとえば、パーティション名がpartaで、サブパーティションテンプレート名がsubpartbの場合、サブパーティション名はparta_subpartbです。
構文
- 一般的なサブパーティションテンプレートを作成します。
CREATE TABLE table_definition PARTITION BY hash/range/list (column[, column ]...) SUBPARTITION BY hash/range/list (column[, column ]...) SUBPARTITIONテンプレート (subpartition[, subpartition], ...) (table_partition[, table_partition]...);
- ハッシュサブパーティションに適用可能なサブパーティションテンプレートを作成します。
CREATE TABLE table_definition PARTITION BY hash/range/list (column[, column ]...) SUBPARTITION BY hash(column[, column ]...) SUBPARTITIONテンプレートnum (table_partition[, table_partition]...);
- ハッシュパーティションとサブパーティションに適用できるサブパーティションテンプレートを作成します。
CREATE TABLE table_definition PARTITION BY hash (column[, column ]...) SUBPARTITION BY hash(column[, column ]...) PARTITIONS num SUBPARTIONS num;
- 一般的なサブパーティションテンプレートを変更します。
ALTER TABLE table_definition SUBPARTITIONテンプレート (subpartition[, subpartition], ...)
- ハッシュサブパーティションに適用可能なサブパーティションテンプレートを変更します。
ALTER TABLE table_definition SUBPARTITIONテンプレート番号
- サブパーティションテンプレートを削除します。
ALTER TABLE table_definition SUBPARTITIONテンプレート ()
例
- 一般的なサブパーティションテンプレートを作成します。
テーブルの出荷を作成する (order_id NUMBER NOT NULL, order_date日付NOT NULL、 delivery_date日付NOT NULL, customer_id NUMBER NOT NULL, sales_amount NUMBER NOT NULL ) SUBPARTITION BY RANGE(delivery_date) 分割テンプレート (SUBPARTITION e VALUES LESS THAN (TO_DATE('15-AUG-2006 ','dd-MON-yyyy'))) 、 SUBPARTITIONは以下の値 (TO_DATE('01-SEP-2006 ','dd-MON-yyyy')) 、 SUBPARTITION l値がより少ない (最大値) (PARTITION p_2006_jul VALUES LESS THAN (TO_DATE('01-AUG-2006 '、'dd-MON-yyyy'))) 、 PARTITION p_2006_aug値より少ない値 (TO_DATE('01-SEP-2006 '、'dd-MON-yyyy')) 、 PARTITION p_2006_sep値より少ない値 (TO_DATE('01-OCT-2006 '、'dd-MON-yyyy')) 、 PARTITION p_2006_oct値より少ない値 (TO_DATE('01-NOV-2006 '、'dd-MON-yyyy')) 、 PARTITION p_2006_nov値がより少ない (TO_DATE('01-DEC-2006 '、'dd-MON-yyyy')) 、 PARTITION p_2006_decより少ない値 (TO_DATE('01-JAN-2007 '、'dd-MON-yyyy')) );
- ハッシュサブパーティションに適用可能なサブパーティションテンプレートを作成します。
CREATE TABLE emp_sub_template (deptno NUMBER、empname VARCHAR(32) 、グレードNUMBER) PARTITION BY RANGE(deptno) SUBPARTITION BY HASH(empname) サブパート寺院4 (PARTITION p1の値は (1000) よりも低く、 PARTITION p2の値は (2000) より少なく、 PARTITION p3の値がより少ない (6000) );
- ハッシュパーティションとサブパーティションに適用できるサブパーティションテンプレートを作成します。
CREATE TABLE hash_sub_template (deptno NUMBER、empname VARCHAR(32) 、グレードNUMBER) PARTITION BY HASH(deptno) SUBPARTITION BY HASH(empname) PARTITIONS 4 SUBPARTITIONS 3;
- 一般的なサブパーティションテンプレートを変更します。
ALTER TABLE hash_sub_template SET SUBPARTITIONテンプレート (サブパートa1、 サブパートb1, サブパートc1、 サブパートd1);
- ハッシュサブパーティションに適用可能なサブパーティションテンプレートを変更します。
ALTER TABLE hash_sub_template SET SUBPARTITIONテンプレート3;