Gunakan template subpartisi untuk mendefinisikan dan menyederhanakan spesifikasi subpartisi. Cukup definisikan deskriptor subpartisi dalam template, lalu terapkan ke setiap partisi dalam tabel. Dengan cara ini, deskriptor subpartisi dapat didefinisikan untuk beberapa partisi sekaligus.
Catatan
- Jika deskriptor subpartisi tidak ditentukan untuk sebuah partisi, sistem akan menggunakan template subpartisi secara otomatis.
- Jika deskriptor subpartisi telah ditentukan untuk sebuah partisi, sistem akan menggunakan deskriptor tersebut secara otomatis.
- Jika deskriptor subpartisi tidak ditentukan untuk sebuah partisi dan tidak ada template subpartisi yang tersedia, sistem akan membuat subpartisi default secara otomatis.
- Jika nama subpartisi telah ditentukan dalam template subpartisi, subpartisi yang dibuat berdasarkan template ini akan diberi nama dalam format "nama_partisi_nama_template_subpartisi". Sebagai contoh, jika nama partisi adalah parta dan nama template subpartisi adalah subpartb, maka nama subpartisi adalah parta_subpartb.
Sintaksis
- Buat template subpartisi umum.
CREATE TABLE table_definition PARTITION BY hash/range/list (column[, column ]...) SUBPARTITION BY hash/range/list (column[, column ]...) SUBPARTITION TEMPLATE (subpartition[, subpartition], ...) (table_partition[, table_partition]...); - Buat template subpartisi yang berlaku untuk subpartisi hash.
CREATE TABLE table_definition PARTITION BY hash/range/list (column[, column ]...) SUBPARTITION BY hash(column[, column ]...) SUBPARTITION TEMPLATE num (table_partition[, table_partition]...); - Buat template subpartisi yang berlaku untuk partisi hash dan subpartisi.
CREATE TABLE table_definition PARTITION BY hash (column[, column ]...) SUBPARTITION BY hash(column[, column ]...) PARTITIONS num SUBPARTITIONS num; - Modifikasi template subpartisi umum.
ALTER TABLE table_definition SUBPARTITION TEMPLATE (subpartition[, subpartition], ...) - Modifikasi template subpartisi yang berlaku untuk subpartisi hash.
ALTER TABLE table_definition SUBPARTITION TEMPLATE number - Hapus template subpartisi.
ALTER TABLE table_definition SUBPARTITION TEMPLATE ()
Contoh
- Buat template subpartisi umum.
CREATE TABLE shipments ( order_id NUMBER NOT NULL, order_date DATE NOT NULL, delivery_date DATE NOT NULL, customer_id NUMBER NOT NULL, sales_amount NUMBER NOT NULL ) PARTITION BY RANGE (order_date) SUBPARTITION BY RANGE(delivery_date) SUBPARTITION TEMPLATE (SUBPARTITION e VALUES LESS THAN (TO_DATE('15-AUG-2006','dd-MON-yyyy')), SUBPARTITION a VALUES LESS THAN (TO_DATE('01-SEP-2006','dd-MON-yyyy')), SUBPARTITION l VALUES LESS THAN (MAXVALUE) ) ( PARTITION p_2006_jul VALUES LESS THAN (TO_DATE('01-AUG-2006','dd-MON-yyyy')), PARTITION p_2006_aug VALUES LESS THAN (TO_DATE('01-SEP-2006','dd-MON-yyyy')), PARTITION p_2006_sep VALUES LESS THAN (TO_DATE('01-OCT-2006','dd-MON-yyyy')), PARTITION p_2006_oct VALUES LESS THAN (TO_DATE('01-NOV-2006','dd-MON-yyyy')), PARTITION p_2006_nov VALUES LESS THAN (TO_DATE('01-DEC-2006','dd-MON-yyyy')), PARTITION p_2006_dec VALUES LESS THAN (TO_DATE('01-JAN-2007','dd-MON-yyyy')) ); - Buat template subpartisi yang berlaku untuk subpartisi hash.
CREATE TABLE emp_sub_template (deptno NUMBER, empname VARCHAR(32), grade NUMBER) PARTITION BY RANGE(deptno) SUBPARTITION BY HASH(empname) SUBPARTITION TEMPLATE 4 (PARTITION p1 VALUES LESS THAN (1000), PARTITION p2 VALUES LESS THAN (2000), PARTITION p3 VALUES LESS THAN (6000) ); - Buat template subpartisi yang berlaku untuk partisi hash dan subpartisi.
CREATE TABLE hash_sub_template (deptno NUMBER, empname VARCHAR(32), grade NUMBER) PARTITION BY HASH(deptno) SUBPARTITION BY HASH(empname) PARTITIONS 4 SUBPARTITIONS 3; - Modifikasi template subpartisi umum.
ALTER TABLE hash_sub_template SET SUBPARTITION TEMPLATE (SUBPARTITION a1, SUBPARTITION b1, SUBPARTITION c1, SUBPARTITION d1); - Modifikasi template subpartisi yang berlaku untuk subpartisi hash.
ALTER TABLE hash_sub_template SET SUBPARTITION TEMPLATE 3;