我正在使用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别名,则连接有效。如果我指定了错误的标识符,它就会失败 - 它肯定知道我的tnsnames.ora文件的内容。
像this one这样的帖子似乎暗示如果JDeveloper知道TNS_ADMIN,它将使用tnsnames.ora
,但即使使用“输入自定义JDBC URL”也不起作用,使用如下字符串:
jdbc:oracle:thin:MYDATABASE.EXAMPLE.COM
它仍然提供“请输入主机名的有效值”错误。
有人知道如何在JDeveloper中创建数据库连接而不指定主机吗?
答案 0 :(得分: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应该做的伎俩(虽然我还没试过)。