oracle 报错 ORA-02396: 超出最大空闲时间, 请重新连接 客户端如何处理 返回

SqlSugar 沟通中
2 185
该叫什么 root 发布于1个月前
悬赏:0 飞吻

原因是DBA在Oralce启用了闲置会话超时时间配置为15分钟
目前使用的版本是 5.1.4.170 已经是最新版本了
我使用的框架是 .net8
我使用的是依赖注入 注入SqlSugar 注入的生命周期 Singleton Scoped Transient 均测试过
我的处理方案1
字连接字符串串中启用连接池并且设置超时时间短于15分钟
Data Source=127.0.0.1:1521/orcl;User Id=test;Password=123456; Pooling=true;Min Pool Size=1;Max Pool Size=100;Connection Lifetime=840;
但是这样设置超过了闲置会话时间的15分钟还是继续超时没有用

我的处理方案2
我看框架有一个自动释放连接的属性IsAutoCloseConnection设置true了 还是不起作用
using (var db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = connectionString, DbType = DbType.Oracle, IsAutoCloseConnection = true // 确保操作完成后关闭连接 }))

思考思路
“Oracle (ORA-02396): 超出最大空闲时间, 请重新连接”)。如果没有自动处理机制,问题要是发生在凌晨或业务高峰期就很不友好了。 因为必须要用户重新再试一次才能重新建立会话
目前想的是思路是 如果出现这种错误我就在在程序里面重新调用一次 刚开始还好 处理几个简单的方法问题不大 后面处理着发现业务嵌套太深 改动难度太大 外加这个项目 业务代码庞大 改起来的地方多 我就想从框架层面入手 奈何ConnectionConfig 这个配置里面只找到 IsAutoCloseConnection这个参数 结果还没有生效


热忱回答2

  • fate sta fate sta VIP0
    1个月前

    DBA在Oralce启用了闲置会话超时时间配置为15分钟 需要 Pooling=false  

    0 回复
  • root root VIP0
    1个月前

    好的谢谢大佬帮助

    0 回复