2

我正在使用 Oracle JDeveloper 11.1.1.4.0,只要指定主机,我就可以Oracle (JDBC)使用驱动程序创建数据库连接(类型为 )而不会出现任何问题。thin

例如,我可以通过指定以下内容连接到本地运行的 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)
    )
  )

与此机器的 SQL Developer、SQL Plus、TNSPING 等服务的连接,MYDATABASE.EXAMPLE.COM但我找不到在 JDeveloper 数据库连接中指定此功能的方法,而无需强制指定主机。

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

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

像这样的帖子似乎表明,如果 JDeveloper 知道 TNS_ADMIN,它将使用tnsnames.ora,但即使使用“输入自定义 JDBC URL”也不起作用,使用如下字符串:

jdbc:oracle:thin:MYDATABASE.EXAMPLE.COM

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

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

4

1 回答 1

2

根据 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 应该可以解决问题(尽管我还没有尝试过)。

于 2011-04-12T10:34:08.337 回答