Question

Quelqu'un at-il une expérience avec des liens de base de données entre 10g et 11g?

Est-ce une configuration / opération prise en charge? C'est possible? Y a-t-il des problèmes? Mises en garde?

Était-ce utile?

La solution

Je me sers DB Liens de 11g à 10g. Pas de gros problèmes.

mise en garde est que seulement 11g peut utiliser des mots de passe casse mixte et vous voudrez peut-être passer que hors tension si vous essayez de vous connecter à partir d'une base de données 10g à un un 11g.

Autres conseils

Une vue avec dblink dans la liste de sélection ne peut plus être accessible depuis un autre schéma via un synonyme (utilisé pour travailler dans Oracle 10)

La vue

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

Sur un autre utilisateur DB

create synonym foo_synonym for otherdb.foo_view
select

foo_synonym:    "Description de la connexion ORA-02019 pour la base de données à distance introuvable"

La solution consiste à supprimer dblinks de clause select de la vue sous-jacente (Qui ne devrait pas vraiment être là en premier lieu):

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

Parfois, il y a des problèmes, quand un lien de 11G à 10.2.0.4.

Oracle Support Doc ID 730423,1. Sélectionnez avec fonction locale et tables à distance à l'aide d'une dbLink plante à cause Enq DX

ORA-01719 peut également être levée si vous avez une requête de jointure externe dans 11g qui utilise également IN ou OR et les tables sont référencées par un db_link à 10g.

11g à 11g fonctionne comme le fait 10g à 10g -. Vient juste si vous db_link de 11g à 10g

Plus précisément, je vois actuellement cette question en utilisant 11.2.0.1 à 10.2.0.3; et 11.2.0.2 à 10.2.0.4. En plus ou moins O / S versions: Windows et Solaris

.

Exécuter ce dans les bases de données cibles de 10g et 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;

Créer db_links (DB10, DB11) dans votre base de données 11g reliant à la fois les bases de données liées 10g et 11g.

Exécuter ces requêtes dans votre base de données 11g lien:

/* 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(+);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top