Если вы разрываетесь между разделением по диапазону и хеш-разделением, можно использовать понемногу и от одного и от другого. По- явившееся u Oracle 8i композитное разделение (composite partitioning) позволяет создавать несколько диапазонных разделов, каждый из которых содержит два или более хеш-подраздела.
Композитное разделение удобно использовать тогда, когда тип данных таблицы позволяет выполнить разделение по диапазону, но вам хотелось бы большей детализации, чем это возможно при применении чисто диапазонного разделения. Например, разумно разбить таблицу заказов по годам. Если вы хотите создать несколько разделов для каждого года, можно разбить каждый год на подразделы, хешированием разделив номера клиентов на четыре части. Следующий пример уточняет выполненное ранее разделение по диапазону, образуя подразделы на основе хеш-функции номера клиента:
CRFATE TABLE Cust_Order ( order_nmb NUMER(7) NОТ NULL, cust_nbr NUMBER(5) MOT NULL, order_dt DATE NOT MULL,
sales_emp_id NUMBER(5) NOT MULL, sale_price NUMBER(9,2),
expocted_ship_dt DATE,
cancelled_dt DATE,
ship_dt DATE,
status VARCHAR2(20))
PARTITION BY RANGE (oraer_dt) SUBPARTITION BY HASH (cust_nbr) SUBPARTITIONS 4 STORE IN (order_sub1, order_sub2, order_sub3, order_sub4) (PARTITION orders_1999
VALUES LESS THAN (TGO_DATE('01-JAN-2000','DD-MON-YYYY')) (SUBPARTITION orders_1999_s1 TABLESPACE order_sub1, SUBPARTITION oroers_1999_s2 TABLESPACE order_sub2,
SUBPARTITION oroers_1999_s3 TABLESPACE order_sub3,
SUBPARTITION oroers_1999_s4 TABLESPACE order_sub4), PARTITION orders_2000
VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')) (SUBPARTITION orcers_2000_s1 TABLESPACE order_sub1,
SUBPARTITION orders_2000_s2 TABLESPACE order_sub2,
SUBPARTITION orders_2000_s3 TABLESPACE order_sub3, SUBPARTITION orders_2000_s4 TABLESPACE order_sub4), PARTITION orders_2001 VALUES LESS THAN (TO_DATE('01-JAN-2002'.'DD-MON-YYYY')) (SUBPARTITION orders_2001_s1 TABLESPACE order_sub1, SUBPARTITION orders_2001_s2 TABLESPACE order_sub2, SUBPARTITION orders_2001_s3 TABLESPACE order_sub3,
SUBPARTITION orriers_2001_s4 TABLESPACE order_sub4));
При использовании композитного разделения все данные физически хранятся в подразделах, а разделы, как и сами таблицы, становятся виртуальными.