ORA-04068: 已丢弃程序包的当前状态
ORA-04061: package body “XXXXXX” 的当前状态失效
ORA-04065: 未执行,已更改或删除 package body “XXXXX”
-- ALTER PACKAGE DBMS_SQL COMPILE;
打开新会话运行即可。
因为在A会话修改包并重复编译的时候之前,B会话已经执行过一次A会话的包中的函数,而A会话修改和编译完毕后,B会话再次调用A会话中的包中的函数,oracle发现缓存区中的包的函数已经是旧的了,所以返回提示信息:
ORA-04068: 已丢弃程序包 的当前状态
ORA-04061: package body "DB2INST2.PKGTEST " 的当前状态失效
ORA-04065: 未执行, 已更改或删除 package body "DB2INST2.PKGTEST " -- 注意“已更改”
然后删除了缓存中的包pkgtest的函数
再次执行的时候,重新读取函数,就不会存在该问题
如果重新打开一个session的去执行的话,也不会存在该问题