You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle重启后BizTalk 2016发送端口连接超时问题咨询

BizTalk 2016 Oracle连接超时问题解决方案分析

问题场景

系统正常运行无异常,但每次Oracle因维护/补丁重启后,BizTalk 2016发送端口会触发如下连接超时错误:

Microsoft.ServiceModel.Channels.Common.ConnectionException:
Connection request timed out --->
Oracle.DataAccess.Client.OracleException: Connection request timed out

临时解决方法为重启BizTalk主机实例,但无法覆盖非工作时间的情况,需彻底解决该问题。当前发送端口的UseOracleConnectionPool属性设置为True,咨询是否可通过将该参数设为False解决问题(接受连接速度变慢的代价)。

针对UseOracleConnectionPool=False的分析

将UseOracleConnectionPool设为False确实可以避免该错误:

  • 启用连接池时,BizTalk会复用ODP.NET连接池中的已有连接。Oracle重启后,池内的旧连接已失效,但BizTalk端未及时感知,导致请求使用失效连接触发超时。
  • 禁用连接池后,每次发送请求都会创建全新的Oracle连接,不会复用失效连接,因此不会出现超时问题。
  • 代价是每次请求都需要重新建立数据库连接,会增加连接开销,导致请求响应速度变慢,具体影响程度取决于业务的请求量和频率。

无需禁用连接池的替代方案

如果不想牺牲连接性能,可尝试以下方案:

  • 调整ODP.NET连接池参数:
    • 在连接字符串中添加Validate Connection=True,每次从连接池获取连接时自动验证有效性,若连接已失效则丢弃并新建。
    • 设置Connection Lifetime参数(单位为秒),让连接池自动回收存活时间超过阈值的连接,避免长时间持有失效连接。
  • 配置BizTalk发送端口自动重试:
    给发送端口设置合理的重试间隔和重试次数,当出现连接超时错误时自动触发重试,无需人工干预即可恢复。
  • 自动刷新连接池:
    通过脚本监控Oracle重启事件,触发BizTalk相关API刷新发送端口的连接池,无需重启主机实例即可清除失效连接。

内容的提问来源于stack exchange,提问作者NealWalters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:57:20