DBAtlas · Atlas d'exploitation des bases de données

ORA-04061: existing state of package/procedure has been invalidated (l'état existant du package/de la procédure a été invalidé)

Oracle

Que signifie cette erreur ?

L'état existant d'un objet PL/SQL appelé (package, procédure, fonction) a été invalidé car un objet dont il dépend a changé. C'est une variante de la perte d'état accompagnée d'ORA-04068 ; l'état du package conservé par la session n'est plus valide.

Cause

Pendant qu'une session utilisait un package, un DDL a été appliqué à ce package ou à ses dépendances (modification de structure de table, recompilation, changement de droits). En conséquence, l'état du package de la session a été invalidé. Observé dans les environnements à déploiements fréquents lorsque des changements de schéma sont effectués pendant que l'application tourne.

Comment la corriger

Le même appel réussit généralement à la deuxième tentative (l'état ayant été réinitialisé) ; interceptez cette erreur dans l'application et relancez en toute sécurité. Effectuez les changements de schéma pendant un faible trafic applicatif/une fenêtre de maintenance. Compilez en masse les objets invalides : EXEC DBMS_UTILITY.COMPILE_SCHEMA('APP_SCHEMA'); Les conceptions qui minimisent l'état des packages (variables globales) réduisent cet effet.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur