ORA-12505 web服务器连接数据库错误

问题描述:
之前给开发在生产环境新建了数据库用户,今天开发反映测试连接的时候无法从web服务器端连接到数据库。

报错如下:
java.sql.SQLException: Listener refused the connection withthe following error: 
ORA-12505, TNS:listener does not currently know of SID givenin connect descriptor 
The Connection descriptor used by the clientwas: 
ip:1521:abcd (不是实际的配置)

atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111) 
atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:260) 
atoracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386) 
atoracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:419) 
atoracle.jdbc.driver.T4CConnection.(T4CConnection.java:164) 
atoracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34) 
atoracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752) 

web服务器端的应用连接配置:(不是实际的配置)
jdbc.url=jdbc:oracle:thin:@ip:1521:abcd 
jdbc.username=username
jdbc.password=xxxxx


问题分析:
首先先用上面的用户名密码在本地用plsql developer进行登录测试,可以登录。
说明密码没有问题。
然后上网查一下ora-12505的解决方法,大部分都是说要改listener.ora的配置。
由于是生产库,肯定不行。
后来想到,这个生产库是rac结构,有两个节点,开发在连接配置中的abcd实际上是service_name,
而不是sid_name。而实际的sid是abcd1和abcd2,所以在连接的时候会报无法识别sid的错误。

问题解决:
所以只需要在连接配置中指定service_name。
使用如下连接配置即可:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ip地址)(PORT=1521))(CONNECT_DATA=

(SERVER=DEDICATED)(SERVICE_NAME=abcd)))
使用完整的连接串来指定service_name就能成功连接了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值