Oracle 通过两个数据库链接使用PL/SQLAPI

Oracle 通过两个数据库链接使用PL/SQLAPI,oracle,plsql,database-link,Oracle,Plsql,Database Link,有一个Oracle数据库(版本8)充当PL/SQL API,提供对该数据库中不同过程和表的访问。 我有另一个Oracle数据库(版本10g),它通过数据库链接使用这些过程和表。 我将我的数据库升级到了版本12g,但显然在版本8和12g之间使用数据库链接存在兼容性问题。 因此提出了一个计划,用Oracle版本10g创建第三个数据库,并将其作为“代理”放置在8到12g之间。建立了从v12g到v10g以及从v10g到v8的数据库链接。在“代理”(v10g)数据库中为v8数据库中的表和过程创建同义词。

有一个Oracle数据库(版本8)充当PL/SQL API,提供对该数据库中不同过程和表的访问。
我有另一个Oracle数据库(版本10g),它通过数据库链接使用这些过程和表。
我将我的数据库升级到了版本12g,但显然在版本8和12g之间使用数据库链接存在兼容性问题。 因此提出了一个计划,用Oracle版本10g创建第三个数据库,并将其作为“代理”放置在8到12g之间。
建立了从v12g到v10g以及从v10g到v8的数据库链接。在“代理”(v10g)数据库中为v8数据库中的表和过程创建同义词。 我可以从v12g中创建一个标准SELECT子句:

    select column from table@dblink;
但是把它放到匿名块中:

    declare
     sVar varchar2(200);
    begin
      select column into sVar from table@dblink;
      dbms_output.put_line(sVar);
    end;

给出错误:“PL/SQL:ORA-00980:同义词翻译不再有效”。有没有一种方法可以通过v10g从v12g访问v8过程和表?也就是说,通过两个数据库链接?

假设有一个主要障碍阻止了Oracle 8(8.0/8.1.x)db的升级,我认为您需要忘记数据库链接。即使你花了很多精力让它工作得更久一点,你也不能保证它在下一个补丁中能工作

我将考虑围绕Oracle8功能构建一个Java包装器。您的12c数据库只需调用Java层(甚至可能作为Java存储过程)


如果必须使用dblinks,可以尝试查看DG4ODBC,这样您就可以将Oracle 8 DB视为一个通用的“外来”数据库,而不是Oracle DB。

而不能将v8数据库升级到新千年版本的原因是……?它属于另一家公司:)另一种解决方案,取决于数据的最新需要,是在10g数据库上创建物化视图,定期通过数据库链接从8中提取数据,然后从12g中查询这些MVs。谢谢您的想法。在这种情况下,“忘记数据库链接”(也就是说,通过2db的dblinks将不起作用)似乎是正确的答案。