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

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

, т.е., на сколько понимаю, перенёс секции и изменил ТП по-умолчанию для таблицы. Однако, при создании новой секции выбирается ТП1.
На тестовом контуре данная миграция и последующее создание секций отрабатывали корректно.
Что не учёл?
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #39639926
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlnovЧто не учёл?
м.б. subpartition template?
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #39639954
Ilnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, в таблице не используются subpartition и не задан параметр subpartition template
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #39640027
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
testcase приведешь?
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #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
Изменение ТП для создания новых секций таблиц
    #39640133
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видишь, как сразу все поменялось -- INTERVAL partition использует кляузу STORE IN
Проверять лениво, но похоже, через MODIFY DEFAULT ATTRIBUTES это не меняется
Возможно, на тесте ты сначала запретил интервальное секционирование, переведя его в обычный RANGE, а затем опять установил INTERVAL (после смены атрибутов)
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #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
Изменение ТП для создания новых секций таблиц
    #39640176
Ilnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров, спасибо, покапаю в указанном направлении, но взял оригинальный скрипт таблицы, поменял ТП, как было изначально, создал на тестовом контуре, перенёс на в другое ТП, добавил дату, всё работает (секционирование не менял).
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #39640184
Ilnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, к сожалению нет.
Последняя секция была добавлена спустя неделю после выполнения alter-ов.
И ещё раз хочу отметить, что на тестовом контуре никаких проблем нет.
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #39640193
Ilnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров, покапал в указанном направлении.
Можно принудительно задать store in на таблицу и он должен создавать секцию в указанное ТП, при условии, если при создании секции не указывается ТП, но в скрипте таблицы нет этого пункта, а значит данная таблица создаёт секцию в старом ТП по другой причине.
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #39640212
Ilnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,скорее всего Вы правы. Протестировал на тестовой среде, очень похож.
Спасибо.
Буду пробовать на боевой.
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #39640220
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, Андрей показал, что все прекрасно меняется и юзается
Можно было бы еще грешить на отсутствие квот на другое ТП, но, вроде тоже не сростается...
...
Рейтинг: 0 / 0
Изменение ТП для создания новых секций таблиц
    #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
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение ТП для создания новых секций таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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