美文网首页
OJDBC连接错误:Got minus one from a r

OJDBC连接错误:Got minus one from a r

作者: 孤潭云影 | 来源:发表于2020-04-10 15:37 被阅读0次

    网上列举的错误原因多数是说数据库连接数满、用户名密码错误或者用户被列入黑名单,也有建议更换OJDBC版本,但经过实际的测试,以上几种错误都会抛出对应的java.sql.SQLException,例如:

    java.sql.SQLException: ORA-01017: invalid username/password; logon denied
    

    经过debug和抓包,发现该错误实际上出现在创建tcp连接后,开始与oracle服务器通讯时,由于报文中Connect Data 错误,服务器主动关闭tcp连接所致。
    其中比较常见的原因是由于PhysicalConnection.thinVsessionOsuser属性中包含特殊字符引起的,该属性默认会获取windows用户名,部分带有特殊字符的用户名在拼接到Connect Data会引起解析错误,例如我遇到的例子中,实际拼接的用户名为1)·,导致括号匹配错误:

    Connect Data: (DESCRIPTION=(CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=1)·)))(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
    

    解决方案为在添加如下代码:

    static {
      System.setProperty("user.name","jdbcuser");
    }
    

    相关文章

      网友评论

          本文标题:OJDBC连接错误:Got minus one from a r

          本文链接:https://www.haomeiwen.com/subject/ndprmhtx.html