oracle - ORA-06508 调用远程数据库上的过程时
问题描述
在我们的应用程序 (ADF) 中,应用程序团队正在使用 dblink 调用一个过程。在此过程中,正在调用包中的另一个过程。它工作正常,但有时会出错
ORA-06508: PL/SQL: could not find program unit being called
当我签入远程数据库时,我发现该对象的状态是VALID。
当我重新启动应用程序服务器时,它再次工作。每次我需要重新启动应用程序服务器(Weblogic)。
我无法找到此问题的主要原因。为什么这种情况在几天后一次又一次地发生。请帮忙。
谢谢!
解决方案
我认为当有人在堆栈中编译一个包时,您的麻烦就变成了。您可以尝试进行层次结构select
查询dba_dependencies
以检查它。
关于重新启动服务器,我认为这是因为来自 db-link 外部的代码在调用时会回滚。直到他们不重置状态包,在第一个错误后每次都会重复错误。有两种方法可以解决它(我的观点):
1. 用代码捕获异常2. 包装允许忽略包状态检查的特殊pragmaORA-06508
的函数/过程。
推荐阅读
- distributed-transactions - XA 规范是否确保任何事务以相同的顺序到达资源?
- android - 如何使用 Hilt 在存储库中注入应用程序上下文?
- selenium - Chrome 和 ChromeDriver 版本差异
- angular - 在 html 中显示来自 json Angular 中的 http 服务的数据
- css - 不知道如何改变我的 CSS Grid 的行为
- android - Firebase 实时数据库向 Recycler 添加值
- javascript - JS 解密 Laravel 加密字符串
- asp.net-mvc - 该属性属于接口类型(“IFormFile”)。如果是文件上传时在asp.net core中手动设置的导航属性
- python - 如何在Django中查询集的每个对象上执行一个方法并返回一个列表?
- javascript - 返回 JSON 字符串的 JavaScript 函数