加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 16:13:27 所属栏目:百科 来源:网络整理
导读:iamlaosong文 一个应用系统新增一个数据库服务器,因此需要建立一个数据链接以便访问,但链接建好后访问时总是报错,十分不解,网上找了一下,原来是版本问题。按其解决办法,访问成功。现将其内容摘抄如下,首先叙说一下我创建数据链接的正确步骤: 1、在要

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';

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.

原文链接: 点击打开链接

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读