【发布时间】:2021-05-29 04:51:49
【问题描述】:
尝试在云中使用 dbcp2 和 Oracle db 设置数据库连接池。
尝试连接到 Oracle 自治数据库时遇到此错误。最奇怪的部分是,即使遇到此错误,当此连接池开始用于添加用户、提取报告等时,在与基于 webapp 构建的服务交互时,我也没有收到任何错误。
数据库启用了 tcps,我正在使用 Oracle Wallets 连接到该数据库。
错误总是重复出现,如果是网络问题,请慎重考虑
任何想法可能导致此错误?
java.sql.SQLException: Error preloading the connection pool
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:573) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:734) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at com.testme.mmappserver.upgrade.start.MartUpgrade.isMartVersionPresent(MartUpgrade.java:176) ~[classes/:?]
at com.testme.mmappserver.upgrade.start.MartUpgrade.upgrade(MartUpgrade.java:129) ~[classes/:?]
at com.testme.mmappserver.upgrade.start.MartUpgrade.upgrade_main(MartUpgrade.java:81) [classes/:?]
at com.testme.mmappserver.upgrade.Configui$11.run(Configui.java:499) [classes/:?]
Caused by: java.sql.SQLRecoverableException: No more data to read from socket
at oracle.jdbc.driver.T4CMAREngineNIO.prepareForUnmarshall(T4CMAREngineNIO.java:784) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:429) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4C8TTIpro.receive(T4C8TTIpro.java:134) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1623) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:588) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:793) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:57) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:747) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:562) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:357) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:918) ~[commons-pool2-2.9.0.jar:2.9.0]
at org.apache.commons.pool2.impl.GenericObjectPool.addObject(GenericObjectPool.java:1023) ~[commons-pool2-2.9.0.jar:2.9.0]
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:569) ~[commons-dbcp2-2.8.0.jar:2.8.0]
... 5 more
【问题讨论】:
-
那么您是在白天偶尔看到这个错误,还是只是在启动时,或者每次用户登录时看到这个错误?
-
@MarkStewart 我在启动期间尝试执行程序时收到错误
-
理论上,
java.sql.SQLRecoverableException用于当特定语句可能工作时,如果再次调用,在诸如表空间空间不足(后来修复)、超时等问题之后. 现在,如果您能找出导致 first 尝试失败的原因,那就太好了,但您可能想尝试(暂时)将该语句放入一个循环中,并在循环说 60 秒,然后循环 5 次。然后,如果它第二次起作用,总是……这可能是一种解决方法。 -
该错误未在任何其他开发机器上重现,因此我的环境可能有问题。暂时忽略它。
标签: java database oracle jdbc oracle-cloud-infrastructure