Разделить и объединить секции онлайн
OracleСекционированиеКоманда
-- SPLIT: split a range partition in two, keep indexes usable
ALTER TABLE customer_app.sale_part
SPLIT PARTITION p2026_h2 AT (DATE '2026-10-01')
INTO (PARTITION p2026_q3, PARTITION p2026_q4)
UPDATE INDEXES ONLINE;
-- MERGE: merge two adjacent partitions
ALTER TABLE customer_app.sale_part
MERGE PARTITIONS p2026_q3, p2026_q4 INTO PARTITION p2026_h2
UPDATE INDEXES ONLINE;
-- ADD: new partition at the end (when there is no MAXVALUE)
ALTER TABLE customer_app.sale_part
ADD PARTITION p2027 VALUES LESS THAN (DATE '2028-01-01');
-- Check: partition bounds and UNUSABLE index partitions
SELECT partition_name, partition_position, high_value, num_rows
FROM dba_tab_partitions
WHERE table_owner = 'CUSTOMER_APP' AND table_name = 'SALE_PART'
ORDER BY partition_position;
SELECT index_name, partition_name, status
FROM dba_ind_partitions
WHERE index_owner = 'CUSTOMER_APP' AND status <> 'USABLE';Что делает
SPLIT делит секцию по граничному значению на две (12c+: на несколько); MERGE объединяет смежные секции. С ONLINE DML продолжается во время операции; с UPDATE INDEXES локальные и глобальные индексы не становятся UNUSABLE.
Когда использовать
Чтобы разделить разросшуюся секцию MAXVALUE/"прочее", объединить мелкие старые секции перед архивированием или изменить схему секционирования (помесячную на поквартальную).
Внимание
Требует опции Partitioning (платная, EE); ONLINE требует Enterprise Edition. SPLIT/MERGE физически перезаписывает данные: на больших секциях это медленно и создаёт redo/undo и потребность во временном пространстве. Без ONLINE таблица блокируется для DML на время операции; без UPDATE INDEXES глобальные индексы становятся UNUSABLE. Разделение пустой секции выполняется быстро (fast split).
Связанные материалы
- Массовая загрузка или архивирование данных через exchange partition
- Выполнить truncate/drop секции с сохранением работоспособности глобальных индексов
- Создать interval-секционирование и преобразовать существующую range-таблицу в interval
- Проверить ключи секционирования и использование partition-wise join