ORA-06508解决

在10.2.0.3上,存在bug可能导致编译过程或视图失败,而失败的结果并不只是当前视图或过程不可用,而是可能影响整个数据字典,导致存储过程在执行时出现ORA-04068错误。
错误信息如下:
ORA-04068: existing state of packages has been discarded.
ORA-04065: not executed, altered or dropped stored procedure P_PACKAGE.P_PRO
ORA-06508: PL/SQL: could not find program unit being called: P_PACKAGE.P_PRO
ORA-06512: at line 1
 
这个问题对应的BUG信息为:Bug 6136074 - ORA-04068 / ORA-04065 ORA-06508 on VALID objects [ID6136074.8],导致问题的原因就是编译对象时导致PLSQL的依赖对象的时间戳发生不一致,从而导致问题的产生。
Oracle文档上给出了检查问题的SQL语句:
SELECT do.obj# d_obj,
       do.NAME d_name,
       do.type# d_type,
       u.NAME owner,
       po.obj# p_obj,
       po.NAME p_name,
       po.type# d_type,
       to_char(d.p_timestamp, 'YYYY-MM-DD HH24:MI:SS') "P_Timestamp",
       to_char(po.stime, 'YYYY-MM-DD HH24:MI:SS') "STIME",
       decode(sign(po.stime - p_timestamp), 0, 'SAME', '*DIFFER*') x
  FROM sys.obj$ do, sys.dependency$ d, sys.obj$ po, sys.user$ u
 WHERE p_obj# = po.obj#(+)
   AND d_obj# = do.obj#
   AND do.status = 1 /*dependent is valid*/
   AND po.status(+) = 1 /*parent is valid*/
   AND do.owner# = u.user#
 ORDER BY 2, 1;
 
SELECT * FROM dba_dependencies t
 
通过这个脚本将获取的对象进行重新编译,可以解决这个问题,要避免问题的再次出现,应该将 数据库版本升级到10.2.0.4以上。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值