ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

在这里插入图片描述

之前用PL/SQL DEVELOPER和SQLPLUS
登录数据库都没有问题,就是应用程序通过JDBC连接Oracle时无法成功连接,出现ORA-12505错误listener does not
currently know of SID given in connect descriptor…。

经过查找,

发现Oracle的service_name 和sid_name不一致,而PL/SQL DEVELOPER和SQLPLUS
采用service_name进行连接,而应用程序是按照sid_name进行连接,所以出现PL/SQL DEVELOPER和SQLPLUS
能够连接而应用程序却无法连接的问题。

解决问题很简单,

原来是自己将sid_name搞错了;首先查找当前实例的sid_name:SELECT INSTANCE_NAME FROM
V$INSTANCE,然后把得到的sid_name填入应用程序的连接串中。

说明给到的sid有误,很有可能就是服务名和sid混淆使用。

ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID

测试环境-配置数据库:,生产也按此格式配置,

//监听sid服务,表示sid为orcl
database.url=jdbc:oracle:thin:@171.xxx.96.xx:xxxx:orcl

生产启动报错,识别不到数据库监听服务名。

//监听服务名,表示服务名为orcl
database.url=jdbc:oracle:thin:@171.xxx.96.xx:xxxx/orcl

第一种是监听sid服务,第二种则是监听服务名

所以发现是自己的sid写错导致出现这个错误,把服务名当做了sid

把orcl的 “ : ” 改为 “ / ” 访问正常

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐