-- Online operation.
ALTER TABLE t1 MODIFY
PARTITION BY RANGE (created_date) (
PARTITION t1_part_2015 VALUES LESS THAN (TO_DATE('01-JAN-2016','DD-MON-YYYY')),
PARTITION t1_part_2016 VALUES LESS THAN (TO_DATE('01-JAN-2017','DD-MON-YYYY')),
PARTITION t1_part_2017 VALUES LESS THAN (TO_DATE('01-JAN-2018','DD-MON-YYYY'))
) ONLINE;
-- Gather statistics.
EXEC DBMS_STATS.gather_table_stats(NULL, 'T1');
-- Check table partitions.
SELECT table_name, partition_name, num_rows
FROM user_tab_partitions
ORDER BY 1,2;
TABLE_NAME PARTITION_NAME NUM_ROWS
-------------------- -------------------- ----------
T1 T1_PART_2015 3340
T1 T1_PART_2016 3290
T1 T1_PART_2027 3370
SQL>
-- Check indexes.
SELECT index_name, partitioned, status
FROM user_indexes
ORDER BY 1;
INDEX_NAME PARTITIONED STATUS
-------------------- ----------- --------
T1_CREATED_DATE_IDX YES N/A
T1_PK NO VALID
SQL>
-- Check index partitions.
SELECT index_name, partition_name, status
FROM user_ind_partitions
ORDER BY 1,2;
INDEX_NAME PARTITION_NAME STATUS
-------------------- -------------------- --------
T1_CREATED_DATE_IDX T1_PART_2015 USABLE
T1_CREATED_DATE_IDX T1_PART_2016 USABLE
T1_CREATED_DATE_IDX T1_PART_2017 USABLE
SQL>
-- Offline operation.
ALTER TABLE t1 MODIFY
PARTITION BY RANGE (created_date) (
PARTITION t1_part_2015 VALUES LESS THAN (TO_DATE('01-JAN-2016','DD-MON-YYYY')),
PARTITION t1_part_2016 VALUES LESS THAN (TO_DATE('01-JAN-2017','DD-MON-YYYY')),
PARTITION t1_part_2017 VALUES LESS THAN (TO_DATE('01-JAN-2018','DD-MON-YYYY'))
);
-- Online operation with modification of index partitioning.
ALTER TABLE t1 MODIFY
PARTITION BY RANGE (created_date) (
PARTITION t1_part_2015 VALUES LESS THAN (TO_DATE('01-JAN-2016','DD-MON-YYYY')),
PARTITION t1_part_2016 VALUES LESS THAN (TO_DATE('01-JAN-2017','DD-MON-YYYY')),
PARTITION t1_part_2017 VALUES LESS THAN (TO_DATE('01-JAN-2018','DD-MON-YYYY'))
) ONLINE
UPDATE INDEXES
(
t1_pk GLOBAL,
t1_created_date_idx GLOBAL
);
-- Check indexes.
SELECT index_name, partitioned, status
FROM user_indexes
ORDER BY 1;
INDEX_NAME PARTITIONED STATUS
-------------------- ----------- --------
T1_CREATED_DATE_IDX NO VALID
T1_PK NO VALID
SQL>
-- Check index partitions.
SELECT index_name, partition_name, status
FROM user_ind_partitions
ORDER BY 1,2;
no rows selected
SQL>