Может ли компиляция нескольких пакетов Oracle Pl / SQL быть атомарной операцией? - PullRequest
5 голосов
/ 23 апреля 2010

Если я разверну N пакетов pl / sql в БД Oracle, могу ли я сделать их компиляцию атомарной, т.е. изменения в этих пакетах будут применены после успешной компиляции всех пакетов?

Ответы [ 3 ]

3 голосов
/ 23 апреля 2010

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

3 голосов
/ 23 апреля 2010

CREATE OR REPLACE и ALTER PACKAGE являются операторами DDL, и каждый отдельный оператор DDL является дискретной транзакцией. COMMIT выдается до и после каждой команды DDL; поэтому отката для DDL нет.

Мне кажется, у вас проблема с управлением конфигурацией. И управление конфигурацией, плюс контроль исходного кода - это способ исправить это. Держите все ваши сценарии PL / SQL (черт возьми, только все ваши сценарии) под контролем версий. При развертывании новой версии некоторых программ на PL / SQL также проверьте предыдущие версии (в отдельном подкаталоге или в том, что имеет смысл в режиме вашего развертывания). Затем, если возникнут какие-либо проблемы с новыми версиями ваших пакетов, будет несложно переустановить старые версии.

2 голосов
/ 23 апреля 2010

Другие ответы здесь хороши (например, переопределение на основе редакции, которое доступно в 11gR2).

Другой вариант предоставляется PL / SQL Developer , который можно настроить навыполнить тестовую компиляцию (компилирует пакет с альтернативным именем) до "реальной" компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...