当前位置: 首页 > 知识库问答 >
问题:

无法使用19.3 JDBC驱动程序连接到Oracle 19.3

子车文康
2023-03-14

我们有一个使用Oracle 19.3数据库运行的项目,以及一个使用Oracle 19.3 JDBC驱动程序(在Maven Central上可用)的Java应用程序。在带有JRE1.8的Windows上,一切都很好,但当我运行在构建服务器上或在带有OpenJDK11.0.3的WSL Ubuntu中时,它拒绝连接到数据库。具体地说:

ERROR: Unexpected error
java.sql.SQLRecoverableException:
Unable to obtain connection from database (jdbc:oracle:thin:@//<host>:<port>/<db>) for user '<user>': IO Error: Invalid argument, Authentication lapse 0 ms.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL State  : 08006
Error Code : 17002
Message    : IO Error: Invalid argument, Authentication lapse 0 ms.

        at JuliasApplication.openConnection(JdbcUtils.java:60)
        ...
Caused by: java.sql.SQLRecoverableException: IO Error: Invalid argument, Authentication lapse 0 ms.
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:874)
        at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:793)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:57)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:747)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:562)
        ...
Caused by: java.io.IOException: Invalid argument, Authentication lapse 0 ms.
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:870)
        ... 12 more
Caused by: java.io.IOException: Invalid argument
        at java.base/sun.nio.ch.SocketChannelImpl.sendOutOfBandData(Native Method)
        at java.base/sun.nio.ch.SocketChannelImpl.sendOutOfBandData(SocketChannelImpl.java:521)
        at java.base/sun.nio.ch.SocketAdaptor.sendUrgentData(SocketAdaptor.java:323)
        at oracle.net.nt.TcpNTAdapter.sendUrgentByte(TcpNTAdapter.java:433)
        at oracle.net.ns.NSProtocolNIO.negotiateConnection(NSProtocolNIO.java:159)
        at oracle.net.ns.NSProtocol.connect(NSProtocol.java:340)
        at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1596)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:588)
        ... 12 more

如果切换到18.3JDBC驱动程序,在这两种环境中一切都很好;如果我切换到18.3数据库,在这两种环境中一切都很好。这确实给了我们一个解决办法,但我们不明白是怎么回事,这让人很不舒服。我在网上找不到任何关于“认证失效”的信息。有人能看出什么线索来解释这次失败吗?

共有1个答案

窦啸
2023-03-14

看起来底层套接字实现不允许OOB。作为一种解决办法,您可以通过将连接属性CONNECTION_PROPERTY_THIN_NET_DISABLE_OUT_OF_BAND_BREAK设置为“true”来禁用OOB检查。请参阅此链接:https://docs.oracle.com/en/database/oracle/oracle-database/20/jajdb/oracle/jdbc/oracleconnection.html#connection_property_thin_net_disable_out_of_band_break

 类似资料:
  • 我使用的是Java8、Spark 2.1.1、Ignite2.5和BoneCP 0.8.0 结果出现以下异常: 提交脚本如下所示: 当使用“本地”Spark实例时,它使用think JDBC驱动程序连接到Ignite。有什么想法吗?

  • 代码: 输出: Traceback(最近一次调用last):文件“C:/Users/RV CSP/pycharm projects/untitled 25/hotel . py”,第9行,在session = cluster.connect('dbsi ')文件“C:\ Users \ RV CSP \ AppData \ Roaming \ Python \ Python 36 \ site-p

  • 我目前正在创建一个API,它使用具有3个节点的Cassandra集群来存储数据。我使用PHP 5.6.17、Cassandra 2.2.3和Datastax PHP Driver 1.1.0在本地机器上开发它,一切都很顺利。 但是,我们决定迁移到远程 Cassandra 集群(带有本机协议 4 的 3.4),我无法通过 PHP 访问它,因为我收到以下错误:发生错误:16777226 - 没有可用于

  • 我想从Linux实例使用TLS1.2连接到我的数据库实例,但我无法这样做。我使用以下配置: < Li > Java JDK:Amazon corretto open JDK版本:" 1.8.0_252" < li>JDBC驱动程序:Microsoft SQL server MSSQL-JDBC:8 . 2 . 2 . JRE 8 < li >连接字符串:JDBC:SQL server://[我的数

  • 问题内容: 我正在尝试连接到在Java程序中使用MySQL创建的数据库,但是它总是失败。 为了举例,这是我的代码: 我能够从IntelliJ中连接到数据库,并将添加的内容添加到项目中,但是每次我运行程序时都会抛出此错误: 问题答案: 可能是因为您使用的是旧版的MySQL驱动程序。您应该尝试使用最新版本。 要获取最新版本,可以检查https://mvnrepository.com/artifact/

  • 我试图建立一个SSL连接到赛贝斯ASE 15.7使用JDBC驱动程序没有运气。我尝试了以下选项: > 使用JTDS 1.25驱动程序(jtds-1.2.5.jar) 使用以下连接字符串: 我收到 使用jconnect4(jconn4.jar) 使用以下连接字符串: jdbc:sybase:Tds:host:port/dbname?ENABLE_SSL=true 我得到了