|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Добрый день коллеги. Поделитесь, пожалуйста, опытом. Есть таблица, в которую активно что-то пишут. Возникла необходимость добавить в нее столбец. Вопрос: какие есть методики сделать это максимально безболезненно для пользователей? Я понимаю, что есть гугл и я в процессе поиска, но мне интересно у кого есть решение проверенное, которое используется в такого рода задачах. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:06 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Dr. Oracle Поделитесь, пожалуйста, опытом. Есть таблица, в которую активно что-то пишут. Возникла необходимость добавить в нее столбец. Смотря что за столбец. Если простой nullable атрибут - то не вижу затруднений, словарная операция. Единственное - имеет смысл установить в сессии ddl_lock_timeout. Прочие варианты (not null, default и т.д.) имеет смысл вводить над уже созданным атрибутом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:11 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Последнее, если честно не совсем понял. Мне как раз нужно добавить добавить с некоторым default значением. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:20 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
DBMS_redefinition ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:26 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
andrey_anonymous Если простой nullable атрибут - то не вижу затруднений, словарная операция Ну как бы вся простота зависит от версии и supp log. А то может и ddl_lock_timeout придется задирать так высоко, что обычные пользователи пострадают. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:26 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Dr. Oracle Последнее, если честно не совсем понял. Мне как раз нужно добавить добавить с некоторым default значением. ну и напрасно вы сразу про это промолчали если знаете то значение - так сразу и добавляйте столбец с дефолтом а ,вообще, спрашивая совета, не будьте партизаном на допросе.. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:38 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
пакеты зависящие от таблички могут "инвалидироватся", чревато для работающих пользователей .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:38 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
orawish если знаете то значение - так сразу и добавляйте столбец с дефолтом Плохой совет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:52 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
andrey_anonymous Плохой совет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 12:26 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Dr. Oracle Добрый день коллеги. Поделитесь, пожалуйста, опытом. Есть таблица, в которую активно что-то пишут. Возникла необходимость добавить в нее столбец. Вопрос: какие есть методики сделать это максимально безболезненно для пользователей? Я понимаю, что есть гугл и я в процессе поиска, но мне интересно у кого есть решение проверенное, которое используется в такого рода задачах. когда срочно нужно мы добавляем таблицу с полем (или несколькими) со связью 1:1. но так себе вариант если честно.. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 13:03 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 13:48 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Dr. Oracle, помимо этого тоже с 12.1 добавились invisible columns, так что в идеале для 12+ было бы добавлять новый столбец как invisible, чтобы не поломать зависимости, не рассчитанные на новый столбец. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 13:55 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Версия 19.6. Спасибо за советы/рекомендации. Если у кого-то есть что добавить - буду благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 14:37 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Про дбмс_редефинишен вам уже подсказали. Есть ещё такой рабоче-крестьянский метод. Если вам повезло и у вас в базе зависимых, от этой таблицы, объектов нет, или достаточно мало (что это такое - достаточно: чуть ниже) то: 1) в этой же схеме создаёте реплицируемую таблицу-копию, от вашей текущей таблицы. В зависимости от того - чем реплицровать: есть большая, или меньшая свобода рук. Ну. Например. Если голден-гейт, то там вообще всё спортивно-бодро, можно даже сразу создать, целевую таблицу, с нужной вам структурой/свойствами полей. Обвешиваете целевую таблицу тем же набором триггеров, индексов. С триггерами: тут либо советоваться с разработчиками, либо, до запуска репликации дизаблить триггера - who knows: какими они могут быть и куда и как могут лезть - всё что угодно может быть. Подсматриваете набор объектных грантов на исходную таблицу - выдаёте такие же объектные гранты, тем же грантополучателям, на целевую таблицу. 2) Репликация вам синхронизирует таблицы по данным. Выбираете момент времени Ч 3) В момент времени Ч: 3.1) как больше нравится перекрываете доступ скл-запросов к исходной таблице. 3.2) контролируете что все изменения данных - зааплаились, репликацией, на целевую таблицу. Репликацию останавливаете. 3.3) Старую таблицу - переименовываете. 3.3) Создаёте синоним, с нужным именем старой таблицы. Назначаете его на новую таблицу. Синоним, то есть, провайдит зависимым объектам имя - которое они ожидают. Плюс зависимые объекты - начинают зависеть от синонима, а не напрямую от таблицы. Ну. Если уверены в том что "больше никогда и ничего такого", с этой таблицей, по крайней мере - вам, делать не придётся: можно синоним не вводить в оборот, а просто переименовать целевую таблицу, в правильное имя. 3.4) Валидите зависимые объекты. Тут - про "достаточно мало": это такое кол-во зависимых объектов при котором затраты на их валидацию - не считается значимыми. Ну т.е.: достаточно быстро и достаточно просто, для вас. 3.5) Если есть триггера и если они дизаблились - енабле им делается. 3.6) Убираете, если нужно, лок на доступ к таблице. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 22:12 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
Maksim Ivanov, зачем такие муки если у ТС Dr. Oracle Версия 19.6. Dr. Oracle добавить с некоторым default значением. В случае ТС это всего лишь изменение метаданных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 22:19 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
xtender В случае ТС это всего лишь изменение метаданных. По данным от ТС - не факт ) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 22:34 |
|
Добавить колонку к нагруженной таблице
|
|||
---|---|---|---|
#18+
xtender 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 06:07 |
|
|
start [/forum/topic.php?fid=52&fpage=36&tid=1880879]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 305ms |
total: | 436ms |
0 / 0 |