【发布时间】:2016-05-08 19:49:56
【问题描述】:
有一个 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 个数据库链接?
【问题讨论】:
-
而你无法将v8数据库升级到千禧年版本的原因是......?
-
它属于另一家公司:)
-
另一个解决方案,取决于数据需要的最新程度,是在 10g 数据库上创建物化视图,定期通过其 db 链接从 8 中提取数据,然后从 12g 中查询这些 MV。
标签: oracle plsql database-link