DBAtlas · Атлас эксплуатации баз данных

Создать interval-секционирование и преобразовать существующую range-таблицу в interval

OracleСекционирование

Команда

-- New table: a partition is created automatically for each month
CREATE TABLE customer_app.measurements (
  ts        DATE   NOT NULL,
  sensor_id NUMBER,
  value     NUMBER)
PARTITION BY RANGE (ts) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
( PARTITION p_first VALUES LESS THAN (DATE '2026-01-01') );

-- Convert an existing range table to interval (there must be no MAXVALUE partition):
ALTER TABLE customer_app.sale_part SET INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'));
-- Back to range: ALTER TABLE customer_app.sale_part SET INTERVAL ();

-- Rename a system-named partition to a meaningful name:
ALTER TABLE customer_app.measurements RENAME PARTITION FOR (DATE '2026-03-15') TO p2026_03;

-- Check:
SELECT partition_name, partition_position, interval, high_value
FROM   dba_tab_partitions
WHERE  table_owner = 'CUSTOMER_APP' AND table_name = 'MEASUREMENTS'
ORDER  BY partition_position;

SELECT table_name, partitioning_type, interval
FROM   dba_part_tables
WHERE  owner = 'CUSTOMER_APP';

Что делает

Interval-секционирование автоматически создаёт новую секцию при поступлении первой строки за последней границей, устраняя ошибки ORA-14400 из-за забытой секции на следующий месяц. SET INTERVAL преобразует существующую range-таблицу без перемещения данных.

Когда использовать

Для таблиц, растущих по дате, таких как временные ряды, журналы и заказы, и чтобы сократить скрипты обслуживания секций.

Внимание

Требует опции Partitioning (платная, EE). Ключ секционирования должен быть одним столбцом NUMBER/DATE/TIMESTAMP; секцию MAXVALUE нужно предварительно удалить. Ошибочная или экстремальная дата (например, год 9999) открывает далёкую секцию и искажает нумерацию секций; при узких интервалах можно приблизиться к лимиту в 1,048,575 секций (ORA-14300), поэтому проверяйте даты в приложении. Автоматические секции создаются в табличном пространстве таблицы по умолчанию (направляйте их через STORE IN).

Открыть в DBAtlas →

Связанные материалы