2010-12-02 2 views
1

Какие операции разрешены и не разрешены в живой базе данных Oracle? В частности, как это обрабатывается при добавлении, удалении и переименовании столбцов?Oracle: добавление, переименование и удаление столбцов в живой базе данных

+0

Я был бы крайне осторожен в переименовании столбцов. Есть много вещей, которые вы могли бы разбить, делая это. – HLGEM 2010-12-02 21:59:56

ответ

1

Вы можете добавить, удалить и переименовать столбцы без проблем.

Предостережение,

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

переименовать столбец может разорвать ваше приложение. Планируйте это, но в противном случае вы должны быть в порядке. Также поймите, что вы будете генерировать ошибки для запросов, которые пытаются получить доступ к столбцу, если вы не планируете правильно.

2

Вы можете сделать почти все изменения, подобные этому, в исполняемом экземпляре. Конечно, я бы не рекомендовал делать это с ПОЛЬЗОВАТЕЛЯМИ в системе.

Оказалось, что у Oracle 11.2 есть новая функция-убийца, называемая EBR, Edition-Based-Redefinition. Думайте об этом как о возможности «совершить» и «откатить» DDL-изменения. Это может быть полезно, в зависимости от обстоятельств.

+0

Если бы у меня была необходимость сделать это (особенно на большой высокоиспользуемой таблице), я бы определенно планировал задачу, когда пользователи не находятся в системе или закрывают приложение для окна обслуживания. – HLGEM 2010-12-02 21:59:30

+0

EBR является массовым комплексом и является дополнительным вариантом лицензии. Я могу придумать только несколько случаев, когда это практично. – erbsock 2010-12-03 13:27:57

1

вы можете делать все это. если в базе данных обнаружена причина, запрещающая изменение, вы получите хороший nastygram с крутым кодом ошибки, который вы можете проверить, что вам нужно сделать дальше.

у вас будет меньше проблем, если нет других пользователей runnign запросов или нет заданий, выполняющихся в фоновом режиме tc.

2

Online изменения (то есть в то время как другие сеансы активны) можно сделать с помощью DBMS_REDEFINITION (описано here, here и here), но это является Enterprise Edition feature

Смежные вопросы