2016-05-08 5 views
1

PL/SQL APIとして機能するOracleデータベース(バージョン8)があり、そのデータベース内の異なるプロシージャおよびテーブルへのアクセスを提供します。
私は、データベースリンクを介してこれらのプロシージャとテーブルを使用する別のOracleデータベース(バージョン10g)を持っています。
データベースをバージョン12gにアップグレードしましたが、明らかにバージョン8と12gの間のデータベースリンクを使用して互換性の問題があります。 Oracleバージョン10gを使用して3番目のデータベースを作成し、それを「プロキシ」として8〜12gの間に配置する予定です。
v12gからv10g、v10gからv8へのデータベースリンクを作成しました。 v8データベースの表およびプロシージャーのための "proxy"(v10g)データベースに同義語を作成しました。 私はV12Gからの標準SELECT句作ることができます。2つのデータ・バスリンクを介してPL/SQL APIを使用

select column from [email protected]; 

しかし、無名ブロックの中にそれを置くことを:

declare 
    sVar varchar2(200); 
    begin 
     select column into sVar from [email protected]; 
     dbms_output.put_line(sVar); 
    end; 

はエラーを与えない:「PL/SQL:ORA-00980を:シノニム変換はもはやあり有効 "である。 v10g経由でv8プロシージャとテーブルにアクセスする方法はありますか?つまり、2つのデータバスリンクを経由することですか?

+2

そして、あなたがv8データベースをこのミレニアムのバージョンにアップグレードできないのはなぜですか? – APC

+0

それは別の会社に属しています:) – Tanel

+0

もう1つの解決方法は、現在のデータの必要性に応じて、10gデータベースにマテリアライズドビューを作成して、そのデータベースから定期的にdbリンクを介してデータを取得し、 。 –

答えて

2

アップグレードするOracle 8(8.0/8.1.x)データベースを妨げる大きな障害があるとすれば、データベースリンクを忘れる必要があると思います。ちょっとした作業に多大な努力を払っても、次のパッチで動作するという保証はありません。

私はOracle 8の機能のJavaラッパーを構築します。あなたの12cデータベースは、単にJavaレイヤー(Javaストアドプロシージャ)を呼び出すだけです。

dblinksを使用する必要がある場合は、DG4ODBCを調べると、Oracle DBをOracle DBではなく汎用の「外部」データベースとして扱うことができます。

+0

あなたの考えをありがとう。 "データベースのリンクを忘れる"(つまり、2 dbまでのdblinksは機能しません)は、この場合正解と思われます。 – Tanel

関連する問題