Разделение по неделям - 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 дней, начиная с воскресенья по субботу.

Другие вопросы по тегам