首页 > 解决方案 > ORA-06508 调用远程数据库上的过程时

问题描述

在我们的应用程序 (ADF) 中,应用程序团队正在使用 dblink 调用一个过程。在此过程中,正在调用包中的另一个过程。它工作正常,但有时会出错

ORA-06508: PL/SQL: could not find program unit being called

当我签入远程数据库时,我发现该对象的状态是VALID

当我重新启动应用程序服务器时,它再次工作。每次我需要重新启动应用程序服务器(Weblogic)。

我无法找到此问题的主要原因。为什么这种情况在几天后一次又一次地发生。请帮忙。

谢谢!

标签: oracleplsql

解决方案


我认为当有人在堆栈中编译一个包时,您的麻烦就变成了。您可以尝试进行层次结构select查询dba_dependencies以检查它。

关于重新启动服务器,我认为这是因为来自 db-link 外部的代码在调用时会回滚。直到他们不重置状态包,在第一个错误后每次都会重复错误。有两种方法可以解决它(我的观点):
1. 用代码捕获异常2. 包装允许忽略包状态检查的特殊pragmaORA-06508
的函数/过程。


推荐阅读