Eli*_*ght 4 java oracle jdbc cluster-computing
我们有一对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)
)
)
Run Code Online (Sandbox Code Playgroud)
这与我使用该tnsnames.ora
文件的程序连接时有效.但是,我也有一个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();
}
Run Code Online (Sandbox Code Playgroud)
它只是直接连接到其中一个节点.我想改为使用负载平衡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)))
Run Code Online (Sandbox Code Playgroud)
使用setUrl方法设置url.如果设置了URL,则将忽略所有其他属性,如databasename,servername,portNumber,network protocol,tnsentry和driver type.
希望这可以帮助!
归档时间: |
|
查看次数: |
4108 次 |
最近记录: |