Heim  >  Artikel  >  Datenbank  >  Oracle Bug 6136074

Oracle Bug 6136074

WBOY
WBOYOriginal
2016-06-07 17:29:221064Durchsuche

在10.2.0.3上,存在bug可能导致编译过程或视图失败,而失败的结果并不只是当前视图或过程不可用,而是可能影响整个数据字典,导致

工作上碰到的Oracle Bug 6136074,一个10203上的bug,这种问题还是第一次碰到。 

在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.named_name, do.type# d_type,
 po.obj# p_obj,po.name p_name,
 to_char(p_timestamp,'DD-MON-YYYY HH24:MI:SS') "P_Timestamp",
 to_char(po.stime ,'DD-MON-YYYY HH24:MI:SS') "STIME",
 decode(sign(po.stime-p_timestamp),0,'SAME','*DIFFER*') X
 from sys.obj$ do, sys.dependency$ d, sys.obj$ po
 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 po.stime!=p_timestamp /*parent timestamp not match*/
 order by 2,1;
 
通过这个脚本将获取的对象进行重新编译,可以解决这个问题,要避免问题的再次出现,,应该将数据库版本升级到10.2.0.4以上。

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn