Oracle 连接DBLINK遭遇 ORA-02085

浏览: 1931

版本:Oracle 11.2.0.4.0

操作系统:linux redhat 6.4

问题描述:

在实例为hsdb1创建可以连接远程实例dwdb 的 dblink ,查询实例dwdb下的数据报错。

创建脚本:

CREATE public DATABASE LINK hsdb1 CONNECT TO scott IDENTIFIED BY Tiger
USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.151)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = dwdb)))';

错误信息如下:

Clipboard Image.png

问题分析

ORA-02085 解决办法 :

// *Cause: a database link connected to a database with a different name.
// The connection is rejected.
// *Action: create a database link with the same name as the database it
// connects to, or set global_names=false.
//

2)从报错信息的描述上已经可以得到问题的原因和处理方法
错误原因:使用的dblink名字与要连接的数据库名字不相同
处理方法:有两种处理方法
第一种处理方法:创建与对方数据库名字相同的dblink
第二种处理方法:调整数据库参数global_names值为false,取消这种限制


global_names和global_name看起来很相似,global_names的作用是创建db link时是否强制使用远程数据库的global_name,如果global_names=true否,则db link name必须要求是remote database的global_name,否则创建之后db link 不能连同 。


验证:

Clipboard Image.png

问题解决

1.登录实例hsdb1对应的用户执行如下脚本:

alter system set global_names=FALSE;


Clipboard Image.png


2。创建和对方数据库名字相同的dblink

select * from global_name;

Clipboard Image.png


补充:

Oracle DBLink创建和维护以及ORA-02085 解决办法

Creating Database Links

Clipboard Image.png


如果多个用户共享一个DBlink 创建脚本

--sys用户创建

CREATE SHARED PUBLIC database link DWDB
CONNECT TO ADM IDENTIFIED BY FoticAdm
AUTHENTICATED BY ADM IDENTIFIED BY FoticAdm
USING'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.7.54.21)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dwdb)
)
)';
推荐 0
本文由 我是最优雅的杀手,不杀人专杀狗 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册