问题:应用程序连接数据库,老是报一个错误: caused by wait millis 5000 ,active 0,maxactive 20
连接不上数据库超时。但是我用一个单独的jdbc在问题机器上测试连接数据库,发现却是可以连接的。
二、解决问题:
后来经过曲折的探索过程,反复测试,发现 查找问题,发现是连接池参数
一看这个错误,就很明白了:因为“”ora-00923 未找到要求的关键字from”导致“caused by wait millis 5000 ,active 0,maxactive 20” 连接超时问题。
三。总结:最后建议DruidDataSource配置成如下:
升级到最新稳定版本
四。另外有几个参数的意思是:
validationQuery SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,
则查询必须是一个SQL SELECT并且必须返回至少一行记录
testOnBorrow true 指明是否在从池中取出连接前进行检验,如果检验失败,
则从池中去除连接并尝试取出另一个.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
testOnReturn false 指明是否在归还到池中前进行检验
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
testWhileIdle false 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,
则连接将被从池中去除.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
timeBetweenEvictionRunsMillis -1 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位.
如果设置为非正数,则不运行空闲连接回收器线程
numTestsPerEvictionRun 3 在每次空闲连接回收器线程(如果有)运行时检查的连接数量
minEvictableIdleTimeMillis 1000 * 60 * 30 连接在池中保持空闲而不被空闲连接回收器线程
(如果有)回收的最小时间值,单位毫秒