powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создание партиции, когда часть данных уже в последней партиции
22 сообщений из 22, страница 1 из 1
Создание партиции, когда часть данных уже в последней партиции
    #39671997
mercator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак имеется огромная партиционированная табличка.
Партиции создаются джобом каждый месяц в новом таблспейсе. Джоб запускается 10 числа и создаёт партицию на следующий месяц. Индексы тоже партиционированные, локальные.
В прошлом месяце (июне) джоб по каким-то причинам не отработал.
Соответственно, данные за 01.07-10.07 заливались в последний таблспейс (который LESS THEN MAXVALUE ).
В этом месяце (июле) джоб создаёт свой таблспейс( августовский ). Оракл видит что при создании августовской партиции, все данные ( июльские ) из партиции( Less than maxvalue ) можно перенести в августовский таблспейс. И ДЕЛАЕТ ЭТО !
Никто бы ничего и не заметил, но попутно, он сделал августовские локальные индексы инвалидными.

Это я всё понял из логов и своих домыслов.

Вопрос : верно ли, что при создании партиции, она сама, без команды, в момент создания, может наполниться данными?
Если это так, почему при массовом делении последней партиции, оракл делает инвалидными индексы затронутых партиций?
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672005
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mercatorСоответственно, данные за 01.07-10.07 заливались в последний таблспейс (который LESS THEN MAXVALUE ).
В этом месяце (июле) джоб создаёт свой таблспейс( августовский ). Оракл видит что при создании августовской партиции, все данные ( июльские ) из партиции( Less than maxvalue ) можно перенести в августовский таблспейс. И ДЕЛАЕТ ЭТО !
[/quot]Командочки приведи
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672023
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
были бы у него командочки он бы всякие глупости не спрашивал )))
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672041
mercator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуацию я описал.
А джоб, создающий августовскую партицию, делал так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  EXECUTE IMMEDIATE 'CREATE TABLESPACE '||<august_ts>||' 
  DATAFILE '||<august_file>||' SIZE 12G AUTOEXTEND ON NEXT 300M MAXSIZE UNLIMITED
  LOGGING
  ONLINE
  PERMANENT
  EXTENT MANAGEMENT LOCAL
  UNIFORM SIZE 128m
  BLOCKSIZE 8K
  SEGMENT SPACE MANAGEMENT AUTO';

  EXECUTE IMMEDIATE 'ALTER TABLE <table>
  SPLIT PARTITION <last partition> 
  AT  ('||txt_bp1||')  -----<<<<сентябрь
  INTO (PARTITION '||<august_part>||' --август
       TABLESPACE '||<august_ts>||'
       PCTFREE    5
       STORAGE    (
                   INITIAL          3G
                   NEXT             128M
                  ), 
       PARTITION <last partition>)';
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672047
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mercator[b]Оракл видит что при создании августовской партиции, все данные ( июльские ) из партиции( Less than maxvalue ) можно перенести в августовский таблспейс. И ДЕЛАЕТ ЭТО !
Простите великодушно, а как он должен был поступить, если "июльской" секции, согласно вашим же показаниям, не существует, зато, опять-таки, согласно Вашим показаниям, из MAXVALUE-секции выделена секция июль-август, размещенная в "августовском" табличном пространстве?
Я действительно не понимаю Вашего вопроса.
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672054
mercator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousmercator[b]Оракл видит что при создании августовской партиции, все данные ( июльские ) из партиции( Less than maxvalue ) можно перенести в августовский таблспейс. И ДЕЛАЕТ ЭТО !
Простите великодушно, а как он должен был поступить, если "июльской" секции, согласно вашим же показаниям, не существует, зато, опять-таки, согласно Вашим показаниям, из MAXVALUE-секции выделена секция июль-август, размещенная в "августовском" табличном пространстве?
Тоже не понял.
Я считал, что если строки УЖЕ попали в последнюю партицию (LESS THAN MAXVALUE), то сами они никуда переезжать не должны. Я же делаю команду SPLIT и строчки переносятся. Ну, видимо, я ошибался и оракл просеивает строки при SPLIT'e.
А вот почему он сделал инвалидными августовские индексы при этом?
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672056
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что именно вы ожидали от команды split?
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672058
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mercatorЯ считал, что если строки УЖЕ попали в последнюю партицию (LESS THAN MAXVALUE), то сами они никуда переезжать не должны.

partition подразумевает partition pruning по формальным критериям.
Нарисуйте на бумажке размещение ключей Вашей таблицы по секциям до и после расщепления.
Объясните сами себе как должен происходить pruning при Вашей схеме размещения.
Потом прочтите доку и достигнете просветления
mercatorА вот почему он сделал инвалидными августовские индексы при этом?
Потому что Вы об этом не позаботились.
А не позаботились, поскольку split нарисовали с интернетов, а не с оф. документации, где эти (и не только эти) темы достаточно подробно разжеваны.
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672064
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так это не он нарисовал
а тот кто нарисовал, расчитывал что сплит будет с пустой партиции
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672065
mercator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot andrey_anonymous]mercatorПотом прочтите доку и достигнете просветления
Андрей, конечно я могу искать ответ в доке, но этот форум, для более быстрой помощи, чем дока. Разве нет?
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672068
mercator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВАрасчитывал что сплит будет с пустой партиции
Значит при сплите непустой партиции локальные индексы всегда ломаются?
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672075
mercator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот дока, действительно нужно было писать UPDATE INDEXES

https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1008028

Джоб работал годами, не ломаясь, стоило возникнуть одному пропуску - сломал индексы..Спасибо!
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672076
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mercator]andrey_anonymousпропущено...

Андрей, конечно я могу искать ответ в доке, но этот форум, для более быстрой помощи, чем дока. Разве нет?

этот форум логично использовать, если кто чего в доке не понял
а когда напрочь доку игноришь , то и от форума толку мало
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672084
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mercatorDВАрасчитывал что сплит будет с пустой партиции
Значит при сплите непустой партиции локальные индексы всегда ломаются?Не обязательно

Так как ты описал:mercatorОракл видит что при создании августовской партиции, все данные ( июльские ) из партиции( Less than maxvalue ) можно перенести в августовский таблспейс. И ДЕЛАЕТ ЭТО !
Т.е. если все данные это действительно все данные, то сломаться не должно
А если все данные -- это не совсем все, а только июльские (там есть еще и другие), то сломаются
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672089
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровА если все данные -- это не совсем все, а только июльские (там есть еще и другие), то сломаются
В данном случае данные-то все, но двигаются в другое табличное пространство, а не лежат на месте
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672130
mercator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровТак как ты описал:mercatorОракл видит что при создании августовской партиции, все данные ( июльские ) из партиции( Less than maxvalue ) можно перенести в августовский таблспейс. И ДЕЛАЕТ ЭТО !
Т.е. если все данные это действительно все данные, то сломаться не должно
А если все данные -- это не совсем все, а только июльские (там есть еще и другие), то сломаются

В последней партиции были именно все данные июльские. Других там не было. И при сплите последняя партиция опустела. Индексы даже так сломались.
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672141
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mercatorИндексы даже так сломались.
Незнание матчасти - путь к многочисленным удивлениям.
Индекс в листовом блоке содержит что?
Праальна, rowid.
Что есть Rowid?
Так точно, адрес физического места хранения искомой записи.
Если запись уехала храниться в другое физическое место (в Вашем случае в другое табличное пространство), то что надо сделать с указателем на старое место?
Праальна, заменить на новый.
А если случилась массовая депортация?
В этом случае проще и дешевле выбросить старый индекс и построить новый.
Собственно, об этом и вся история - rdbms отмечает недействительный индекс как недействительный.
С глобальными индексами интереснее - в свежих версиях rdbms научили отмечать указатели на переехавшие записи как подвисшие (orphanned), и сделали спец. джобик, который время от времени по таким указателям пробегается и подчищает хвосты.
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672279
Ярослав Батозский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по моим наблюдениям, SPLIT PARTITION и MERGE PARTITION работают одинаково -- если переехала хоть одна строка, соответствующие индексы ломаются. Если ни одна строка не переехала -- индексы не ломаются.
11.2.0.4
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672324
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык вот нихрена не понятно, почему они поехали
Ты забыл разделить в июне и добавить секцию с данными которые больше 1 июля, в результате в последней секции остаются данные за июнь, июль и далее
Разделяешь в июле и добавляешь секцию для данных, которые больше 1 августа -- но, по идее у тебя еще не должно быть таких данных, а данные за июль просто не подходят по условию

Другой вопрос, что ты все-таки разделил и по границе 1 июля (вот тут данные поедут и сломают индексы на обоих секциях) и по границе 1 августа (здесь ничего не поедет)

Вообще, Fast-Split Partition (с 9.2) работает так -- если можно данные сегмента не переносить (ничего не переезжает по условию разбиения или переезжает все, но в том же ТП), то сегмент просто переименовываются на уровне словаря и никакие индексы не ломаются. Если поехало в другое ТП, то таки да, rowid меняются, индексы становятся недействительными

andrey_anonymousС глобальными индексами интереснее - в свежих версиях rdbms научили отмечать указатели на переехавшие записи как подвисшие (orphanned), и сделали спец. джобик, который время от времени по таким указателям пробегается и подчищает хвосты.А это что за зверь? Где можно почитать? С 18?
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672416
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровА это что за зверь? Где можно почитать? С 18?Вроде вот - Asynchronous Global Index Maintenance for Dropping and Truncating Partitions , с 12.1.
Эта скотина немало крови попила, особенно накануне запланированных работ с вовлечением TTS.
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672588
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровДык вот нихрена не понятно, почему они поехали

потому что ему сказали переложить в новый тп, который для каждой партиции свой
...
Рейтинг: 0 / 0
Создание партиции, когда часть данных уже в последней партиции
    #39672812
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дошло
Мне почему-то казалось, что он именно последнюю секцию перетаскивает в новое ТП
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создание партиции, когда часть данных уже в последней партиции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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