10g と 11g の間のデータベース リンクの経験がある人はいますか?
これはサポートされているセットアップ/操作ですか? 出来ますか?問題はありますか?警告?
11g から 10g まで DB Links を使用しています。大きな問題はありません。
唯一の注意点は、11g では大文字と小文字が混在するパスワードを使用できることです。10g データベースから 11g データベースに接続しようとしている場合は、パスワードをオフにすることをお勧めします。
選択リストに 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
他のDBユーザーで
create synonym foo_synonym for otherdb.foo_view
select foo_synonym: "ORA-02019 リモート データベースの接続の説明が見つかりません"
解決策は、基になるビューの select 句から dblinks を削除することです (これはそもそも存在しないはずです)。
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: Select With Local Function and Remote Tables Using a Dblink が Enq DX によりハングします。
ORA-01719 は、IN または OR も使用する外部結合クエリが 11g にあり、テーブルが db_link を介して 10g に参照されている場合にもスローされる可能性があります。
11g から 11g は、10g から 10g と同様に機能します。11g から 10g に db_link すると起動します。
具体的には、現在、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;
11g リンク データベースに db_links (DB10、DB11) を作成し、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(+);