问题描述:
Navacat或PLSQL Developer连Oracle数据库不报错,可以正常查询数据,但是使用Java的JDBC连接数据库就会报错:
java.sql.SQLException:Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
原因:
Navacat或PLSQL Developer可以直接使用service_name连接Oracle数据库;
JAVA的JDBC不能使用service_name连接,需要使用INSTANCE_NAME才可以进行连接;
JAVA的OJDBC支持3种连接方式,但是这里使用的是sid方式连接,可以通过以下解决方案,查询到数据库的sid,然后使用sid连接;
或者更换为OJDBC的service_name方式进行连接,详情可点击这里查看我的另一篇文章关于OJDBC的三种连接方式。
解决方法:
连接Oracle数据库查询数据库的INSTANCE_NAME;
SELECT INSTANCE_NAME FROM v$instance;
将查询到的INSTANCE_NAME换到JAVA的JDBC上连接即可;
例: