在我们的应用程序(ADF)中,应用程序团队正在使用dblink调用过程。在此过程中,将调用另一个位于pacakge中的过程。它工作正常,但有时会出现错误
ORA-06508: PL/SQL: could not find program unit being called
当我签入远程数据库时,我发现该对象的状态为有效。
当我重新启动应用程序服务器时,它又可以工作了。每次需要重新启动应用程序服务器(Weblogic)时。
我找不到导致此问题的主要原因。为什么几天后又一次发生这种情况。请帮忙。
谢谢!
答案 0 :(得分:0)
我认为当有人编译堆栈中的一个包时,您的麻烦就变得了。您可以尝试在select
中进行层次结构dba_dependencies
查询以进行检查。
关于服务器的重新启动,我认为这是由于db-link外部的代码在调用时会回滚。直到他们不重置状态包,错误都会在第一次错误后每次重复。有两种解决方法(我认为):
1.使用代码ORA-06508
捕获异常
2.特殊的pragma 的包装函数/过程,可以忽略对包装状态的检查。