Я видел, как многие методы пытались справиться с этим, и, в конце концов, я думаю, вам нужно просто поддерживать ручные сценарии.
Теперь вам не обязательно писать сами. В MSSQL, когда вы вносите изменения, есть небольшая кнопка для создания скрипта, которая выплевывает SQL-скрипт для изменения, которое вы делаете. Я знаю, что вы говорите об Oracle, и прошло несколько лет с тех пор, как я работал с их графическим интерфейсом, но могу только представить, что у них такая же функция.
Однако вы не можете уйти от работы со скриптами вручную. У вас будет много проблем с уже существующими данными, такими как значения по умолчанию для новых столбцов или способы обработки данных для столбца переименованного/удаленного/перемещенного. Это лишь часть анализа при работе со схемой базы данных с течением времени, от которой вы не можете уйти. Если вы попытаетесь сделать это с помощью полностью автоматизированного решения, ваши данные рано или поздно будут испорчены.
Единственное, что я хотел бы посоветовать, просто чтобы сделать вашу жизнь немного легче, убедитесь, что вы отделяете изменения схемы от изменений кода. Разница заключается в том, что изменения схемы в таблицах и столбцах должны выполняться ровно один раз и никогда больше и поэтому должны быть версиями в виде отдельных сценариев изменений. Тем не менее, изменения кода, такие как хранимые процедуры, функции и даже представления, могут (и должны) запускаться снова и снова и могут управляться версиями точно так же, как и любой другой файл кода. Лучший подход к этому я видел, когда у нас были все функции procs/functions/views в VSS, и наш процесс сборки потерял бы все и воссоздал их во время каждого обновления. Это та же идея, что и перестройка вашего кода C#/Java/любого другого, поскольку он гарантирует, что все всегда актуально.
Это было средство, которое мы использовали в моем последнем магазине - через скрипт. Сломанные в компоненты: таблица, индекс, ограничения ... Иногда подразделяются между drop/disable и отдыхом. –
@OMG Ponies Вы имеете в виду писать и приводить в исполнение каждый скрипт вручную, или у вас есть автоматический скрипт/триггер, отслеживающий их и классифицирующий их? –
@RI: Руководство. Наш клиент использовал Oracle Designer, который, как мне сказали, был ненадежным. –