powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / использование DBMS_REDEFINITION для обновления типа столбца
14 сообщений из 14, страница 1 из 1
использование DBMS_REDEFINITION для обновления типа столбца
    #39731092
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Кто-то пользовался DBMS_REDEFINITION для обновления типа столбца ?
В таблице 60 млн строк,как долго будет альтерить 3 столбца ? Таблица без партиций.

П.С. просто командой альтер не альтерит, говорит данные нужно сначала обнулить
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39731097
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarova,

пакет делает полную копию таблицы, с некоторыми наворотами для минимизации downtime, и потом меняет их местами. соответственно, время работы - это время создания полной копии таблицы, плюс ещё чуть-чуть (накатить разницу из MV log в момент обмена).

если есть возможность ненадолго остановить работу с таблицей - проще написать руками, имхо.
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39731268
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaпросто командой альтер не альтерит, говорит данные нужно сначала обнулитьКонкретней: что на что меняется?
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39731576
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

number to varchar
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39733115
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Копирование может идти в фоне. Все изменения тоже можно периодически синхронизировать средствами пакета. Т.е. при этом необязательно останавливать систему. А вот краткое финальное переключение лучше приурочить к запланированной остановке, если от таблицы зависят пакеты с переменными. При переключении они будут инвалидированы.
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734113
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Деев И.,

я в итоге решила сделать так:
1. бэкаплю таблицу
2. транкейт таблицы
3. дропаю индексы и дизаблю кострейнты
4. обновляю типы
5. делаю таблицу ПАРАЛЛЕЛЬ 8 (дба так разрешили)
6. вставляю данные обратно в табу
7. возвращаю назад индексы и констрейнты.

Получается все за приемлемое время- около часа, плюс таблица всегда доступна(как-никак, пустая, без индексов и тп).

Изза чего изначально был вопрос- у меня альтер долго работал ,хотелось как то оптимизировать
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734127
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему бы просто не:
сделать новое поле (с другим именем, но новым типом)

повесить триггер на изменение/вставку старого поля -- менять сразу и новое

заполнить новое поле из старого

попереименовывать

удалить/сделать UNUSABLE старое поле
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734132
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaДеев И.,

я в итоге решила сделать так:
1. бэкаплю таблицу
2. транкейт таблицы
3. дропаю индексы и дизаблю кострейнты
4. обновляю типы
5. делаю таблицу ПАРАЛЛЕЛЬ 8 (дба так разрешили)
6. вставляю данные обратно в табу
7. возвращаю назад индексы и констрейнты.

Получается все за приемлемое время- около часа, плюс таблица всегда доступна(как-никак, пустая, без индексов и тп).

Изза чего изначально был вопрос- у меня альтер долго работал ,хотелось как то оптимизировать
ШТА????

1. Добавляем три столбца нового типа с именем column_name_n
2. Добавляем триггер на заполнение новых столбцов
3. Заполняем для исторических данных (bulk collect + forall в помощь)
4. rename column_name to column_name_o, column_name_n to column_name, дропаем триггер
5. column_name_o дропаем в часы наименьшей нагрузки.
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734160
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MazoHist,
так это же тоже повлечет обновление индексов и как следствие - времени.
Таблица большая (60 млн строк пока), на ней 7 индексов.
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734179
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarova,

какое обновление и каких индексов? На полях с изменением типа есть индексы? (пере)создать их после полной заливки данных.
ЗЫ. при таком пересоздании работа с таблицей не прервется ни на минуту, и время не имеет важного значения.
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734185
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MazoHist,

да, на обновляемых столбцах есть индексы.

Время в моем случаем имеет значение, так как обновление типа данных -лишь один шаг во всем релизе и за ним следуют еще много других, которые должны выполняться строго после обновления типов. Релиз на Проде должен быть сделан как можно быстрее.

Кстати во время первого неудачного наката этого обновления 1. закончился темп таблспейс- дба расширили потом и начали заново. 2. закончилось место под архив логи. Логирование на проде принудительное, nologging на таблицы не сработает
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734201
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знакомая ситуация с релизами, проходили. Могу только посоветовать разбить релиз на 2 части - одна непосредственно с подготовокй столбцов, вторая все остальное. И таблица остается доступной все время. По такой схеме ставили все обновления на высконагруженной системе.
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734655
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MazoHist,
По вашему удаление колонки это онлайн операция?
...
Рейтинг: 0 / 0
использование DBMS_REDEFINITION для обновления типа столбца
    #39734709
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удаление можно сделать и на Новый Год, например

Просто, по сравнению с таким коварным планом, как 21736377 , ручное решение выглядит лучше, не говоря уж а первоначальной альтернативе -- там вообще все прозрачно
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / использование DBMS_REDEFINITION для обновления типа столбца
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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