当我尝试使用JDBC长TNSNAME样式URL连接数据库服务器时出现问题。我们有两个Oracle集群服务器。这是我的TNSNAME样式网址。
jdbc:oracle:thin:@(DESCRIPTION=
(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1250))
(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1250))
)
(CONNECT_DATA=
(SERVICE_NAME= DEV1)
)
)
我的问题是当我们的DBA创建数据库时,他为host1和host2使用了不同的服务名称。 host1是DEV1,host2是DEV2_B,如果我切换主机序列,它似乎无法工作。像
jdbc:oracle:thin:@(DESCRIPTION=
(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1250)) /*host2 now come first, it would be cause connect failure.*/
(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1250))
)
(CONNECT_DATA=
(SERVICE_NAME= DEV1)
)
)
我认为在这种情况下,故障转移和负载平衡是没用的。我的问题是,如何在我的URL中单独设置service_name? (这两个DB也使用不同的SID.DEVA和DEVB) 请帮助,谢谢。
答案 0 :(得分:1)
(DESCRIPTION_LIST=
(FAILOVER=true)
(LOAD_BALANCE=false)
(DESCRIPTION=
(ADDRESS= (PROTOCOL=TCP) (HOST=TEST_DB) (PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=saibal)))
(DESCRIPTION=
(ADDRESS= (PROTOCOL=TCP) (HOST=MY_DB) (PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME= test_saibal))
)