oracle - 在 Oracle JDeveloper 中使用纯 TNSNAMES 而不是基于主机的数据库连接

标签 oracle jdeveloper tnsnames

我使用的是 Oracle JDeveloper 11.1.1.4.0,我可以使用 thin 驱动程序创建数据库连接(类型为 Oracle (JDBC)),而无需只要我指定主机就可以解决任何问题。

例如,我可以通过指定以下方式连接到本地运行的 Oracle XE 数据库:

Driver: thin
Host Name: localhost
JDBC Port: 1521
Service Name: XE

为了连接到远程数据库,我使用 TNS,并且我的 tnsnames.ora 文件设置如下,其中 MYDATABASE.EXAMPLE.COM 是 Oracle 服务标识符我想用。

MYDATABASE.EXAMPLE.COM=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=testdb.example.com)
      (PORT=1234)
    )
    (CONNECT_DATA=
      (SERVICE_NAME=MYDATABASE.example.com)
    )
  )

MYDATABASE.EXAMPLE.COM 服务的连接可在 native 上与 SQL Developer、SQL Plus、TNSPING 等一起使用,但我找不到在 JDeveloper 数据库连接中指定此连接的方法,除非被迫指定主机。

我不想指定主机的原因与我们首先使用 TNS 的原因相同 - testdb.example.com 主机会随着时间的推移而改变,但是MYDATABASE.EXAMPLE.COM TNS 服务标识符不会。

如果我指定主机 testdb.example.com 以及正确的 TNS 别名,则连接可以正常工作。如果我指定错误标识符,它就会失败 - 它肯定知道我的 tnsnames.ora 文件的内容。

类似 this one 的帖子似乎建议如果 JDeveloper 知道 TNS_ADMIN,它将使用 tnsnames.ora,但即使使用“输入自定义 JDBC URL”也不起作用,使用如下字符串:

jdbc:oracle:thin:MYDATABASE.EXAMPLE.COM

它仍然给出“请输入主机名的有效值”错误。

有人知道如何在 JDeveloper 中创建数据库连接而不指定主机吗?

最佳答案

根据 Oracle JDBC 开发人员指南,您需要通过 (JVM) 系统属性指定 tnsnames.ora 文件的位置,以便能够将 tnsnames 与瘦驱动程序一起使用:

http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/urls.htm#BEIDIJCE

您需要以定义系统属性 oracle.net.tns_admin 的方式启动 SQL Developer。

添加

AddVMOption -Doracle.net.tns_admin=/path/to/tnsnames.ora

到 ide.conf 应该可以解决问题(尽管我还没有尝试过)。

关于oracle - 在 Oracle JDeveloper 中使用纯 TNSNAMES 而不是基于主机的数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5633599/

相关文章:

sql - 在 SQL 中更新 n 个随机行

mysql - 使用 JDeveloper 11 将 mysql 数据库与 oracle 移动 adf 连接

oracle - Unitils 和 DBMaintainer - 如何使它们与多个用户/模式一起工作?

oracle - 命令行修改 tnsnames.ora

java - JDBC 连接适用于 Windows 但不适用于 Ubuntu

java - 从 Hibernate 调用 Oracle 存储函数

java - Jdeveloper 11g 不喜欢

asp.net-mvc-3 - 使用 ASP.NET 成员(member)提供程序从 MVC3 站点进行 TNS oracle 连接失败

显示工资变化的 SQL 触发器