Oracle11g的密碼默認是區分大小寫的,該特性通過初始化參數sec_case_sensitive_logon控制,默認TRUE表示區分大小寫。但是Oracle11g之前的版本密碼都是不區分大小寫的,所以在Oracle10g等以前版本創建到Oracle11g的database link時,可能會碰到以下問題:
10g> create database link oracle11g
2 connect to ning identified by ning
3 using ’11g’;
Database link created.
10g> select * from v$version@oracle11g;
select * from v$version@oracle11g
*
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from ORACLE11G
密碼肯定是正確的
10g> conn ning/ning@11g;
Connected.
11g>
出現這個問題,應該是在10g中創建database link的時候密碼是以全部大寫的方式使用的,但是11g中的用戶密碼實際上是小寫的。在以前版本中由于不區分大小寫,所以沒有問題。到了11g問題就出現了,密碼不對^_^
解決辦法
1.在創建database link是將用戶名和密碼都以雙引號引起來,這樣密碼就是安裝輸入字符使用的,不會轉換成大寫
10g> create database link oracle11g2
2 connect to “ning” identified by “ning”
3 using ’11g’;
Database link created.
10g> select * from v$version@oracle11g2;
BANNER
——————————————————————————–
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – Production
PL/SQL Release 11.1.0.6.0 – Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 – Production
NLSRTL Version 11.1.0.6.0 – Production
2.停用Oracle11g區分密碼大小寫的特性,但是不推薦
11g>alter system set sec_case_sensitive_logon=false;
System altered
10g> select * from v$version@oracle11g;
BANNER
——————————————————————————–
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – Production
PL/SQL Release 11.1.0.6.0 – Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 – Production
NLSRTL Version 11.1.0.6.0 – Production