2017-02-11 16 views
0

Проблема: -доступа к таблице синоним создан в БД через DB Link

Таблица присутствует в базе данных 1.

Синоним таблицы создается в базе данных 2, используя Db ссылку, созданную в database2, который указывая на базу данных 1.

Другого DB Link создан в базе данных 3, указывающий на базу данных 2.

при обращении к синониму таблицы, присутствующей в базе данных 2 ее дает ошибку: - ORA-00980 синоним перевод п o более поздний срок действия

Так что, я думаю, мы не можем получить доступ к синониму, присутствующему в удаленной базе данных, и его объект присутствует в другой удаленной базе данных.

Любые предложения по вышеуказанному сценарию. Что было бы лучшим решением для указанной проблемы.

+1

Не понимаю, почему это не сработает. Вы проверили, что синоним действителен из DB2? И как вы получаете доступ к синониму DB2 из DB3, через другой синоним или напрямую? Было бы полезно показать все заявления, которые вы использовали, четко показывая, какая из БД и каждого пользователя была запущена. –

+0

Вы проверили, что синоним действителен из DB2 - Да, синоним действителен в DB2, через другой синоним или напрямую - непосредственно к нему обращается к ссылке db, которая указывает на DB2, где присутствует синоним .. не могли бы вы рассказать мне об этом какая точная информация u требует –

+0

По крайней мере, рабочие и неудачные запросы, но в идеале также создают синоним и создают заявления о связях БД - обфускация конфиденциальных данных, но последовательно. В основном это [MCVE] (http://stackoverflow.com/help/mcve), так как ваше описание слишком неопределенно, чтобы точно определить, что не так. –

ответ

0

Кажется, db-link от DB3 до DB1 может помочь.

См Ask Tom (уведомление, ниже DB3 <- DB2 <- DB1, процедура составлена ​​на DB1):

ПРИЧИНА

Этот вопрос был зарегистрирован в Bug 2829591 запрашивая ИЗ PL/SQL ПРОЦЕДУРЫ В 9I -> 8I- > 7.3.4, ПОЛУЧЕНИЕ ОРА-980. Эта ошибка была закрыта как «НЕ БУГ» по следующим причинам:

PL/SQL не может проинструктировать среднюю базу данных (DB2) следить за базой данных на этапе компиляции. Поэтому для того, чтобы этот блок PL/SQL был скомпилирован и запущен, обе базы данных dblink1 и dblink2 должны быть определены в базе данных front-end DB1. Во время выполнения ссылка на базу данных dblink2 будет искать в DB2, как и ожидалось.

РЕШЕНИЕ

Для реализации этого решения, пожалуйста, выполните следующие шаги:

  1. Создать ссылку базы данных dblink2 на DB1, указывающей DB3 ...
  2. Создание и компиляция PL/SQL блок на DB1.
+0

Создать ссылку на базу данных dblink2 на DB1, указывая на DB3 ... Вышеупомянутое решение не позволило мне получить доступ к таблице DB1 из DB3. Но когда я создал DBlink в DB3, указывающий на DB1, который имел то же имя, что и DBlink, созданный в DB2, указывающий на DB1 IT WORKED. Таким образом, оракул позволяет вам переходить от одной базы данных к анафорной БД, когда ваш путь является основательным средним слоем (или средним БД в этом случае), когда у вас есть dblink среднего слоя, также присутствующего в DB3 исходной БД, которая указывает на пункт назначения DB, который является DB 1 –