Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение типа данных поля с Timestamp with local time zone на timestamp / 6 сообщений из 6, страница 1 из 1
25.02.2020, 17:28
    #39930713
Danian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение типа данных поля с Timestamp with local time zone на timestamp
Всем привет!
Столкнулся со следующей проблемой.. есть несколько крупных таблиц в базе, имеющих поля типа timestamp with local time zone, но возникла необходимость избавиться от «local time zone». Первый план действий, который пришёл на ум: временно переименовать старую колонку, создать новую с нужным типом, заапдейтить всю таблицу, удалить старую колонку и восстановить все ограничения и индексы. В таком подходе не радует, как минимум, скорость - необходимо будет обновить на горячую(время допустимого простоя не более 3-х часов в сутки в специально отведённое время) по несколько десятков миллиардов записей в нескольких из таблиц.. всвязи с этим, ищем советов, какими ещё способами можно перевести тип колонки из TSwLTZ в простой timestamp с максимальной скоростью, минимальной потерей доступности и минимальным ущербом для индексов и ключей?
И ещё один вопрос, почему нельзя изменить тип колонки через modify сразу из TSwLTZ в простой timestamp, но можно TSwLTZ -> Date -> timestamp ?
Будем очень признательны и благодарны за любые дельные советы и пинки в нужную сторону!
...
Рейтинг: 0 / 0
25.02.2020, 17:57
    #39930720
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение типа данных поля с Timestamp with local time zone на timestamp
Danian,

Возможно будет проще пересоздать структуры таблиц уже с нужным типом, в рабочее время в фоне залить все записи, в окно залочить основные таблицы, долить дельту и переименовать таблицы/ключи/индексы
...
Рейтинг: 0 / 0
26.02.2020, 08:30
    #39930887
KoTTT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение типа данных поля с Timestamp with local time zone на timestamp
dbms_redefinition
...
Рейтинг: 0 / 0
26.02.2020, 08:41
    #39930890
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение типа данных поля с Timestamp with local time zone на timestamp
Danian
...избавиться от «local time zone». ... удалить старую колонку ...
invisible или set unused позволит избавиться почти online.
...
Рейтинг: 0 / 0
26.02.2020, 15:15
    #39931104
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение типа данных поля с Timestamp with local time zone на timestamp
KoTTT
dbms_redefinition

На миллиардных-то таблицах...
Но если вдруг - то не следует выполнять redefinition без PK, потому как by rowid добавляет в целевую таблицу скрытое поле (c rowid источника), которое, с одной стороны, не так просто вытравить, с другой - оно мешает выполнять exchange partition
...
Рейтинг: 0 / 0
26.02.2020, 15:16
    #39931105
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение типа данных поля с Timestamp with local time zone на timestamp
-2-
Danian
...избавиться от «local time zone». ... удалить старую колонку ...
invisible или set unused позволит избавиться почти online.

Но не избавиться, к сожалению.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение типа данных поля с Timestamp with local time zone на timestamp / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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