我使用的是 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/