|
|
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
Всем привет! Кто-то пользовался DBMS_REDEFINITION для обновления типа столбца ? В таблице 60 млн строк,как долго будет альтерить 3 столбца ? Таблица без партиций. П.С. просто командой альтер не альтерит, говорит данные нужно сначала обнулить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 17:26 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
EvgeniaMakarova, пакет делает полную копию таблицы, с некоторыми наворотами для минимизации downtime, и потом меняет их местами. соответственно, время работы - это время создания полной копии таблицы, плюс ещё чуть-чуть (накатить разницу из MV log в момент обмена). если есть возможность ненадолго остановить работу с таблицей - проще написать руками, имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 17:44 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
EvgeniaMakarovaпросто командой альтер не альтерит, говорит данные нужно сначала обнулитьКонкретней: что на что меняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 09:17 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
Elic, number to varchar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 10:37 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
Копирование может идти в фоне. Все изменения тоже можно периодически синхронизировать средствами пакета. Т.е. при этом необязательно останавливать систему. А вот краткое финальное переключение лучше приурочить к запланированной остановке, если от таблицы зависят пакеты с переменными. При переключении они будут инвалидированы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2018, 16:49 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
Деев И., я в итоге решила сделать так: 1. бэкаплю таблицу 2. транкейт таблицы 3. дропаю индексы и дизаблю кострейнты 4. обновляю типы 5. делаю таблицу ПАРАЛЛЕЛЬ 8 (дба так разрешили) 6. вставляю данные обратно в табу 7. возвращаю назад индексы и констрейнты. Получается все за приемлемое время- около часа, плюс таблица всегда доступна(как-никак, пустая, без индексов и тп). Изза чего изначально был вопрос- у меня альтер долго работал ,хотелось как то оптимизировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 14:10 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
Почему бы просто не: сделать новое поле (с другим именем, но новым типом) повесить триггер на изменение/вставку старого поля -- менять сразу и новое заполнить новое поле из старого попереименовывать удалить/сделать UNUSABLE старое поле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 14:25 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
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 дропаем в часы наименьшей нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 14:32 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
MazoHist, так это же тоже повлечет обновление индексов и как следствие - времени. Таблица большая (60 млн строк пока), на ней 7 индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 14:52 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
EvgeniaMakarova, какое обновление и каких индексов? На полях с изменением типа есть индексы? (пере)создать их после полной заливки данных. ЗЫ. при таком пересоздании работа с таблицей не прервется ни на минуту, и время не имеет важного значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 15:12 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
MazoHist, да, на обновляемых столбцах есть индексы. Время в моем случаем имеет значение, так как обновление типа данных -лишь один шаг во всем релизе и за ним следуют еще много других, которые должны выполняться строго после обновления типов. Релиз на Проде должен быть сделан как можно быстрее. Кстати во время первого неудачного наката этого обновления 1. закончился темп таблспейс- дба расширили потом и начали заново. 2. закончилось место под архив логи. Логирование на проде принудительное, nologging на таблицы не сработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 15:21 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
Знакомая ситуация с релизами, проходили. Могу только посоветовать разбить релиз на 2 части - одна непосредственно с подготовокй столбцов, вторая все остальное. И таблица остается доступной все время. По такой схеме ставили все обновления на высконагруженной системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 15:37 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
MazoHist, По вашему удаление колонки это онлайн операция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 23:38 |
|
||
|
использование DBMS_REDEFINITION для обновления типа столбца
|
|||
|---|---|---|---|
|
#18+
Удаление можно сделать и на Новый Год, например Просто, по сравнению с таким коварным планом, как 21736377 , ручное решение выглядит лучше, не говоря уж а первоначальной альтернативе -- там вообще все прозрачно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 07:09 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39734179&tid=1883167]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 506ms |

| 0 / 0 |
