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

本文详细解析了使用Java JDBC连接Oracle数据库时遇到的ORA-12505错误,对比了Navacat和PLSQLDeveloper的连接方式,阐述了为何Java JDBC需要使用INSTANCE_NAME而非service_name,并提供了查询INSTANCE_NAME及正确配置连接字符串的解决方案。
摘要由CSDN通过智能技术生成
问题描述:

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

例:

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值