DBAtlas · Atlas für Datenbankbetrieb

ORA-04061: existing state of package/procedure has been invalidated

Oracle

Was bedeutet das?

Der bestehende Zustand eines aufgerufenen PL/SQL-Objekts (Package, Prozedur, Funktion) wurde ungültig, weil sich ein Objekt geändert hat, von dem es abhängt. Es ist eine Variante des von ORA-04068 begleiteten Zustandsverlusts; der von der Session gehaltene Package-Zustand ist nicht mehr gültig.

Ursache

Während eine Session ein Package nutzte, wurde DDL auf dieses Package oder seine Abhängigkeiten angewendet (Änderung der Tabellenstruktur, Neukompilierung, Änderung von Grants). Dadurch wurde der bestehende Package-Zustand der Session ungültig. Tritt in Umgebungen mit häufigen Deployments auf, wenn Schemaänderungen bei laufender Anwendung vorgenommen werden.

Lösung

Derselbe Aufruf gelingt meist beim zweiten Versuch (da der Zustand zurückgesetzt wurde); fange diesen Fehler in der Anwendung ab und wiederhole sicher. Führe Schemaänderungen bei geringem Anwendungsverkehr bzw. in einem Wartungsfenster durch. Kompiliere ungültige Objekte gesammelt: EXEC DBMS_UTILITY.COMPILE_SCHEMA('APP_SCHEMA'); Designs, die den Package-Zustand (globale Variablen) minimieren, verringern diesen Effekt.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank