Использование Schema Compare для Oracle для создания сценария развертывания
Вопрос
У нас есть большой (более 2000) набор скриптов, используемых для развертывания кода базы данных.Кто-нибудь знает, есть ли инструмент, который можно использовать для создания единого сценария развертывания, соответствующего правильному порядку зависимости?
Я понимаю, что это можно сделать с помощью Redgate SQL Compare, но это здорово, если у вас есть SQL Server.Судя по ограниченной информации об инструменте Schema Compare for Oracle, похоже, что у него нет этой функции.
Решение
Я бы выбрал следующий порядок (в основном в зависимости от порядка извлечения объектов с помощью EXPDP):
- СИНОНИМ
- ТИП (столбец таблицы может зависеть от типа, определенного пользователем)
- DB_LINK
- ПОСЛЕДОВАТЕЛЬНОСТЬ
- ТАБЛИЦА-ТАБЛИЦА
- ТАБЛИЦА-ГРАНТ
- ТАБЛИЦА-ИНДЕКС
- TABLE-CONSTRAINT (вы можете захотеть, чтобы ограничение PK применялось существующим индексом)
- ТАБЛИЦА-КОММЕНТАРИИ
- ПАКЕТ
- ФУНКЦИЯ
- ПРОЦЕДУРА
- ПОСМОТРЕТЬ
- ОГРАНИЧЕНИЯ, КАСАЮЩИЕСЯ СТОЛА
- ТАБЛИЦА-ТРИГГЕР
- ТАБЛИЦА-ИНДЕКС (ФУНКЦИОНАЛЬНАЯ)
- МАТЕРИАЛИЗОВАННЫЙ ВИД
- МАТЕРИАЛИЗИРОВАННЫЙ ЖУРНАЛ ПРОСМОТРА
- РАБОТА
Другие советы
Я бы создал сценарий для запуска ваших сценариев в правильном порядке, в зависимости от того, как они реализованы.
- Таблицы / Последовательности
- Просмотры / типы
- (обычно с параметром
force
, поэтому они создаются, если есть порядок генерации проблема или зависимость от типов "кода" или других представлений и типов)
- (обычно с параметром
- Пакеты / процедуры / функции / триггеры
- (если они созданы вне порядка зависимости, они все равно будут созданы, но будут недействительными)
- Ограничения внешнего ключа
Начните использовать rdbms / admin / utlrp, чтобы перекомпилировать недопустимые объекты, когда закончите перекомпилировать недопустимые объекты.
Я не уверен, что полностью понял вашу проблему, но вы можете попробовать следующее:
- Запустите ваши текущие сценарии для создания базы данных.
- Создайте пустую схему
- Используйте средство сравнения схем Red Gate, чтобы сравнить свою базу данных с пустой схемой.
- Сохраните сценарий (который должен быть в порядке зависимости)
Ниже приведены общие рекомендации по порядку запуска сценариев установки для различных типов объектов базы данных:
родовое словоСпецификации пакетов указываются первыми, поскольку они всегда действительны и на них могут ссылаться другие объекты.Тела пакетов должны быть последним созданным типом объектов, поскольку они, вероятно, будут ссылаться на другие типы объектов.Из-за проблем с зависимостями вам рекомендуется помещать функции и процедуры в пакеты.