支持 Java 8 并在 Tomcat 8.5 上运行的 Oracle Jdbc 驱动程序版本

Version of Oracle Jdbc Driver which supports Java 8 and runs on Tomcat 8.5

我想知道支持 java8 和 Tomcat 8.5 的 ojdbc 版本。目前我正在使用 ojdbc14_g.jar,这会在我启动应用程序时出现版本兼容性问题。这适用于 Tomcat 7 但不适用于 Tomcat 8.5。

这适用于 Tomcat 7 但不适用于 Tomcat 8.5。

只需执行驱动程序,它会告诉你:

  • 支持的JDK版本

    驱动程序名称中的数字标识支持的 JRE - ojdbc8 => Java8

  • 支持JDBC标准

  • 支持的数据库服务器版本

注意:Oracle 应该 支持off-by-one 主要数据库版本。因此驱动程序版本 Oracle 11.2.0.4 应该能够连接到 10g、11g、12c(至少 12.1)。

$ java -jar ojdbc6.jar
Oracle 11.2.0.4.0 JDBC 4.0 compiled with JDK6 on Thu_Jul_03_18:17:32_PDT_2014
#Default Connection Properties Resource
#Mon Jun 10 20:13:06 CEST 2019

$ java -jar ojdbc8.jar
Oracle 12.2.0.1.0 JDBC 4.2 compiled with javac 1.8.0_91 on Tue_Dec_13_06:08:31_PST_2016
#Default Connection Properties Resource
#Mon Jun 10 20:13:17 CEST 2019

***** JCE UNLIMITED STRENGTH IS INSTALLED ****

如果您在使用旧的 JDBC 驱动程序连接时遇到问题,您可以在服务器的 sqlnet.ora 中设置 SQLNET.ALLOWED_LOGON_VERSION。这可能有效,但您还必须处理数据库端支持的密码格式。参见 ALLOWED_LOGON_VERSION。如果您没有以正确格式将用户密码存储在数据库中,用户将无法进行身份验证。

ALLOWED_LOGON_VERSION_SERVER 参数还与密码的保存格式有关。以及更改密码时会生成哪些类型的密码哈希。恕我直言,您应该避免以原始 10g 格式存储密码。您可以使用此 SQL:

获取用户密码哈希详细信息
SQL> select username, PASSWORD_VERSIONS from dba_users;

USERNAME                       PASSWORD_VERSIONS
------------------------------ -----------------
SYS                            10G 11G 12C
    <!-- https://mvnrepository.com/artifact/com.oracle.ojdbc/ojdbc8 -->
    <dependency>
        <groupId>com.oracle.ojdbc</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>19.3.0.0</version>
    </dependency>

这对我有用。