Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение ТП для создания новых секций таблиц / 13 сообщений из 13, страница 1 из 1
04.05.2018, 10:26
    #39639863
Ilnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Добрый день.
Подскажите,пожалуйста.
Есть таблица с секциями на ТП1.
Переносим таблицу на ТП2 с помощью:
Код: plsql
1.
alter table move partition tablespace "ТП2"

и
Код: plsql
1.
alter table modify default attributes tablespace "ТП2"

, т.е., на сколько понимаю, перенёс секции и изменил ТП по-умолчанию для таблицы. Однако, при создании новой секции выбирается ТП1.
На тестовом контуре данная миграция и последующее создание секций отрабатывали корректно.
Что не учёл?
...
Рейтинг: 0 / 0
04.05.2018, 11:43
    #39639926
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
IlnovЧто не учёл?
м.б. subpartition template?
...
Рейтинг: 0 / 0
04.05.2018, 12:08
    #39639954
Ilnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
andrey_anonymous, в таблице не используются subpartition и не задан параметр subpartition template
...
Рейтинг: 0 / 0
04.05.2018, 13:37
    #39640027
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
testcase приведешь?
...
Рейтинг: 0 / 0
04.05.2018, 14:52
    #39640095
Ilnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Вячеслав Любомудров,если правильно Вас понял:

Код: 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.
CREATE TABLE a.b
(
  "c"  VARCHAR2(50 CHAR),
  "d"  DATE
)
NOCOMPRESS 
TABLESPACE "ТП2"
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            BUFFER_POOL      DEFAULT
           )
PARTITION BY RANGE ("d")
INTERVAL( NUMTOYMINTERVAL(1, 'MONTH'))
(  
  PARTITION P0 VALUES LESS THAN (TO_DATE(' 2014-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    COMPRESS BASIC 
    TABLESPACE "ТП2"
    PCTFREE    0
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION VALUES LESS THAN (TO_DATE(' 2014-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    COMPRESS BASIC 
    TABLESPACE "ТП2"
    PCTFREE    0
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          8M
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION VALUES LESS THAN (TO_DATE(' 2018-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS 
    TABLESPACE "ТП1"
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          8M
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               )
)
NOCACHE
PARALLEL ( DEGREE 2 INSTANCES 1 )
MONITORING
ENABLE ROW MOVEMENT;



Последняя секция создалась в старом (из которого переносили) ТП. Создание секции было инициировано добавлением даты в поле d.
...
Рейтинг: 0 / 0
04.05.2018, 15:25
    #39640133
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Видишь, как сразу все поменялось -- INTERVAL partition использует кляузу STORE IN
Проверять лениво, но похоже, через MODIFY DEFAULT ATTRIBUTES это не меняется
Возможно, на тесте ты сначала запретил интервальное секционирование, переведя его в обычный RANGE, а затем опять установил INTERVAL (после смены атрибутов)
...
Рейтинг: 0 / 0
04.05.2018, 15:43
    #39640151
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.
> select * from v$version where rownum=1
BANNER                                                                         
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production     

> CREATE TABLE dropme_t("c"  VARCHAR2(50 CHAR),"d"  DATE)
TABLESPACE TBS_CURR PARTITION BY RANGE ("d")
INTERVAL( NUMTOYMINTERVAL(1, 'MONTH'))
(PARTITION P0 VALUES LESS THAN (TO_DATE(' 2014-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) segment creation deferred)
table DROPME_T created.

> insert into dropme_t("c", "d") values('Init',date'2018-01-01')
1 rows inserted.

> select table_name, partition_name, tablespace_name, segment_created from dba_tab_partitions where table_owner = user and table_name = 'DROPME_T'

TABLE_NAME                     PARTITION_NAME                 TABLESPACE_NAME                SEGMENT_CREATED
------------------------------ ------------------------------ ------------------------------ ---------------
DROPME_T                       P0                             TBS_CURR                       NO              
DROPME_T                       SYS_P1393                      TBS_CURR                       YES             

> alter table dropme_t move partition for (date'2018-01-01') tablespace TBS_NEXT
table DROPME_T altered.

> alter table dropme_t modify default attributes tablespace TBS_NEXT
table DROPME_T altered.

> insert into dropme_t("c", "d") values('Init',date'2018-02-01')
1 rows inserted.

> select table_name, partition_name, tablespace_name, segment_created from dba_tab_partitions where table_owner = user and table_name = 'DROPME_T'

TABLE_NAME                     PARTITION_NAME                 TABLESPACE_NAME                SEGMENT_CREATED
------------------------------ ------------------------------ ------------------------------ ---------------
DROPME_T                       P0                             TBS_CURR                       NO              
DROPME_T                       SYS_P1393                      TBS_NEXT                       YES             
DROPME_T                       SYS_P1394                      TBS_NEXT                       YES             



Судя по датам в случае ТС скорее всего размещение последней интервальной секции произошло ДО того, как были изменены default attributes - причем не обязательно самим ТС :).
...
Рейтинг: 0 / 0
04.05.2018, 16:16
    #39640176
Ilnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Вячеслав Любомудров, спасибо, покапаю в указанном направлении, но взял оригинальный скрипт таблицы, поменял ТП, как было изначально, создал на тестовом контуре, перенёс на в другое ТП, добавил дату, всё работает (секционирование не менял).
...
Рейтинг: 0 / 0
04.05.2018, 16:21
    #39640184
Ilnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
andrey_anonymous, к сожалению нет.
Последняя секция была добавлена спустя неделю после выполнения alter-ов.
И ещё раз хочу отметить, что на тестовом контуре никаких проблем нет.
...
Рейтинг: 0 / 0
04.05.2018, 16:33
    #39640193
Ilnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Вячеслав Любомудров, покапал в указанном направлении.
Можно принудительно задать store in на таблицу и он должен создавать секцию в указанное ТП, при условии, если при создании секции не указывается ТП, но в скрипте таблицы нет этого пункта, а значит данная таблица создаёт секцию в старом ТП по другой причине.
...
Рейтинг: 0 / 0
04.05.2018, 16:48
    #39640212
Ilnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Вячеслав Любомудров,скорее всего Вы правы. Протестировал на тестовой среде, очень похож.
Спасибо.
Буду пробовать на боевой.
...
Рейтинг: 0 / 0
04.05.2018, 16:55
    #39640220
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Да нет, Андрей показал, что все прекрасно меняется и юзается
Можно было бы еще грешить на отсутствие квот на другое ТП, но, вроде тоже не сростается...
...
Рейтинг: 0 / 0
04.05.2018, 17:42
    #39640284
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение ТП для создания новых секций таблиц
Ilnovandrey_anonymous, к сожалению нет.
Последняя секция была добавлена спустя неделю после выполнения alter-ов.
Честно говоря, верится с трудом.
Попробуйте проверить (last ddl на таблице сопоставить с created на проблемной секции):
Код: plsql
1.
2.
select object_type, object_name,subobject_name,to_char(created,'yyyy-mm-dd hh24:mi:ss') created, to_char(last_ddl_time,'yyyy-mm-dd hh24:mi:ss') last_ddl, timestamp
from all_objects where owner=user and object_name = 'DROPME_T';
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение ТП для создания новых секций таблиц / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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