• 4201阅读
  • 0回复

ORA-04068: 已丢弃程序包的当前状态 [复制链接]

上一主题 下一主题
离线韭菜
 

只看楼主 倒序阅读 0楼 发表于: 2010-07-16
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的去执行的话,也不会存在该问题
grant all privileges on *.* to 'a'@'localhost' identified by 'a' with grant option;flush privileges;
快速回复
限100 字节
 
上一个 下一个