Использование Oracle Private DB Link из другой схемы

  1. Мы знаем, что частные ссылки на БД не могут совместно использоваться схемами (необходимо использовать публичные ссылки на БД)

  2. Чтобы избежать публичной ссылки на БД, мы создали:

На схеме А -

  • Личная ссылка на БД
  • Пакет "WRAPPER", который определяет SUBTYPE на основе удаленного объекта (используя ссылку DB).

В схеме Б

  • Процедура Ссылка на подтип из пакета локальной оболочки (схема A).

Это возвращает ошибку: ORA-04054 - ссылка на базу данных ~Our-DB-Link~.WORLD не существует

Интересно отметить:

  • Когда мы используем анонимный блок от пользователя B, ссылаясь на подтип в пакете-оболочке - это работает. (Только хранимые процедуры завершаются с ошибкой выше)

  • Когда мы создаем ту же самую частную ссылку на базу данных также на схему B - это работает.

  • Когда мы создаем публичную ссылку на БД "Подключенный пользователь" (без указания пользователя), она также работает. Хотя Схема B не существует удаленно.

  • Все вышеперечисленное не является для нас оптимальным решением.

  • Мы используем Oracle 11.2.0.4

Вопросы:

  • Почему это работает из анонимного блока, а не из процедуры?

  • Каково наилучшее решение / обходной путь для использования ссылки на частную БД только в одной схеме и использования ее в качестве шлюза к удаленной базе данных, также для определений типа / подтипа?

Спасибо

0 ответов

Другие вопросы по тегам