JAVA JDBC 连接Oracle数据库报错ORA-12505解决方案

问题描述:

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上连接即可;

例:

在这里插入图片描述
在这里插入图片描述


版权声明:本文为qq_15088653原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。