我们每天在每两个小时运行一次的脚本上收到此错误,但是在一天的不同时间.
ERROR at line 1: ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package body "PACKAGE.NAME" has been invalidated ORA-06508: PL/sql: could not find program unit being called: "PACKAGE.NAME" ORA-06512: at line 1
有人可以列出哪些条件可能导致此错误,以便我们可以调查?
谢谢.
更新:
执行’ALTER SESSION CLOSE DATABASE LINK DBLINK’是否会使包的状态无效?
解决方法
该包具有公共或私有变量. (对吧?)这个变量构成了包的状态.如果您在第3个会话中编译包.下一次访问此程序包将抛出ORA-04068.
程序包的构建时间戳必须早于程序包会话状态.
如果脚本运行不需要包状态,则在脚本开头调用DBMS_SESSION.RESET_PACKAGE.这会清除会话的所有包状态.