#oracle #table-partitioning
#Oracle #разделение таблиц на разделы #разбиение таблицы
Вопрос:
Мне нужно создать таблицу с разделением на диапазоны:
т.е.
create table table1(item_id number(22), sys_entry_date timestamp default sysdate)
partition by range(sys_entry_date) interval(NUMTOYMINTERVAL(1,'YEAR'))
(partition p01 values less than (to_date('31-DEC-2016','DD-MON-YYYY')));
Несколько вставок для демонстрации:
---Should lie in the main partition's main subpartition (crnt_part) since the it's part of the latest records received.
insert into table1 values(1, sysdatetime);
---Should lie in the main partition's subpartition of default section (prev_part) since the it's 2 days older
insert into table1 values(1, sysdatetime-3);
insert into table1 values(1, sysdatetime-4);
---Would help us identify the yearly partitions (suggestive)
insert into table1 values(2, sysdatetime-1500);
insert into table1 values(3, sysdatetime-1200);
insert into table1 values(4, sysdatetime-800);
insert into table1 values(1, sysdatetime-400);
Я хочу добиться выполнения этого:
- Ежегодное разбиение;
- В течение года подраздел, основанный на sys_entry_date, который 2.a. последние 2 дня хранится в crnt_part 2.b. оставшийся в разделе по умолчанию, возможно, в prev_part
Признателен, если кто-нибудь может помочь в этом конкретном контексте.
Комментарии:
1. если вы можете указать количество строк; сгруппированных по годам и месяцам, я смогу предложить лучшее предложение по разделению
2. Не уверен, какие именно детали вам нужны, но добавил некоторые инструкции insert, чтобы сделать сценарий более понятным.
3. Где в этом участвует разделение на разделы? Или вы хотите, чтобы каждый раздел месяца был разделен на два подраздела? Не похоже, что у вас будут какие-либо процессы, которые выиграют от этой схемы.
4. Если ваш тип данных столбца
sys_entry_date
равен, вам также следует использоватьSYSTIMESTAMP
вместоSYSDATE
, а также для интервала раздела aTIMESTAMP
было бы лучше.5. Вы могли бы использовать интервал
INTERVAL '2' DAY
. Затем с помощью 2-дневного задания объедините старые ежедневные разделы в годовой раздел.