2017-02-11 7 views
0

通報を通してDBで作成したテーブルのシノニム: -アクセスDBリンク

表は、表の1

同義語があるデータベース2で作成Dbのリンクを使用してデータベース2で作成されたデータベース中に存在します ORA-00980シノニム変換のnである - は:データベースのデータベース2にそのエラーを与えるに存在するテーブルのシノニムにアクセス中にデータベース2.

にデータベース3ポインティングで作成1.

別のDBリンクを指していますo長い有効

私はリモートデータベースに存在する同義語にアクセスできず、そのオブジェクトは別のリモートデータベースに存在すると推測します。

上記のシナリオに関するご提案です。上記の問題に対する最良の解決策は何でしょうか。

+1

なぜそれが動作しないのかわかりません。シノニムがDB2から有効であることを確認しましたか?そして、DB2シノニムにDB3から、別のシノニム経由で、または直接アクセスしていますか?それはあなたが使用したすべてのステートメントを表示し、どのDBとユーザーがそれぞれ実行されたかを明確に示すのに役立ちます。 –

+0

シノニムがDB2から有効であることを確認しましたか?はい、シノニムはDB2で有効です。別のシノニムを使用するか、直接シノニムが存在するDB2を指しているDBリンクを使用して直接アクセスしてください。正確な情報が必要です –

+0

少なくとも動作しているクエリと失敗したクエリがありますが、シノニムを作成してDBリンクステートメントを作成することも理想的です。基本的には[MCVE](http://stackoverflow.com/help/mcve)です。説明があまりにも曖昧で何が間違っているのかを特定することはできません。 –

答えて

0

DB3からDB1へのdb-linkが役立つようです。

Ask TomDB1上でコンパイル予告、DB3 <- DB2 <- DB1以下、手順)を参照してください:この問題は9IでのPL/SQL プロシージャからバグ2829591照会で報告された

が原因

- > 8I- > 7.3.4、ORA-980の入手このバグは

PL/SQLは、コンパイル・フェーズ中にデータベース リンクをたどるために、中央データベース(DB2)を指示することができない次のような理由「ではないBUG」として を閉じました。したがって、このPL/SQL ブロックをコンパイルして実行するには、フロントエンド・データベース(DB1)にデータベース・リンクdblink1とdblink2 を定義する必要があります。ランタイム中に データベースリンクdblink2が期待どおりにDB2でルックアップされます。ソリューションを実装する

SOLUTION

は、次の手順を実行してください:

  1. DB3 にDB1のポインティング上のデータベース・リンクdblink2を作成...
  2. PL/SQLを作成してコンパイルDB1でブロックします。
+0

DB3を指すDB1上のデータベースリンクdblink2を作成してください... 上記の解決策ではDB3のDB1のテーブルにアクセスできませんでしたが、 DB1は、DB2で作成されたDBリンクと同じ名前のDB1を指し、DB1 IT WORKEDを指しています。したがって、オラクルでは、中間層のdblinkがDB3にも存在するときに、パスが中間層(この場合は中間DB)になっているときに、1つのDBから別のDBに徹底的にホップできます。 DBであるDB1 –

関連する問題