Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как создать partition по полю date, который автоматически создаст партиции по неделе? / 10 сообщений из 10, страница 1 из 1
27.11.2017, 15:59
    #39560075
Лиса Алиса
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
Как создать автоматически недельные партиции? А по две неделе? А по месяцу? Есть поле типа date, я не хочу ручками писать партиции на года вглубь, как сделать, чтобы база сама выставила партиции?
...
Рейтинг: 0 / 0
27.11.2017, 16:02
    #39560078
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
job ?
...
Рейтинг: 0 / 0
27.11.2017, 16:09
    #39560082
Лиса Алиса
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
tru55,

job это я так понимаю, будущие партиции, а мне за прошедшие месяца при создании таблицы надо.
...
Рейтинг: 0 / 0
27.11.2017, 16:13
    #39560083
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
Лиса Алисаtru55,

job это я так понимаю, будущие партиции, а мне за прошедшие месяца при создании таблицы надо.

INTERVAL partitioning.

SY.
...
Рейтинг: 0 / 0
27.11.2017, 16:31
    #39560094
Лиса Алиса
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
SY,

create table
pos_data (
start_date DATE,
store_id NUMBER,
inventory_id NUMBER(6),
qty_sold NUMBER(3)
)
PARTITION BY RANGE (start_date)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')),
PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY'))
);

Какие партишены указаны в скобках? pos_data_p2 и pos_data_p3? Он всем проставит партиции данным или только данным меньше 1-7-2007 и меньше 1-8-2007? И будет ли он автоматически высставлять будущие партиции?
...
Рейтинг: 0 / 0
27.11.2017, 16:41
    #39560099
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
Лиса АлисаОн всем проставит партиции данным или только данным меньше 1-7-2007 и меньше 1-8-2007? И будет ли он автоматически высставлять будущие партиции?

Все где start_date < 1-7-2007 пойдет в pos_data_p2. 1-7-2007 <= start_date < 1-8-2007 в pos_data_p3. Для start_date >= 1-8-2007 партиции будут создаваться автоматически по мере поступления.

SY.
...
Рейтинг: 0 / 0
27.11.2017, 16:50
    #39560103
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
SYпартиции будут создаваться автоматически по мере поступления.
*если мера поступления ориентирована в хронологическом порядке :)
...
Рейтинг: 0 / 0
27.11.2017, 16:55
    #39560105
Лиса Алиса
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
SY,

а если не обозначать стартовые партиции, он всё пропартицирует или ничего?

create table
pos_data (
start_date DATE,
store_id NUMBER,
inventory_id NUMBER(6),
qty_sold NUMBER(3)
)
PARTITION BY RANGE (start_date)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));
...
Рейтинг: 0 / 0
27.11.2017, 17:26
    #39560120
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
Лиса Алисаа если не обозначать стартовые партиции, он всё пропартицирует или ничего?


МИНЗДРАВ предупреждает: доку ORACLE курить полезно. В INTERVAL partitioned таблице должнa быть как минимум одна неинтервальная партиция.

SY.
...
Рейтинг: 0 / 0
28.11.2017, 03:13
    #39560240
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать partition по полю date, который автоматически создаст партиции по неделе?
andrey_anonymous*если мера поступления ориентирована в хронологическом порядке :)

Независимо от хронологического порядка:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
SQL> create table 
  2  pos_data ( 
  3  start_date DATE,
  4  store_id NUMBER,
  5  inventory_id NUMBER(6),
  6  qty_sold NUMBER(3)
  7  ) 
  8  PARTITION BY RANGE (start_date) 
  9  INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) 
 10  ( 
 11  PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')),
 12  PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) 
 13  ); 

Table created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2020-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2019-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3166            TO_DATE(' 2019-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2018-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3166            TO_DATE(' 2019-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3167            TO_DATE(' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2025-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3166            TO_DATE(' 2019-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3167            TO_DATE(' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3168            TO_DATE(' 2025-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

6 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как создать partition по полю date, который автоматически создаст партиции по неделе? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]