源数据库: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 denied ORA-02063: preceding line from OADB 提示是用户密码不对,但是如果在10g数据库上使用用户密码直接登录11g数据库是没问题的: fxq@oauser> conn oauser/oauser@oadb Connected. 回顾一下这两天在目标数据库上做过的修改,只是把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这显示指定密码大小写(推荐)。
--------------------- 作者:密斯特羅 来源:CSDN 原文:https://blog.csdn.net/mrluoe/article/details/8766786 版权声明:本文为博主原创文章,转载请附上博文链接!