Мы используем разбиение, чтобы иметь возможность удалять старые данные (Oracle называет это ILM ).
Есть столбец с «сроком до истечения срока», после которого раздел будет удален.
Чтобы избежать необходимости добавлять разделы вручную (или по сценарию), мы используем интервальное разбиение:
CREATE TABLE my_table (
id NUMBER NOT NULL PRIMARY KEY,
--... other columns ...
t DATE
) PARTITION BY RANGE (t) INTERVAL(NUMTODSINTERVAL(7, 'DAY')) (
PARTITION PRE2018 VALUES LESS THAN (DATE '2018-01-01')
);
INSERT INTO my_table(id, t) VALUES (1, SYSDATE);
-- 1 row inserted.
... что отлично работает, но мы не можем оставить дату разбиения на NULL
:
INSERT INTO my_table(id, t) VALUES (2, NULL);
-- ORA-14300: partitioning key maps to a partition outside maximum permitted number of partitions
Как это можно решить?