ORA-01017/ORA-02063 DbLink建立错误问题分析及解决

本文档详细介绍了如何在Oracle数据库中正确地创建数据库链接(DBLink),并解决了因版本差异导致的连接失败问题。提供了创建DBLink的具体步骤及注意事项,并通过实例展示了如何解决因10g和11g版本差异造成的连接错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iamlaosong文

一个应用系统新增一个数据库服务器,因此需要建立一个数据链接以便访问,但链接建好后访问时总是报错,十分不解,网上找了一下,原来是版本问题。按其解决办法,访问成功。现将其内容摘抄如下,首先叙说一下我创建数据链接的正确步骤:

1、在要创建链接的数据库服务器上的 [TNSNAMES.ORA]文件添加对被链接数据库的连接字符:

ORCLG9 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ems_dl580g9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

注意其中的新增服务器(被访问的)名称ems_dl580g9要在hosts文件中做解析,否则用IP地址。

2、测试这个连接字符是否可以使用:

sqlplus emssxjk/cpemssxjk@orclg9

3、创建数据链接:

CREATE DATABASE LINK datalink_g9
CONNECT TO emssxjk IDENTIFIED BY "cpemssxjk"
USING 'orclg9';

注意:密码用双引号(不是Oracle常用的单引号)括起来。

如果没有在tnsnames.ora中配置上述“orclg9”,也可以直接写在创建语句中,即:

CREATE DATABASE LINK datalink_g9
CONNECT TO emssxjk IDENTIFIED BY "cpemssxjk"
USING '  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ems_dl580g9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )';

4、测试链接是否可以访问:

select * from dual@datalink_g9;

5、没有问题,说明数据链接创建成功。为了访问方便,可以创建表的同义词:

create synonym sy_tb_county for tb_county@datalink_g9;
select * from sy_tb_county;

================================================================

下面是网文:

 

故障介绍:

我在Oracle10.2.0.4中建立连接到11.2.0.3的DBLINK验证的时候出现如下错误:

ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from


分析错误:

从错误信息来看,是用户名和密码的错误,但是用户名和密码我确定没有问题,能够通过密码进行访问数据库。

详细回顾及出现问题及排错思路如下:

创建dblink使用的用户/密码是正确的。

SQL> conn prudent/woo@woo
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 
Connected as woo
创建dblink的数据库版本:

SQL> select * from V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production

TNS for Linux: Version 10.2.0.4.0 -Production
NLSRTL Version 10.2.0.4.0 - Production

 

ORACLE 10.2.0.4中创建到 Oracle 11.2.0.3.0 的DBLINK,创建成功

SQL> create database link woo_100
2 connect to prudent
3 identified by woo
4 using '(DESCRIPTION =
5 (ADDRESS_LIST =
6 (ADDRESS = (PROTOCOL =TCP)(HOST = 192.168.0.100)(PORT = 1521))
7 )
8 (CONNECT_DATA =
9 (SERVER = DEDICATED)
10 (SID = woo)
11 )
12 )';

但使用dblink去访问目标数据库时出错
QL> select sysdate from dual@woo;
select sysdate from dual@woo

ORA-01017: invalid username/password; logondenied
ORA-02063: preceding line from woo_100

应该是11g密码区分大小写的缘故,需要在11g中重新设置大写的密码。实际上可以不用通过修改密码的方式来解决,只需要加上“”号即可。

尝试在创建dblink时用“”把密码引起来。

SQL> create database link woo_100
2 connect to prudent
3 identified by "woo"
4 using '(DESCRIPTION =
5 (ADDRESS_LIST =
6 (ADDRESS = (PROTOCOL =TCP)(HOST = 192.168.0.100)(PORT = 1521))
7 )
8 (CONNECT_DATA =
9 (SERVER = DEDICATED)
10 (SID = woo)
11 )
12 )';

Database link created

 

SQL> alter session setnls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered

SQL> col sysdate for a20;
SQL> select sysdate from dual@woo_100;

SYSDATE
---------------------------
2013-1-28 22:48:52

测试OK.

原文链接:点击打开链接

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值