oracle - TomEE-Oracle 连接:连接已关闭
问题描述
我有一些数据库插入/更新操作需要 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 获得连接?
推荐阅读
- javascript - 反应路由器 - 没有从 url 获取参数
- c# - 列表属性实体框架的位置
- string - 字符串中的通配符作为输入
- angular - [Angular 6]如何在实时服务器中重新加载相同的子组件页面?
- angular - Angular 中未使用预渲染
- amazon-web-services - 更改 EC2 类型后实例无法访问
- kubernetes - Kyma 控制台中“公开 API”的 CLI 等效项是什么
- mongodb - MongoDB 未作为服务运行
- javascript - 仅在定义属性时推送
- kubernetes - 变量值作为 helm 图表中的 yaml 键