gpt4 book ai didi

java - 使用 Java 连接到 Oracle 集群

转载 作者:搜寻专家 更新时间:2023-11-01 01:39:03 25 4
gpt4 key购买 nike

我们有一对 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)
)
)

当我连接到使用 tnsnames.ora 文件的程序时,这会起作用。但是,我还有一个使用 oracle.jdbc.pool.OracleDataSource 的 Java 程序。建立连接的类

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();
}

它直接连接到其中一个节点。我想改为使用负载平衡 tnsnames.ora 方法,它使用负载平衡或其他任何方式连接到其中一个节点,这样如果其中一个节点出现故障,那么它'将自动连接到另一个。

因为我只有两个节点,所以我可以轻松地尝试打开与第一个节点的连接,如果这不起作用,则打开与第二个节点的连接。但是,我想知道是否有更正确的方法来执行此操作。

我看到有一个 setTNSEntryName 参数,但由于我的 tnsnames.ora 位于非标准位置,我需要设置 TNS_ADMIN 环境变量,我不确定我什至可以在 Java 中做到这一点。我也不确定这在任何情况下都有效。

有谁知道如何从 Java 程序连接到 Oracle 节点集群?

最佳答案

对于 Oracle JDBC 瘦驱动程序,我认为这可以用作连接 url:

jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.4) (PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.5) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=example.gov)))

使用方法setUrl 设置url。如果设置了 URL,将忽略所有其他属性,如数据库名称、服务器名称、端口号、网络协议(protocol)、tnsentry 和驱动程序类型。

希望这对您有所帮助!

关于java - 使用 Java 连接到 Oracle 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2142211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com