1

有一个 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 过程和表 - 这意味着通过 2 个数据库链接?

4

1 回答 1

2

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

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

如果您必须使用 dblinks,您可以尝试查看 DG4ODBC,因此您会将 Oracle 8 DB 视为通用的“外部”数据库,而不是 Oracle DB。

于 2016-05-08T23:45:02.557 回答