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

例:

JAVA JDBC 连接Oracle数据库报错ORA-12505解决方案_第1张图片
JAVA JDBC 连接Oracle数据库报错ORA-12505解决方案_第2张图片

你可能感兴趣的:(oracle数据库,后端-java,数据库,oracle,java,jdbc)