【问题标题】:Verifying that OJDBC drivers are updated correctly in weblogic?验证 Weblogic 中的 OJDBC 驱动程序是否正确更新?
【发布时间】:2018-04-23 22:25:04
【问题描述】:

我们已将 Oracle 数据库升级到版本 12。我们有一个 Java 应用程序在 Weblogic 12.1.2.0.0 上运行 Java 7,并使用驱动程序类名称进行数据库连接:oracle.jdbc.OracleDriver

如果我在我的 weblogic 安装文件夹 C:\Oracle\Middleware\Oracle_Home 中进行搜索,我在任何地方都找不到任何 ojdbc7.jar 驱动程序,但是我可以在位置 C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc_11.2.0 中找到 ojdbc6.jar

我正在尝试升级到ojdbc7.jar。根据网站Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server,我需要在我的类路径上设置以下驱动程序:

  • ojdbc7.jar
  • ojdbc7_g.jar
  • ojdbc7dms.jar
  • ons.jar
  • oraclepki.jar
  • orai18n.jar
  • orai18n-mapping.jar
  • osdt_cert.jar
  • osdt_core.jar
  • ucp.jar

我从here 下载了前几个,其余的我已经在我的 weblogic 安装文件夹中找到了。我将它们复制到一个文件夹D:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7

然后我将所有 jars 添加到我的类路径中:

D:\Oracle\Middleware\Oracle_Home\oracle_common\common\bin\commEnv.cmd

set WEBLOGIC_CLASSPATH=C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\ojdbc7.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\ojdbc7_g.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\ojdbc7dms.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\ons.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\oraclepki.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\orai18n.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\orai18n-mapping.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\osdt_cert.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\osdt_core.jar;C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.jdbc7\ucp.jar;D:\Oracle\Middleware\Oracle_Home\oracle_common\modules\oracle.pki_12.1.2;%JAVA_HOME%\lib\tools.jar;%PROFILE_CLASSPATH%;%ANT_HOME%/lib/ant-all.jar;%ANT_CONTRIB%/lib/ant-contrib.jar;%CAM_NODEMANAGER_JAR_PATH%

我还访问了我的服务的 Windows 注册表,并将相同的 jar 添加到我的 CLASSPATH cmd 行参数中。

如果我的应用程序启动,我可以看到 jars 在我的类路径中。

但是我如何验证实际使用了哪些 ojdbc 驱动程序? 这是更新驱动程序的正确方法吗?

(现在在人们开始说我们不应该再运行 Java 7 应用程序之前......这是一个很快就会被替换的遗留应用程序,但现在这是我必须使用的 :))

【问题讨论】:

    标签: java oracle weblogic weblogic12c ojdbc


    【解决方案1】:

    但是我如何验证实际使用了哪些 ojdbc 驱动程序?

    你可以问驱动getMetaData方法。

    相关部分的简单示例(conn是数据库连接)。

    md = conn.getMetaData();
    println (md.getDriverVersion());
    

    这给出了例如

     12.1.0.2.0
    

    这是您在使用的驱动程序 jar 的 META-INF/MANIFEST.MF 文件中找到的版本。

    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.1
    Created-By: 20.75-b01 (Sun Microsystems Inc.)
    Implementation-Vendor: Oracle Corporation
    Implementation-Title: JDBC
    Implementation-Version: 12.1.0.2.0 
    

    更新 JDBC 环境时重要的是检查JDBC Compatibility Matrix

    【讨论】:

      【解决方案2】:

      您有正确的文档链接。查看该页面,它说要自定义安装客户端工具包。这意味着您需要从该工具包中获取所有列出的 jar 文件。您不能使用工具包中的新 ojdbc7.jar 文件和 WLS 附带的 ucp.jar 文件。他们需要是一个匹配的集合。 如果您使用的是 FMW 或 FA,则需要使用 ojdbc7dms.jar。否则,使用 ojdbc7.jar。 ojdbc7_g.jar 仅用于调试。

      使用 conn.getMetaData().getDriverVersion() 会告诉您正在使用的 ojdbc7.jar 的版本,但不会告诉您有一组不匹配的 jar 文件。

      【讨论】:

      • 我可以从这里 (docs.oracle.com/cd/E24329_01/web.1211/e24367/…) 找到以下驱动程序 ojdbc7.jar、ojdbc7_g.jar、orai18n.jar 和ons.jar,但不能找到其他驱动程序。我还需要剩下的吗?如果我只将上述内容应用于类路径......当它需要那些我没有添加到类路径中时,它仍然会在路径上找到现有的。这会导致任何问题吗?
      • 官方的回答是肯定的,你需要一套完整的配套才有支持的配置。如果您没有匹配的集合,您可能会遇到难以追踪的潜在错误。它最终取决于您的应用程序正在使用哪些功能以及这些功能访问哪些类。此外,ons.jar 文件实际上有两个分支,如果你弄错了,那就是个问题。有很多东西依赖于 ucp.jar。如果使用安全连接,则需要 3 个安全 jar 文件。使用 XML,您需要 xdb jar 文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2015-10-20
      • 1970-01-01
      • 2018-11-09
      • 2019-09-13
      相关资源
      最近更新 更多