изменения, а перекомпиляция может вызвать длительный процесс и повесить страницу у пользователя, то есть какой то оперативное решение ? чтобы накатить изменения
Мы ставим новый пакет рядом с др именем. Если ок дергаерся в джобе то меняем джоб. Остановить нагрузку днем для установки обновлённого пакета часто не разрешают
если бы этот пакет крутился в джобе, то Да!, самое простое тормознуть джоб и всё. но он не в джобе, он вызывается с Web морды. На нём куча юзеров
Написать шелл скрипт, стопающий сервис бд с принудительным дисконнектом юзеров, подключённых через этот сервис, запуск sqlplus с установкой пакета, старт сервиса. На все менее минуты. Удобно если разные приложения подключаются под своими сервисами к бд, всех юзеров и все приложения рубить не надо....
1. Создаете новый пакет - копию старого, вносите нужные изменения 2. Создаете PUBLIC Synonym с именем старого пакета который указывает на новый пакет 3. Переименовываете старый пакет 2 и 3 Все это в скрипте - займет меньше 5 сек. Но будет работать только для новых сессий
а при переименовывании старого не возникнут блокировки по причине занятости ?
возникнут конечно )
Так вариантов у Вас немного: или перекомпилировать (накатить) или подсунуть новый заранее скомпилированный пакет под синонимом. При прочих равных перекомпилирование увеличивает риск задержки. Вообще насколько серьезна проблема "некорректной работы"? Может ее никто и не замечает? Неправильные функции могут и не вызываться. Тогда вариант №3 - ничего не делать и готовиться к плановому обновлению Edition-based redefinition - на будущее посмотрите.
Обсуждают сегодня