我正在使用 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)
)
)
连接到MYDATABASE.EXAMPLE.COM
服务可以在本机上与 SQL Developer、SQL Plus、TNSPING 等一起使用,但我找不到在 JDeveloper 数据库连接中指定此服务而不强制指定主机的方法。
我不想指定主机的原因与我们首先使用 TNS 的原因相同 -testdb.example.com
主机会随着时间的推移而改变,但MYDATABASE.EXAMPLE.COM
TNS 服务标识符不会。
如果我指定主机testdb.example.com
加上正确的 TNS 别名,连接就可以正常工作。如果我指定wrong标识符,它失败了 - 它肯定知道我的 tnsnames.ora 文件的内容。
类似的帖子this one http://java.sogeti.nl/JavaBlog/2008/02/03/oracle-thin-jdbc-to-tns-name/似乎建议如果 JDeveloper 知道 TNS_ADMIN,它将使用tnsnames.ora
,但即使使用“输入自定义 JDBC URL”也不起作用,使用如下字符串:
jdbc:oracle:thin:MYDATABASE.EXAMPLE.COM
它仍然给出“请输入主机名的有效值”错误。
有谁知道如何在 JDeveloper 中创建数据库连接而不指定主机?