JDBC连接双机ORACLE

目前手头上的一个项目需要连接的数据库是一个双机负载平衡设置的oracle数据库,使用普通的连接字符串jdbc:oracle:thin:@ip:port:SID的形式不能成功连接,必须要使用如下的形式

连接字符串代码   收藏代码
  1. jdbc:oracle:thin:@(DESCRIPTION =  
  2.     (LOAD_BALANCE = YES)  
  3.     (FAILOVER = ON)  
  4.     (ADDRESS_LIST =  
  5.       (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))  
  6.       (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))  
  7.     )  
  8.     (CONNECT_DATA =  
  9.       (SERVER = DEDICATED)  
  10.       (SERVICE_NAME = servicename)  
  11.     )  
  12.   )  

 

和单机的tns比较可以发现多出了(LOAD_BALANCE = YES)(FAILOVER = ON)以及(SERVICE_NAME = servicename)这几个值,前面两个不解释(我也不知道什么意思),主要看后面的SERVICE_NAME。

我们连接单机的oracle数据库时,这个值通常都是SID=***的形式。SID是数据库的实例名,SERVICE_NAME是从客户端连接数据库时的别名,它可以对应多个SID(本例中即是如此,更多关于两者的详细资料请自行google)。因此在双机环境当中,我们就需要SERVICE_NAME去连接数据库了。

此外,在使用plsql developer连接该服务时,tns只需要有SERVICE_NAME的值就可以成功连接了,这和JDBC连接稍微有点区别。


实例:

private String url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.112)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.113)(PORT=1521))(LOAD_BALANCE=yes)(FAILOVER=on))(CONNECT_DATA=(SERVICE_NAME=GADB)))";
private String user="GATI";
private String pwd="GATI";
private Connection conn;
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pwd)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值