Вопрос

Есть ли у кого -нибудь опыт работы с базами данных от 10G до 11G?

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

Это было полезно?

Решение

Я использовал ссылки DB от 11G до 10G. Нет больших проблем.

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

Другие советы

Вид с DBLINK в списке SELECT больше не может быть доступен из другой схемы через синоним (используется для работы в 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 Booning View (которого на самом деле не должно быть в первую очередь):

create or replace foo_view as
select foo.id id
from foo@lin foo

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

Oracle Support DOC ID 730423.1: Выберите с локальной функцией и удаленными таблицами, используя DBLINK, висит из -за ENQ DX.

ORA-01719 также может быть брошен, если у вас есть внешний запрос соединения в 11G, который также использует в или или и на таблицы ссылаются через 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.

Запустите это в базах данных Target 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(+);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top