Preview
Skip to content
CodingDiary
返回

Oracle 11gR2 RAC的JDBC连接串

编辑页面
导读

前言--> 今天tomcat启动时,连接oracle直接报错,出现ORA-12505的问题,最开始,我以为错误的原因是jdbc连接Oracle的连接串中的sid配置的不对,oracle不能解析连接串中的sid名字,所以拒绝了连接。在连接字串中写入正确的sid即可。

今天tomcat启动时,连接oracle直接报错,出现ORA-12505的问题,最开始,我以为错误的原因是jdbc连接Oracle的连接串中的sid配置的不对,oracle不能解析连接串中的sid名字,所以拒绝了连接。在连接字串中写入正确的sid即可。

于是,查看数据库中当前的sid:

select INSTANCE_NAME from v$instance;

发现sid果然不同,然后将url的sid换成查出来的sid,果然连接上了。 但是我仔细一想,我用原来的sid通过navicat是可以连上oracle的,为什么jdbc会连接不上呢? 查资料得知,对于Oracle的JDBC连接,是支持EZ-Connect写法的,即jdbc:oracle:thin:@Server:1521/Database 但对于Oracle 11gR2 RAC系统,如果Server用了ScanName,Database用了数据库的ServiceName,并不能连接到数据库,而是报SID错误。 原因可能是此种写法,JDBC将Database解析为了数据库的SID。 经多方测试,可用如下写法实现11GR2的数据库连接的负载均衡,特此记录下: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = scan-name)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = DatabaseServiceName)))


编辑页面
分享到:

上一篇
HashMap 的 JDK 源码探索
下一篇
elasticsearch环境搭建及起步