本人使用oracle时间不长,现在遇到了问题,向各位大虾请教。具体问题如下:
程序调用过程时出现如下的错误(过程自动记录下的错误):
ORA-06508: PL/SQL: 无法找到正在调用  的程序单元。
oracle过程编译没有问题。
相同的数据,相同的过程放到另外的一台机器上,则运行正常,没有出现上面提示的错误,之前也出现过相应的错误,但一般重新编译过程后就解决,但这一次无论如何重新编译,都没有出现错误,但就是运行时会出错这个异常。并且在sql plus中手动调用过程时又是正常的。请各位大虾给个解决办法吧,不胜感谢。

解决方案 »

  1.   

    ORA-06508: PL/SQL: could not find program unit being called 
    Cause: An attempt was made to call a stored program that could not be found. The program may have been dropped or incompatibly modified, or have compiled with errors. 
    Action: Check that all referenced programs, including their package bodies, exist and are compatible.网上查了下好像是oracle的bug,不过不确定,你的oracle版本和这个过程做的操作说明一下吧
      

  2.   

    你按照1楼给出的可能原因一一比对一些,要是都没问题的话,真可能是BUG
      

  3.   

    oracle 10g,有时会出现,重新编译一下就好了,但这一次我编译了多次没有任何错误,并且运行了多次还是相同的错误,而相同的过程,在另外的一台机器上则运行正常。
      

  4.   

    select OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS 
    from all_objects 
    where status != 'VALID'看看你调用的过程是否是invalid的
      

  5.   

    用sysdba登录,执行这个sql,把其中upper(name)=upper('DBMS_OUTPUT') DBMS_OUTPUT换成你的procedure的名字。select * from (select dba_dependencies.*, level level_1 from dba_dependencies where name<>referenced_name and referenced_type<>'TABLE' start with upper(name)=upper('DBMS_OUTPUT') connect by prior referenced_name = name) where level_1 > 1;通过这个sql可以看到你提供的procedure都依赖叻哪些对象,查看这些对象的status。