ORA-04068: existing state of packages has been discarded(已丢弃程序包的当前状态)
Oracle含义
在运行中的会话使用某个包的状态时,该包被重新编译,因此该状态失效。会话持有的包实例已不再有效。
原因
在依赖它的会话处于活动状态时,用 ALTER/CREATE OR REPLACE 重新编译了包体或包规范;通常发生在在线系统上部署应用时。与 ORA-04061/04065 一起出现。
解决方法
重新执行调用(重试)通常即可解决;第二次尝试时包会以新形式加载。在应用中捕获 ORA-04068 并自动重试。在用户活动较少的维护窗口中应用包变更。无状态的包设计可减少此问题。
同一数据库的其他条目
- ORA-00979not a GROUP BY expression(不是 GROUP BY 表达式)
- ORA-00918column ambiguously defined(列定义不明确)
- ORA-06550line/column PLS-... PL/SQL compilation error(行/列 PLS-... PL/SQL 编译错误)
- ORA-01427single-row subquery returns more than one row(单行子查询返回多个行)
- ORA-12899value too large for column(列的值太大)
- ORA-30926unable to get a stable set of rows in the source tables(无法在源表中获得一组稳定的行)
- ORA-08103object no longer exists(对象不再存在)