ORA-04061: existing state of package/procedure has been invalidated
OracleWas 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.
Weitere Einträge zu dieser Datenbank
- ORA-19804cannot reclaim N bytes disk space from M bytes limit
- ORA-00494enqueue held for too long by 'inst N, osid M'
- ORA-04021timeout occurred while waiting to lock object
- ORA-01466unable to read data - table definition has changed
- ORA-08176consistent read failure; rollback data not available
- ORA-00020maximum number of processes (N) exceeded
- ORA-01113file N needs media recovery