listener does not currently know of service requested in connect descriptor
记开发中遇到的问题一:
今天领导布置了任务,在springboot中需要配置多数据源,我一想,这很简单啊,就把原数据源copy一份,host,账密一改,加两个配置就OK了。
然后就是,旧的数据源可以正常调用,新的不行。报错。
java.sql.SQLRecoverableException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30) ~[ojdbc7.jar:12.1.0.1.0]
就是网上各种找,没找到Java相关处理的,最后我一个一个试出来了。
原因我也不太了解,下面放对比。
spring:
datasource:
erpds:
url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=******)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=TEST)(INSTANCE_NAME=TEST)))
username: ****
password: *****
driver-class-name: oracle.jdbc.driver.OracleDriver
usds:
url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=*****)(PORT=1522))(CONNECT_DATA=(SID=TEST)(INSTANCE_NAME=TEST)))
username: ****
password: ****
driver-class-name: oracle.jdbc.driver.OracleDriver
如上,erpds的可以正常访问,usds就上面的错误。
解决方法:usds中的INSTANCE_NAME=TEST删了就OK了。
因为数据库是专门的同事做的,所以差别在哪也不清楚。