zoukankan      html  css  js  c++  java
  • Oracle.ManagedDataAccess 连接报错ORA-03135: Connection lost contact

    .net core 

    Oracle.ManagedDataAccess.Client.OracleException:“ORA-03135: Connection lost contact”

    连接oracle 报错问题

    在使用一段时间不操作系统后,后台报ORA-03135: Connection lost contact 错误,

    发生这种情况的原因是您的代码请求从Oracle连接池进行连接,并且连接池将断开连接/过时的连接返回到Oracle DB。

    ODP.NET本身不会测试发送给客户端的连接的连接状态

    1、为了安全起见,在执行Connection.Open()时,请检查从池接获取的连接是否可用,自己先打开验证一下

    1 if (connection.State == System.Data.ConnectionState.Closed)
    2 {
    3         connection.Open();
    4 }
    5 else if (connection.State == System.Data.ConnectionState.Broken)
    6 {
    7          connection.Close();
    8          connection.Open();
    9 }

    2、通过设置连接字符串:Validate Connection = true 让ODP.NET为您进行检查

    例如:

    Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1522))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=dev)));User Id=AA;Password=AA;Validate Connection=true;

    这两种方法都会对性能产生影响,因为它们每次需要连接到数据库时都会测试连接状态。

    3、判断异常如果获得ORA-03135,则请求新连接并像while循环一样再次执行查询。在最佳情况下,您可以使第一个连接有效,然后查询将执行。最坏的情况是,池中的所有连接都是陈旧的,在这种情况下,代码将被执行N次(其中N是连接池的大小)

     

  • 相关阅读:
    Spring整合CXF之添加拦截器
    Spring整合CXF之发布WebService服务
    CXF添加自定义拦截器
    cxf处理一些Map等复杂类型
    webservice执行过程深入理解
    谈谈房车
    关于贷款消费
    记一次玩比特币的经历
    那年K城暑期工
    SpringBoot整合Xxl-Job
  • 原文地址:https://www.cnblogs.com/piaoxuewuming/p/13714320.html
Copyright © 2011-2022 走看看