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

前端之家收集整理的这篇文章主要介绍了ORA-01017/ORA-02063 DbLink建立错误问题分析及解决前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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.

原文链接点击打开链接 原文链接:https://www.f2er.com/oracle/213400.html

猜你在找的Oracle相关文章