在使用OJDBC 23(通过druid)连接某个Oracle实例的某个用户时,报错⚠️:
ORA-01005: null password given; logon denied
密码当然是给了的。
同时该实例(可能是Oracle19)其它用户连接正常。
上网查了一下,好些说需要换低版本驱动。
再查发现这个问题在10年前就有人问起。
继续查可以设置oracle.jdbc.thinLogonCapability=o3
。
似乎是服务端用户设置了什么安全方式,触发了ojdbc thin 驱动的一个古老问题。
System.setProperty("oracle.jdbc.thinLogonCapability","o3");
。OJDBC 21
设置oracle.jdbc.thinLogonCapability=o3
后,Oracle19那边正常了。
又偶然发现测试的Oracle12服务器,连接报错⚠️:
ORA-28040: No matching authentication protocol
同样密码是正确的,Toad等工具正常连接,连接Oracle11服务器正常。
System.setProperty("oracle.jdbc.thinLogonCapability","o3");
。蛤?%Oracle_Home\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora
中添加:SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8