Не удается подключиться к Oracle 19.3 с драйвером JDBC 19.3 - PullRequest
1 голос
/ 10 октября 2019

У нас есть проект, работающий с базой данных Oracle 19.3, и приложение Java, использующее драйвер JDBC Oracle 19.3 (который доступен в Maven Central). В Windows с JRE 1.8 все хорошо, но когда я запускаю либо на нашем сервере сборки, либо в WSL Ubuntu с OpenJDK 11.0.3, он отказывается подключаться к базе данных. В частности:

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

Если я включу драйвер JDBC 18.3, то все нормально в обеих средах;если я переключаюсь на базу данных 18.3, то все хорошо в обеих средах. Это действительно дает нам обходной путь, но нам очень неудобно, что мы не понимаем, что происходит. И я не могу найти что-нибудь в Интернете о «истечении срока аутентификации». Кто-нибудь может увидеть какие-либо подсказки, которые могли бы объяснить неудачу?

1 Ответ

0 голосов
/ 17 октября 2019

Вы должны использовать ojdbc10.jar, который совместим с JDK10. Обратитесь к FAQ (Какие версии Oracle JDBC против версий JDK?) для получения более подробной информации.

19,3 ojdbc10.jar с JDK10, JDK11 и ojdbc8.jar с JDK8, JDK9, JDK11 18,3 ojdbc8.jar с JDK8, JDK9, JDK10, JDK11

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...