2015-07-20 3 views
-1

У нас есть база данных оракула, и у нас возникли проблемы с нашими процедурами сборки и установки, когда при обновлении схемы таблиц (добавление, изменение столбцов, триггеров и т. Д.) Это не всегда развертываться во всех экземплярах.SQL Создать или заменить таблицу в Oracle

В настоящий момент мы обрабатываем обновления схемы, помещая примечания на этапах установки для сборки, чтобы запускать команды alter table и т. Д. Но они всегда предполагают, что вы переходите от последней сборки (т. Е. Сборка 3 установлена, и мы собираемся 4). Если установлено 1, могут быть скрипты с изменениями от 1 до 2, затем от 2 до 3, затем от 3 до 4. Таким образом, это огромная боль ручного процесса, который мы часто испортили и пропустили алтарь.

Есть ли простой способ сделать «создать или заменить» на столе, не отбрасывая его и не теряя данные? По сути, мы хотим сравнить текущую таблицу с тем, что она должна быть, и обновить ее. Мы не хотим создавать резервные копии таблицы, отбрасывать ее, создавать и восстанавливать.

+1

Посмотрите инструменты, такие как Liquibase или Flyway –

ответ

1

«По существу, мы хотим, чтобы сравнить текущую таблицу на то, что она должна быть и обновить его»

Если у вас есть хороший вариант источника, который вы хотите использовать, чтобы обновить другие экземпляры, вы можете схемы Жабы сравнения (вам нужен модуль администратора DBA или Toad Xpert Edition) и генерировать скрипты, необходимые для обновления одной таблицы, набора таблиц или любого другого списка объектов, которые вы выберете.

Я бы сказал, что сценарии должны быть проверены/проверены перед запуском против целевого экземпляра. Некоторые изменения могут быть лучше всего обработаны по-другому (переименуйте столбец vs drop/create, например). Так что будь осторожен.

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

+0

Спасибо. Я искал творческое программное решение нашей проблемы, но вы правы. Проблема кроется в процессе управления изменениями и не может быть автоматизирована из-за таких вещей, как переименования столбцов (вероятно, почему нет «создавать или заменять» для таблиц). Я думаю, что мне действительно нужно изменить наш процесс, чтобы «устанавливать заметки» стали базовыми сценариями, а затем палкой, чтобы поразить моих разработчиков, когда они запускают изменения в базе данных вне нормальной установки. – mjr