ORA-06508 при вызове процедуры, которая находится на удаленной базе данных - PullRequest
0 голосов
/ 26 ноября 2018

В нашем приложении (ADF) команда приложения вызывает процедуру, используя dblink.В этой процедуре вызывается другая процедура, которая находится в пакакге.Он работает нормально, но иногда выдает ошибку

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

Когда я проверил в удаленной базе данных, я обнаружил, что статус этого объекта VALID .

Когдая перезапускаю сервер приложений, он снова работает.Каждый раз, когда мне нужно перезапустить сервер приложений (Weblogic).

Я не могу найти, что является основной причиной этой проблемы.Почему это происходит снова и снова через несколько дней.Пожалуйста, помогите.

Спасибо!

1 Ответ

0 голосов
/ 27 ноября 2018

Я думаю, что ваша проблема возникла, когда кто-то скомпилировал один из пакетов в стек.Вы можете попробовать сделать иерархический запрос select в dba_dependencies, чтобы проверить его.

По поводу перезагрузки сервера я думаю, что это из-за того, что в коде из-за пределов db-link есть откат при вызове.Пока они не сбросят пакет состояний, ошибка будет повторяться каждый раз после первой ошибки.Есть два способа ее решения (мое мнение):
1. Поймать исключение с кодом ORA-06508
2. Обернуть функцию / процедуру especial pragma , которая позволяет игнорировать проверку состояний пакета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...