Ссылки на базу данных Oracle между 10g и 11g - PullRequest
1 голос
/ 19 марта 2010

Кто-нибудь имеет опыт работы с ссылками на базы данных между 10g и 11g?

Это поддерживаемая настройка / операция?Является ли это возможным?Есть ли проблемы?Предостережения?

Ответы [ 4 ]

5 голосов
/ 19 марта 2010

Я использую ссылки на БД с 11 до 10 г. Никаких больших проблем.

Единственное предостережение в том, что 11g может использовать смешанные пароли, и вы можете отключить его, если вы пытаетесь подключиться из базы данных 10g к базе данных 11g.

2 голосов
/ 26 мая 2011

Представление с dblink в списке выбора больше не может быть доступно из другой схемы через синоним (используется для работы в Oracle 10)

Вид

create or replace foo_view as
select foo.id@link id --yes, I know this is stupid... legacy code
from foo@link

На другого пользователя БД

create synonym foo_synonym for otherdb.foo_view

выберите foo_synonym: «Описание соединения ORA-02019 для удаленной базы данных не найдено»

Решение состоит в том, чтобы удалить dblinks из предложения select базового представления. (чего в действительности не должно быть):

create or replace foo_view as
select foo.id id
from foo@lin foo
1 голос
/ 07 апреля 2011

ORA-01719 также может быть сгенерировано, если у вас есть запрос внешнего соединения в 11g, который также использует IN или OR и ссылки на таблицы через db_link ссылаются на 10g.

11g до 11g работает так же, как и 10g до 10g - просто появляется, если вы используете db_link с 11g до 10g.

В частности, я в настоящее время вижу эту проблему, используя 11.2.0.1 до 10.2.0.3; и с 11.2.0.2 по 10.2.0.4. А также различные версии O / S: Windows и Solaris.

Запустите это в целевых базах данных 10g и 11g:

create table u1 (c1 number);
create table u2 (c1 number, c2 number);
insert into u1 values (1);
insert into u1 values (2);
insert into u2 values (1,1);
insert into u2 values (1,2);
commit;

Создайте db_links (DB10, DB11) в своей базе данных 11g, соединяющей базы данных 10g и 11g.

Запустите эти запросы в базе данных ссылок 11g:

/* this will fail 11g to 10g*/
SELECT *
FROM u1@DB10 a,
(SELECT *
FROM u2@DB10
WHERE c1 IN (1, 2, 3)) b
WHERE a.c1 = b.c1(+);

/* this will work 11g to 11g*/
SELECT *
FROM u1@DB11 a,
(SELECT *
FROM u2@DB11
WHERE c1 IN (1, 2, 3)) b
WHERE a.c1 = b.c1(+);
1 голос
/ 20 марта 2010

Иногда возникают проблемы при ссылке с 11G на 10.2.0.4.

Oracle Support Doc ID 730423.1: выбор с локальной функцией и удаленными таблицами с использованием зависания Dblink из-за Enq DX.

...