在一个站点上,我可以使用SQL Developer连接Oracle数据库,让它闲置很长一段时间(例如,>60分钟),然后返回,一切正常。在第二个站点,如果它闲置超过5-10分钟(我没有准确计算),它会使SQL Developer处于一种状态,新操作将超时,并且我需要手动“断开”然后重新连接才能做任何有用的事情。这似乎是第二个站点的连接超时问题,我不知道是什么原因引起的(我想知道如何关闭它,尽管这不是我的主要问题)。
我的程序使用ODP.NET处理间歇性到来的数据。每30分钟(为了讨论),它将获得一堆需要重复连接的数据。它还使用连接池。我已将连接池设置为使用5分钟的生命周期。
我在第二个站点看到的情况(而不是第一个站点)是,我的程序会在每个数据突发开始时收到连接超时异常(例如,ORA-03113)。我认为正在发生的是,在数据突发期间,连接池按设计使用。在突发结束时,“连接生命周期”被检查,而连接并不太旧,因此留在连接池中。然后,30分钟后当新数据到达时,连接被从池中取出(不检查寿命或超时)并被使用,并超时,就像我在SQL Developer中看到的那样。
如何避免连接超时但仍然利用连接池进行突发处理?从文档(和我的经验)来看,连接只在进入池时检查寿命,而不是在出池时检查。
我的程序使用ODP.NET处理间歇性到来的数据。每30分钟(为了讨论),它将获得一堆需要重复连接的数据。它还使用连接池。我已将连接池设置为使用5分钟的生命周期。
我在第二个站点看到的情况(而不是第一个站点)是,我的程序会在每个数据突发开始时收到连接超时异常(例如,ORA-03113)。我认为正在发生的是,在数据突发期间,连接池按设计使用。在突发结束时,“连接生命周期”被检查,而连接并不太旧,因此留在连接池中。然后,30分钟后当新数据到达时,连接被从池中取出(不检查寿命或超时)并被使用,并超时,就像我在SQL Developer中看到的那样。
如何避免连接超时但仍然利用连接池进行突发处理?从文档(和我的经验)来看,连接只在进入池时检查寿命,而不是在出池时检查。