ORA-04068: existing state of packages has been discarded (se descartó el estado existente de los paquetes)
Oracle¿Qué significa?
Mientras una sesión en ejecución usaba el estado de un paquete, el paquete se recompiló, por lo que ese estado quedó invalidado. La instancia del paquete que mantiene la sesión ya no es válida.
¿Por qué ocurre?
Se recompiló el cuerpo o la especificación de un paquete con ALTER/CREATE OR REPLACE mientras había sesiones activas que dependían de él; suele ocurrir durante el despliegue de aplicaciones en un sistema en producción. Se ve junto con ORA-04061/04065.
Cómo solucionarlo
Volver a ejecutar la llamada (reintento) suele resolverlo; en el segundo intento el paquete se carga en su nueva forma. Capture ORA-04068 en la aplicación y reintente automáticamente. Aplique los cambios de paquetes en ventanas de mantenimiento con poca actividad de usuarios. Un diseño de paquetes sin estado reduce este problema.
Más entradas de este motor
- ORA-00979not a GROUP BY expression (no es una expresión GROUP BY)
- ORA-00918column ambiguously defined (columna definida de forma ambigua)
- ORA-06550línea/columna PLS-... error de compilación PL/SQL
- ORA-01427single-row subquery returns more than one row (una subconsulta de una sola fila devuelve más de una fila)
- ORA-12899value too large for column (valor demasiado grande para la columna)
- ORA-30926unable to get a stable set of rows in the source tables (no se puede obtener un conjunto estable de filas en las tablas de origen)
- ORA-08103object no longer exists (el objeto ya no existe)