And*_*obs 8 .net oracle connection-pooling odp.net
在一个站点,我可以使用SQL Developer连接到Oracle数据库,让它闲置很长时间(例如,> 60分钟),然后返回,这很好.在第二个站点,如果它保持空闲超过5-10分钟(我没有完全计算),它会使SQL Developer处于新操作超时的状态,我需要手动"断开连接",然后按顺序重新连接做任何有用的事情.这似乎是第二个站点的连接超时,我不知道是什么导致它(我想知道如何关闭它,虽然这不是我的主要问题).
我的程序使用ODP.NET并处理spurts中的数据.每隔30分钟(为了讨论),它将获得一堆要处理的数据,这将涉及许多重复的连接.它还使用连接池.我已将连接池设置为使用5分钟的生命周期.
我在第二个站点(而不是第一个站点)看到的是我的程序将在每次突发数据开始时获得连接超时异常(例如,ORA-03113).我认为正在发生的是,在数据突增期间,连接池按设计使用.在突发结束时,将检查"连接生命周期",并且连接不会太旧,因此它将保留在连接池中.然后,30分钟后,当新数据到达时,连接将从池中取出(并且不会检查生命周期或超时)并使用,并且正在超时,正如我在SQL Developer中看到的那样.
如何避免连接超时,但仍然可以在喷射过程中利用连接池?从文档(和我的经验)看来,连接仅在进入池时检查Lifetime,而不是在它出现时检查.
小智 -1
您可以通过将属性设置为 0 来指定无限超时。OracleCommand.ConnectionTimeout在这种情况下,不会有超时(至少在客户端)。
ConnectionPool也在这种情况下使用。