Java 奇数Oracle连接URL
我们的一位客户正在尝试使用以下JDBC URL连接到Oracle数据库:Java 奇数Oracle连接URL,java,oracle,jdbc,Java,Oracle,Jdbc,我们的一位客户正在尝试使用以下JDBC URL连接到Oracle数据库: jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)LOAD_BALANCE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=server1.domain.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=server2.domain.com)(PORT=1521)))(CONNECT_DATA=(SE
jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)LOAD_BALANCE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=server1.domain.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=server2.domain.com)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=FOO)))
他们得到了这个错误:
Caused by: oracle.net.ns.NetException: NL Exception was generated
at oracle.net.resolver.AddrResolution.resolveAddrTree(AddrResolution.java:614) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:411) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:237) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
问题:
语法为“Oracle Net connection descriptor语法”,请参见中的表8.3 语法确实与
tnsnames.ora
中使用的语法相同;中描述了此语法
至于具体问题,在我看来,描述符中有不平衡的括号,特别是:
(FAILOVER=ON)LOAD_BALANCE=OFF)
应该是:
(FAILOVER=ON)(LOAD_BALANCE=OFF)
(注意附加的
(
)我从您的tnsnames条目生成了以下连接URL:
jdbc:oracle:thin:@server1.domain.com:1521/FOO
尝试使用上面的连接URL。
还要检查侦听器是否已启动并正在运行:
在windows:ctrl+r、services.msc
中,检查服务:“Oracle*TNSListener”是否已启动
jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)LOAD_BALANCE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=server1.domain.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=server2.domain.com)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=FOO)))
tnsnames条目是什么样子的?您能tnsping FOO吗?它是“Oracle Net connection descriptor syntax”,请参阅中的表8.3。至于我认为您缺少
(
beforeLOAD\u BALANCE
如上所述。我们也在使用这些连接。如果其中一个到地址列表中的服务器关闭,它会进行故障转移。它使用服务名称FOO连接到其中一个服务器。我也遇到了同样的问题,因为我在连接字符串中留下了/
,即jdbc:oracle:thin:@//(DESCRIPTION…
而不是jdbc:oracle:thin:@(DESCRIPTION…
)。