Druid连接Oracle报错分析及解决方法
报错现象
在使用Druid连接Oracle数据库时,可能会遇到如下错误:

java.sql.SQLException: ORA-12541: TNS:no listener 错误原因
此错误通常是由于以下原因造成的:
- Oracle监听器未启动:Oracle数据库的监听器没有启动,导致客户端无法连接到数据库。
- 网络问题:客户端与Oracle数据库服务器之间的网络不通,或者防火墙阻止了连接。
- 数据库配置问题:Oracle数据库配置错误,如监听器配置不正确。
- Druid配置问题:Druid连接配置错误,如URL、用户名、密码等。
解决方法
以下是一些解决此错误的方法:
1 检查Oracle监听器
- 打开Oracle监听器控制台,查看监听器状态。
- 如果监听器未启动,则启动监听器。
- 如果监听器已启动,但状态为“NOT LISTENING”,则检查监听器配置。
2 检查网络问题
- 检查客户端与Oracle数据库服务器之间的网络连接。
- 检查防火墙设置,确保防火墙没有阻止连接。
3 检查数据库配置
- 检查Oracle数据库的监听器配置文件(listener.ora)。
- 确保监听器配置正确,包括端口号、服务名等。
4 检查Druid配置
- 检查Druid连接配置文件(如:druid.properties)。
- 确保连接URL、用户名、密码等配置正确。
示例
以下是一个Druid连接Oracle数据库的示例配置:

# 数据源配置 druid.datasource.driverClassName=oracle.jdbc.driver.OracleDriver druid.datasource.url=jdbc:oracle:thin:@//localhost:1521/orcl druid.datasource.username=system druid.datasource.password=123456 druid.datasource.initialSize=1 druid.datasource.minIdle=1 druid.datasource.maxActive=20 druid.datasource.maxWait=60000 druid.datasource.timeBetweenEvictionRunsMillis=60000 druid.datasource.minEvictableIdleTimeMillis=300000 druid.datasource.validationQuery=SELECT 1 FROM DUAL druid.datasource.testWhileIdle=true druid.datasource.testOnBorrow=false druid.datasource.testOnReturn=false druid.datasource.poolPreparedStatements=true druid.datasource.maxOpenPreparedStatements=20
FAQs
问题1:如何查看Oracle监听器状态?
解答: 打开Oracle监听器控制台,输入以下命令:
lsnrctl status 问题2:如何启动Oracle监听器?

解答: 打开Oracle监听器控制台,输入以下命令:
lsnrctl start 
