3

我正在尝试使用 Oracle JDBC 瘦驱动程序(用于 11.2.0.2.0 的 ojdbc6.jar)和以下 JDBC URL 语法连接到 Oracle (11.2.0.2.0) 数据库:

jdbc:oracle:thin:@abcd

其中“abcd”在我的 tnsnames.ora 文件中定义,如下所示:

    abcd, abcd.world, abcd.dk.xyz.com  =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = abcd)
    )
  )

-Doracle.net.tns_admin=/etc/tnsnames.ora根据Oracle® Database JDBC Developer's Guide and Reference提供了 VM 选项。

运行应用程序时出现以下错误:

    Listener refused the connection with the following error:
ORA-12504, TNS:listener was not given the SID in CONNECT_DATA

但是当我从 tnsnames.ora 中删除别名 abcd.world 和 abcd.dk.xyz.com 时,我的应用程序能够连接到数据库。

当 tnsnames.ora 文件中有多个别名时,ojdbc 驱动程序是否存在问题?

我的 JDK 版本是 1.6.0_31。

谢谢,VJ

4

3 回答 3

5

看起来,Oracle JDBC 驱动程序不能使用多个服务名称。使用这些条目

    abcd =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = abcd)
    )
  )
    abcd.world, abcd.dk.xyz.com  =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = abcd)
    )
  )
于 2013-10-31T08:39:56.567 回答
0

我可以通过以下方式通过 tnsnames.ora 成功连接到 oracle

  1. 下载并解压flyway

  2. 从 oracle 站点下载最新的 ojdbcX.jar

  3. 将驱动程序目录中的文件放入flyway文件夹

  4. 将 flyway 文件夹(您可以在其中找到 flyway cli 脚本)放在路径中(es:在 linux 上 export PATH=/home/matteo/opt/flyway

  5. 编辑 flyway 二进制文件 /home/matteo/opt/flyway/flyway 放入 JAVA_ARGS="-Doracle.net.tns_admin= 指向包含 tnsnames.ora 的文件夹

  6. 注意:Linux 的 flyway 脚本在以下行中有一个错误 JAVA_ARGS="-Djava.security.egd=file:/dev/../dev/urandom $JAVA_ARGS" 您需要附加 $JAVA_ARGS 才能不被覆盖

  7. 编辑项目文件夹中的文件,如您希望的那样命名,例如 flyway.conf

  8. 使用此命令测试 flyway

    flyway -configFile=flyway.conf 信息

我收到这个输出

Boxfuse 的 Flyway 4.0.3

数据库:jdbc:oracle:thin:@PSR.LAB_CERT (Oracle 11.2)

+---------+-------------+---------+--- ------+

| 版本 | 说明 | 安装于 | 状态 |

+---------+-------------+---------+--- ------+

| 未找到迁移 |

+---------+-------------+---------+--- ------+

于 2016-07-15T08:49:30.670 回答
-1

理想情况下,您不应该通过 TNS 连接,因为您需要在您的机器上安装 oracle 客户端。

如果您使用如下连接 url,则不需要 oracle 客户端:

jdbc:oracle:thin:@//host:port/service_name
于 2013-01-25T10:53:21.813 回答