我们有一对Oracle服务器,它们被设置为集群中的节点(如果我的术语离我们很远的话,很抱歉)。在我的
tnsnames.ora
文件,我们有一个看起来像
EXAMPLE.GOV =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.5)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = example.gov)
)
)
当我连接到使用
特斯纳莫斯
文件。但是,我也有一个Java程序,它使用
oracle.jdbc.pool.OracleDataSource
类以建立连接
public static Connection connect() throws Exception {
OracleDataSource ods = new OracleDataSource();
ods.setDriverType("thin");
ods.setServerName("1.2.3.4");
ods.setDatabaseName("example");
ods.setPortNumber(1521);
ods.setUser("scott");
ods.setPassword("tiger");
return ods.getConnection();
}
它直接连接到其中一个节点。我想用负载平衡来代替
特斯纳莫斯
方法,使用负载平衡或其他方法连接到其中一个节点,这样,如果其中一个节点关闭,那么它将自动连接到另一个节点。
因为我只有两个节点,所以我可以很容易地尝试打开到第一个节点的连接,如果这不起作用,那么打开到第二个节点的连接。但是,我想知道是否有一种更正确的方法可以做到这一点。
我看到有一个
setTNSEntryName
参数,但由于我的
特斯纳莫斯
在一个不标准的地方,我需要设置
TNS_ADMIN
环境变量,我不确定,我甚至可以从Java内部。我也不确定这在任何情况下都会起作用。
有人知道如何从Java程序连接到Oracle节点集群吗?