Разделение по неделям - Oracle Database
Мне было интересно, если вы можете помочь мне разобраться и разбираться с разделением по неделям в Oracle.
Моя ситуация такова, что у меня много данных, поступающих за день, и я хотел бы делать разделы за неделю. Я также буду использовать sysdate при вставке данных в БД, чтобы сделать запись уникальной.
Должен ли я написать их вручную? Если да, как это должно выглядеть? Должен ли я все еще использовать что-то вроде: VALUES LESS THAN?
Очень жду ваших мнений!
1 ответ
Решение
Еженедельный раздел - это проблема, но вы можете создать интервальный раздел на 7 дней. Oracle автоматически создаст новый раздел для новых записей.
create table TEST_partition
(
ID number(4, 0)
, creation_date date
)
partition by range (creation_date)
interval ( numtodsinterval(7, 'day') )
(partition TEST_P1 values less than (to_date(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')));
Вы можете создать интервальный раздел следующим образом:
CREATE TABLE invoices
(invoice_no NUMBER NOT NULL,
invoice_date DATE NOT NULL,
comments VARCHAR2(500))
PARTITION BY RANGE (invoice_date)
INTERVAL (NUMTODSINTERVAL(7,'DAY'))
(PARTITION invoices_q1 VALUES LESS THAN (TO_DATE('01/04/2001', 'DD/MM/YYYY')));
Он создает новый раздел на 7 дней, начиная с воскресенья по субботу.