连接池是ODP.NET中必备的吗?

时间:2012-09-30 16:00:22

标签: .net oracle odp.net

我正在编写一份夜间工作,使用ODP.NET将数据从SQL Server移动到Oracle。

我们使用大约100个连接对象(独立于数据),我们预计一次运行(总共)不会超过1500行。 我阅读的ODP.NET说明和材料从未谈及保持连接池的关闭。

在开发中,我保持连接池关闭,它工作正常。

在给定方案中是否建议保持连接池关闭,(因为所有连接在使用后都正确处理),因为:

  1. 这是一个夜间工作,Oracle服务器上的负载不会很大。

  2. 连接池可能会返回过时连接,需要对其进行验证设置/异常处理。

1 个答案:

答案 0 :(得分:5)

汇集的唯一原因是性能,所以如果你的夜间工作在它的窗口内运行,那么你正在做的事情没有任何问题,特别是因为它不需要担心死连接而使你的实现变得简单。

那就是说,我不会做这个标准练习。我很少编写代码来处理陈旧的连接,即使这样,它也是一个简单的工厂。问题始于为什么你有过时的连接?通常,这涉及终止空闲连接的防火墙或DBA作业,应该为应用程序帐户更改或放宽这两者。即使在这种情况下,您也可以执行以下操作:

  • 在连接字符串中指定Min Pool Size = 0。这样做可以让ODP.net清理你的应用程序的最后一个连接,允许你的应用程序在闲置足够长的时间内完全断开连接。
  • 在连接字符串中指定更高的Decr池大小。这将允许ODP.net每3分钟关闭更多空闲连接。
  • 您可以尝试设置Validate Connection = true - 我的猜测是,验证连接的开销要少于打开连接的开销。

更多信息可以在这里找到: http://docs.oracle.com/cd/E15296_01/doc.111/e15167/featConnecting.htm#i1006228