【问题标题】:coldfusion v 10 std unable to connect to oracle via jdbc oci driverColdfusion v 10 std 无法通过 jdbc oci 驱动程序连接到 oracle
【发布时间】:2016-11-17 11:00:12
【问题描述】:

我正在尝试在 Coldfusion v 10 std 服务器上建立与 Oracle 数据库的 jdbc-oci 连接。

使用 jdbc oci 的原因是需要加密在应用服务器和数据库之间流动的数据(通过使用 sqlnet.ora 中的通用设置)。但是,无论我们尝试什么语法,服务都不是 基于或基于 tnsnames 的 jdbc url 将起作用。保存(并自动测试)连接后,coldfusion 立即出错并显示“java.sql.SQLException:尝试建立连接时超时”。

看起来很奇怪,可能发生了超时,因为错误总是会立即抛出。因此,我认为建立连接失败还有另一个根本原因。

有什么想法吗?

请注意,我们在 Coldfusion 之外使用控制台应用程序模拟了连接建立,但成功使用了相同的 jvm 和 jdbc 驱动程序。因此,它似乎不是 jvm 或驱动程序或 oci.dll 相关问题。

  • 数据源设置:

    • 驱动类:oracle.jdbc.driver.OracleDriver
    • JDBC URL(使用 tnsnames.ora):jdbc:oracle:oci:@<theName>
    • JDBC URL(使用 ip、端口、服务):jdbc:oracle:oci:@//<IP>:1521/<SID>
  • 错误信息:

    • 数据源的连接验证失败:theName
      java.sql.SQLException:尝试建立连接时超时
      根本原因是:java.sql.SQLException:尝试建立连接时超时
  • 环境:

    • ojdbc6 驱动程序位于coldfusion 已知的目录中
    • oci.dll 位于系统路径变量已知的目录中,由 Coldfusion 服务上的 sysinternals processexplorer 验证
    • 对于 JDBC URL(使用 tnsnames.ora),包含 tnsnames.ora 的目录称为系统变量 TNS_ADMIN,由 Coldfusion 服务上的 sysinternals processexplorer 验证
    • 除了 tnsnames.ora 之外,还有一个 sqlnet.ora 文件,其中包含用于打开数据加密的设置

堆栈跟踪:

从“datasource-name here”请求连接时发生非 SQL 错误。 尝试建立连接超时

Exception in thread "Thread-2120" java.lang.UnsatisfiedLinkError: no ocijdbc11 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3560)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3556)
    at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:269)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)
    at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:165)
    at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:53)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
    at coldfusion.server.j2ee.sql.pool.JDBCPool.createPhysicalConnection(JDBCPool.java:614)
    at coldfusion.server.j2ee.sql.pool.ConnectionRunner$RunnableConnection.run(ConnectionRunner.java:67)
    at java.lang.Thread.run(Thread.java:722)
A non-SQL error occurred while requesting a connection from "datasource-name here".
Timed out trying to establish connection
[Fatal Error] :2662:4: The element type "view" must be terminated by the matching end-tag "</view>".

【问题讨论】:

  • 你能发布 SQLException 的整个堆栈跟踪吗?
  • 请编辑您的帖子和那里的堆栈跟踪,不要使用 cmets。

标签: oracle jdbc coldfusion driver oracle-call-interface


【解决方案1】:

在配置文件 cf-directory\cfusion\bin\jvm.config 中添加 oracle 即时客户端的路径解决了这个问题。

【讨论】:

  • 发布一个示例,说明添加到 jvm.config 的路径(以及在哪里)将对遇到此问题的下一个人有所帮助:)
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多