Одним из способов решения этой проблемы является развертывание кода в правильном порядке.
Сами пакеты PL / SQL являются API для кода в теле пакета, и сами пакеты не зависят друг от друга.,Однако тела пакетов могут зависеть от пакетов, поэтому, если пакет перекомпилируется, он рискует сделать недействительными тела пакетов, ссылающиеся на него.
К сожалению, очень часто можно увидеть развертывания, которые работают в таком порядке:
create or replace Package A ...;
create or replace Package Body A ...;
create or replace Package B ...;
create or replace Package Body B ...;
create or replace Package C ...;
create or replace Package Body C ...;
Это имеет побочный эффект: если код в теле пакета A зависит от пакета B, то при создании (пере) создании пакета B он аннулирует тело пакета A.
Правильная последовательность дляразвертывание:
create or replace Package A ...;
create or replace Package B ...;
create or replace Package C ...;
create or replace Package Body A ...;
create or replace Package Body B ...;
create or replace Package Body C ...;
Если в самом пакете не было изменений, то, разумеется, его вообще не нужно развертывать.
Соблюдение этих методов должно дать вам гораздо меньшенедопустимые объекты.