powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Добавить колонку к нагруженной таблице
18 сообщений из 18, страница 1 из 1
Добавить колонку к нагруженной таблице
    #39999235
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день коллеги.

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

Вопрос: какие есть методики сделать это максимально безболезненно для пользователей?

Я понимаю, что есть гугл и я в процессе поиска, но мне интересно у кого есть решение проверенное, которое используется в такого рода задачах.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999237
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. Oracle
Поделитесь, пожалуйста, опытом. Есть таблица, в которую активно что-то пишут. Возникла необходимость добавить в нее столбец.

Смотря что за столбец.
Если простой nullable атрибут - то не вижу затруднений, словарная операция.
Единственное - имеет смысл установить в сессии ddl_lock_timeout.
Прочие варианты (not null, default и т.д.) имеет смысл вводить над уже созданным атрибутом.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999239
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последнее, если честно не совсем понял. Мне как раз нужно добавить добавить с некоторым default значением.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999243
Тролин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBMS_redefinition
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999244
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous

Если простой nullable атрибут - то не вижу затруднений, словарная операция

Ну как бы вся простота зависит от версии и supp log.
А то может и ddl_lock_timeout придется задирать так высоко, что обычные пользователи пострадают.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999251
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. Oracle
Последнее, если честно не совсем понял. Мне как раз нужно добавить добавить с некоторым default значением.

ну и напрасно вы сразу про это промолчали
если знаете то значение - так сразу и добавляйте столбец с дефолтом

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

....
stax
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999261
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish
если знаете то значение - так сразу и добавляйте столбец с дефолтом

Плохой совет.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999280
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Плохой совет.
почему?
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999305
Надфиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dr. Oracle
Добрый день коллеги.

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

Вопрос: какие есть методики сделать это максимально безболезненно для пользователей?

Я понимаю, что есть гугл и я в процессе поиска, но мне интересно у кого есть решение проверенное, которое используется в такого рода задачах.

когда срочно нужно мы добавляем таблицу с полем (или несколькими) со связью 1:1.
но так себе вариант если честно..
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999340
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dr. Oracle,

Какая версия оракла?

C 11.1; Adding new columns with DEFAULT values and NOT NULL constraint no longer requires the default value to be stored in all existing records.

С 12.1: Optimized ALTER TABLE...ADD COLUMN with default value for nullable columns
https://docs.oracle.com/database/121/ADMIN/release_changes.htm#ADMIN13865
https://oracle-base.com/articles/12c/default-values-for-table-columns-enhancements-12cr1
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999342
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dr. Oracle,

помимо этого тоже с 12.1 добавились invisible columns, так что в идеале для 12+ было бы добавлять новый столбец как invisible, чтобы не поломать зависимости, не рассчитанные на новый столбец.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999354
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия 19.6.

Спасибо за советы/рекомендации.

Если у кого-то есть что добавить - буду благодарен.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999572
Maksim Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про дбмс_редефинишен вам уже подсказали.

Есть ещё такой рабоче-крестьянский метод.
Если вам повезло и у вас в базе зависимых, от этой таблицы, объектов нет, или достаточно мало (что это такое - достаточно: чуть ниже) то:
1) в этой же схеме создаёте реплицируемую таблицу-копию, от вашей текущей таблицы. В зависимости от того - чем реплицровать: есть большая, или меньшая свобода рук.
Ну. Например. Если голден-гейт, то там вообще всё спортивно-бодро, можно даже сразу создать, целевую таблицу, с нужной вам структурой/свойствами полей.
Обвешиваете целевую таблицу тем же набором триггеров, индексов.
С триггерами: тут либо советоваться с разработчиками, либо, до запуска репликации дизаблить триггера - who knows: какими они могут быть и куда и как могут лезть - всё что угодно может быть.
Подсматриваете набор объектных грантов на исходную таблицу - выдаёте такие же объектные гранты, тем же грантополучателям, на целевую таблицу.
2) Репликация вам синхронизирует таблицы по данным. Выбираете момент времени Ч
3) В момент времени Ч:
3.1) как больше нравится перекрываете доступ скл-запросов к исходной таблице.
3.2) контролируете что все изменения данных - зааплаились, репликацией, на целевую таблицу. Репликацию останавливаете.
3.3) Старую таблицу - переименовываете.
3.3) Создаёте синоним, с нужным именем старой таблицы. Назначаете его на новую таблицу. Синоним, то есть, провайдит зависимым объектам имя - которое они ожидают. Плюс зависимые объекты - начинают зависеть от синонима, а не напрямую от таблицы.
Ну. Если уверены в том что "больше никогда и ничего такого", с этой таблицей, по крайней мере - вам, делать не придётся: можно синоним не вводить в оборот, а просто переименовать целевую таблицу, в правильное имя.
3.4) Валидите зависимые объекты. Тут - про "достаточно мало": это такое кол-во зависимых объектов при котором затраты на их валидацию - не считается значимыми. Ну т.е.: достаточно быстро и достаточно просто, для вас.
3.5) Если есть триггера и если они дизаблились - енабле им делается.
3.6) Убираете, если нужно, лок на доступ к таблице.

Всё.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999576
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Maksim Ivanov,

зачем такие муки если у ТС
Dr. Oracle
Версия 19.6.
и нужно
Dr. Oracle
добавить с некоторым default значением.


В случае ТС это всего лишь изменение метаданных.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #39999583
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender

В случае ТС это всего лишь изменение метаданных.

По данным от ТС - не факт )
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #40000725
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


https://oracle-base.com/articles/12c/default-values-for-table-columns-enhancements-12cr1 Oracle 11g introduced the concept of metadata-only default values. Adding a NOT NULL column with a DEFAULT clause to an existing table involved just a metadata change, rather than a change to all the rows in the table. Queries of the new column were rewritten by the optimizer to make sure the result was consistent with the default definition.

Oracle 12c takes this a step further, allowing metadata-only default values of both mandatory and optional columns. As a result, adding a new column with a DEFAULT clause to an existing table will be handled as a metadata-only change, regardless of whether that column is defined as NOT NULL or not. This represents both a space saving and performance improvement.

Мы на этой штуке ловили WR.
...
Рейтинг: 0 / 0
Добавить колонку к нагруженной таблице
    #40000782
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Андрей Панфилов
Мы на этой штуке ловили WR.
ну совсем малоинформативное сообщение: на которой из? В какой версии? Есть ли тест-кейс? В какой версии пофиксили? Есть ли патч? Номер бага?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Добавить колонку к нагруженной таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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