ORA-01005 vs ORA-28040

(一)ORA-01005: 给出空密码 登录被拒绝

在使用OJDBC 23(通过druid)连接某个Oracle实例的某个用户时,报错⚠️:

ORA-01005: null password given; logon denied

密码当然是给了的。
同时该实例(可能是Oracle19)其它用户连接正常。
上网查了一下,好些说需要换低版本驱动。

再查发现这个问题在10年前就有人问起。

继续查可以设置oracle.jdbc.thinLogonCapability=o3
似乎是服务端用户设置了什么安全方式,触发了ojdbc thin 驱动的一个古老问题。

(1.1)解决

  • 代码中添加System.setProperty("oracle.jdbc.thinLogonCapability","o3");
  • 或者回退驱动到 OJDBC 21

(二)ORA-28040: 没有匹配的验证协议

设置oracle.jdbc.thinLogonCapability=o3后,Oracle19那边正常了。
又偶然发现测试的Oracle12服务器,连接报错⚠️:

ORA-28040: No matching authentication protocol

同样密码是正确的,Toad等工具正常连接,连接Oracle11服务器正常。

(2.1)解决

  • 代码中删除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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值