java 连接oracle 11g数据库SID问题解决小记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengchang_1981/article/details/7922001
         今天去客户那边部署我们的IT管理平台,通过oracle 的imp命令成功导入基础数据,但是启动tomcat却报错了,异常内容是很常见的 java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12518)(ERROR_STACK=(ERROR=(CODE=12518)(EMFI=4))(ERROR=(CODE=12560)(EMFI=4)))) ,我肯定就去检查数据源配置文件中的连接字符串,我的连接url
 
 
jdbc:oracle:thin:@10.25.166.21:1521:mspdb最后的mspdb是找到的本机oracle客户端下面的tnsnames.ora文件里配置的别名,但是仍旧异常。
	后来我又看到下面有个CONNECT_DATA=(SID=<oracle_sid> 就将连接URL改成了SID后面的内容,居然仍然报错,但是用这个连接,在同一个机器却能用PL SQL DEVELOPER能够连接上,当时彻底没辙,回去查资料,发现后面必须配置oracle的sid,而且查询oracle的sid可以通过select instance_name from v$instance;这个命令查出来,结果再一查,居然instance_name和上面配置的别名和
SID=<oracle_sid>的oracle_sid都不一样,改成查出来的
instance_name后就连接成功。
	通过解决这个问题,java连接oracle数据库连接的sid最保险的办法是通过select instance_name from v$instance;来查下数据库的sid,不然在tnsnames.ora中也不一定准确,但是对于tnsnames.ora配置的服务名和通过命令查询的sid不一样,但仍然仍连接上,中间还有什么别的配置,就暂时不得而知了。

猜你喜欢

转载自blog.csdn.net/pengchang_1981/article/details/7922001