Splitting Range Partitions
CREATE TABLE range_sales ( prod_id NUMBER(6)
, cust_id NUMBER
, time_id DATE
, quantity_sold NUMBER(3)
, amount_sold NUMBER(10,2)
)
PARTITION BY RANGE (time_id)
( PARTITION SALES_Q1_2012 VALUES LESS THAN (TO_DATE('01/03/2020','DD/mm/YYYY')),
PARTITION SALES_Q2_2012 VALUES LESS THAN (TO_DATE('01/06/2020','DD/mm/YYYY')),
PARTITION SALES_Q3_2012 VALUES LESS THAN (TO_DATE('01/09/2020','DD/mm/YYYY')),
PARTITION SALES_Q4_2012 VALUES LESS THAN (MAXVALUE));
ALTER TABLE range_sales SPLIT PARTITION sales_q1_2012 INTO
(
PARTITION sales_jan_2012 values less than (TO_DATE('01/01/2020','DD/mm/YYYY')),
PARTITION sales_feb_2012 values less than (TO_DATE('01/02/2020','DD/mm/YYYY')),
PARTITION SALES_Q1_2012);
SALES_JAN_2012 TO_DATE(' 2020-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SALES_FEB_2012 TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SALES_Q1_2012 TO_DATE(' 2020-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SALES_Q2_2012 TO_DATE(' 2020-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SALES_Q3_2012 TO_DATE(' 2020-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SALES_Q4_2012 MAXVALUE
Yukarıdaki örnekte sales_q1_2012 partition'ını daha küçük ay aralıklarına böldük.
Aşağıda da benzer şekilde subpartitionlar oluşturulmuştur.
ALTER TABLE range_sales SPLIT SUBPARTITION sales_q1_2012 INTO
(SUBPARTITION sales_jan_2012 values less than (TO_DATE('01-FEB-2012','dd-MON-yyyy')),
SUBPARTITION sales_feb_2012 values less than (TO_DATE('01-MAR-2012','dd-MON-yyyy')),
SUBPARTITION sales_mar_2012);

Yorum Gönder