我有一些数据库插入/更新操作需要 10 多分钟才能完成,因为它们处理的是非常大的数据集。
我在 TomEE 中对数据源进行了以下配置:
<Resource id="BSLDataSource" type="javax.sql.DataSource">
DefaultAutoCommit = false
JdbcDriver = oracle.jdbc.OracleDriver
JdbcUrl = jdbc:oracle:thin:@host:port:sid
JmxEnabled = true
JtaManaged = true
LogAbandoned = true
MaxActive = 500
MaxIdle = 5
MaxWait = 10000
MinEvictableIdleTimeMillis = 1800000
MinIdle = 0
NumTestsPerEvictionRun = 3
Password = my-password
RemoveAbandoned = true
RemoveAbandonedTimeout = 600
TestOnBorrow = true
TestOnReturn = true
TestWhileIdle = true
TimeBetweenEvictionRunsMillis = 600000
UserName = my-user
ValidationQuery = SELECT 1 FROM DUAL
</Resource>
在运行此类操作时,我收到异常消息:java.sql.SQLException: Connection has already been closed
。
我需要进行哪些配置更改以便:
- 长时间运行的数据库查询成功执行
- 正确关闭未使用的连接
我尝试添加一个新属性:ConnectionProperties = oracle.net.CONNECT_TIMEOUT=3600000;oracle.jdbc.ReadTimeout=3600000
但没有成功。
更新
设置:
MaxIdle = 10
MinEvictableIdleTimeMillis = 3600000
MinIdle = 5
TimeBetweenEvictionRunsMillis = 3600000
运气不好。
最佳答案
能不能用服务名,用这种格式的URL? jdbc:oracle:thin:@myhost:1521/myorcldbservicename
此外,您是否可以通过 sqlplus 或 sqldeveloper 获取连接?
关于oracle - TomEE-Oracle 连接 : Connection has already been closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53495031/