Une façon d'aborder c'est de déployer votre code dans le bon ordre.
Les packages PL/SQL sont eux-mêmes l'API du code dans le corps du package et les packages eux-mêmes ne dépendent pas les uns des autres. Les corps de paquet peuvent cependant dépendre de paquets, donc si un paquet est recompilé, il risque d'invalider les corps du paquet qui le référencent.
Malheureusement, il est très fréquent de voir les déploiements qui travaillent dans cet ordre:
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 ...;
Cela a l'effet secondaire que si le code dans le paquet du corps A dépend du paquet B, puis lorsque le groupe B est (re) créé il invalident paquet corps A.
la séquence correcte pour le déploiement est:
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 ...;
S'il n'y a pas eu des changements dans le paquet lui-même alors e Bien sûr, il n'est pas nécessaire de le déployer.Le respect de ces méthodes devrait vous donner beaucoup moins d'objets non valides.
toute raison de la récente downvote ...? – tbone