Pergunta

Alguém tem experiência com links de banco de dados entre 10g e 11g?

Esta é uma configuração/operação suportada? É possível? Existem problemas? Ressalvas?

Foi útil?

Solução

Eu tenho usado links de banco de dados de 11g a 10g. Sem grandes problemas.

Somente advertência é que o 11g pode usar senhas de caso misto e você pode desativá-lo se estiver tentando se conectar de um banco de dados 10G a um 11G.

Outras dicas

Uma visualização com dblink na lista de seleção não pode mais ser acessada de outro esquema por meio de um sinônimo (usado para trabalhar no Oracle 10)

A vista

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

Em outro usuário de banco de dados

create synonym foo_synonym for otherdb.foo_view

Selecione Foo_synonym: "ORA-02019 Descrição da conexão para banco de dados remoto não encontrado"

A solução é remover os dblinks da cláusula de seleção da visão subjacente (que realmente não deveria estar lá em primeiro lugar):

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

Às vezes, existem problemas, quando um link de 11g a 10.2.0.4.

Oracle Support Doc Doc ID 730423.1: Selecione com tabelas de função local e remoto usando um dblink pendurado devido ao enq dx.

O ORA-01719 também pode ser jogado se você tiver uma consulta de junção externa em 11g que também usa ou ou as tabelas estão sendo referenciadas por meio de um db_link a 10g.

11g a 11g funciona como 10g a 10g - apenas aparece se você DB_LINK de 11g a 10g.

Especificamente, atualmente estou vendo esse problema usando 11.2.0.1 a 10.2.0.3; e 11.2.0.2 a 10.2.0.4. Bem como lançamentos de O/S variados: Windows e Solaris.

Execute isso nos bancos de dados de 10g e 11g de destino:

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;

Crie DB_LINKS (DB10, DB11) no seu banco de dados 11g de vinculação aos bancos de dados ligados a 10g e 11g.

Execute essas consultas no seu banco de dados 11g de vinculação:

/* 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(+);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top