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