使用Database Link遇到ORA-01017,ORA-02063

来源:互联网 发布:android放弃java 编辑:程序博客网 时间:2024/04/30 11:44

源数据库:Oracle 10.2.0.1(密码大小写不敏感,即不区分)

目标数据库:Oracle 11.2.0.3(密码大小写敏感,即区分)

-----------------------------------------------------------------------

在10g数据库上创建了一个dblink连接到11g数据库,前几天还用的好好的,结果今天再用就不行了:

fxq@ISTAML> select * from tab@oadb;select * from tab@oadb                  *ERROR at line 1:ORA-01017: invalid username/password; logon deniedORA-02063: preceding line from OADB

提示是用户密码不对,但是如果在10g数据库上使用用户密码直接登录11g数据库是没问题的:

fxq@oauser> conn oauser/oauser@oadbConnected.

回顾一下这两天在目标数据库上做过的修改,只是把11g的oauser用户的密码由大写改为了小写,但是我也同时更新了10g上的dblink里面的用户密码为小写,结果今天使用时报错。

想起以前使用较低版本的TOAD连接11g数据库时也会出现提示密码错误的情况,但是在10g环境中却不存在此类错误,原因是用户的密码被这些工具自动地转换为大写所致。于是怀疑在10g数据库中创建的dblink的用户密码也被Oracle自动地转换为大写保存所致,而恰好以前11g这用户密码是大写的,所以之前能使用;而现在修改为小写后,10g数据库这任然还是以大写保存密码,所以由于11g上密码大小写敏感,就出现了用户密码错误的情况。那么使用双引号在dblink的创建语句中明确的指定密码的大小写,如下:

create database link oadb connect to oauser identified by "oauser" using 'oadb';

此时再次验证发现该dblink可用,果然是密码自动大写的问题:

fxq@ISTAML> select * from tab@oadb where 1=2;no rows selected

总结:改问题由两种解决方法

1、就是把11g的安全设置为密码大小写不敏感(不推荐):

alter system set sec_case_sensitive_logon=false;
2、就是如上例所示,在dblink这显示指定密码大小写(推荐)。





原创粉丝点击