1

有人对 10g 和 11g 之间的数据库链接有经验吗?

这是受支持的设置/操作吗?是否可以?有什么问题吗?注意事项?

4

4 回答 4

5

我一直在使用从 11g 到 10g 的 DB Links。没有什么大问题。

唯一需要注意的是 11g 可以使用大小写混合的密码,如果您尝试从 10g 数据库连接到 11g 数据库,您可能希望将其关闭。

于 2010-03-19T01:13:27.320 回答
2

不能再通过同义词从另一个模式访问选择列表中带有 dblink 的视图(用于在 Oracle 10 中工作)

风景

create or replace foo_view as
select foo.id@link id --yes, I know this is stupid... legacy code
from foo@link

在其他数据库用户上

create synonym foo_synonym for otherdb.foo_view

选择 foo_synonym:“未找到远程数据库的 ORA-02019 连接描述”

解决方案是从底层视图的 select 子句中删除 dblinks(首先不应该存在):

create or replace foo_view as
select foo.id id
from foo@lin foo
于 2011-05-26T07:13:18.660 回答
1

有时会出现问题,当从 11G 链接到 10.2.0.4 时。

Oracle 支持文档 ID 730423.1:使用 Dblink 选择本地函数和远程表由于 Enq DX 而挂起。

于 2010-03-20T20:48:46.320 回答
1

如果您在 11g 中有一个也使用 IN 或 OR 的外连接查询,并且通过 db_link 到 10g 引用表,则也可能引发 ORA-01719。

11g 到 11g 的工作原理与 10g 到 10g 一样 - 如果您将 db_link 从 11g 链接到 10g,就会出现。

具体来说,我目前使用 11.2.0.1 到 10.2.0.3 看到这个问题;和 11.2.0.2 到 10.2.0.4。以及不同的操作系统版本:Windows 和 Solaris。

在目标 10g 和 11g 数据库中运行:

create table u1 (c1 number);
create table u2 (c1 number, c2 number);
insert into u1 values (1);
insert into u1 values (2);
insert into u2 values (1,1);
insert into u2 values (1,2);
commit;

在 11g 链接数据库中创建 db_links (DB10, DB11) 到 10g 和 11g 链接数据库。

在 11g 链接数据库中运行这些查询:

/* this will fail 11g to 10g*/
SELECT *
FROM u1@DB10 a,
(SELECT *
FROM u2@DB10
WHERE c1 IN (1, 2, 3)) b
WHERE a.c1 = b.c1(+);

/* this will work 11g to 11g*/
SELECT *
FROM u1@DB11 a,
(SELECT *
FROM u2@DB11
WHERE c1 IN (1, 2, 3)) b
WHERE a.c1 = b.c1(+);
于 2011-04-07T18:14:10.010 回答