我们目前正在我们的一个配置为Windows服务的VB .Net应用程序中使用Oracle Data Connect dll。我们使用的.Net版本是Framework 3.5,我们连接到Oracle 10g。
此应用程序不断与数据库建立连接,并在该特定实例中立即关闭每个连接(数据库连接中涉及一种单一设计模式)。我们在数据库连接方面更频繁地收到错误(“ CONNECTION LOST CONTACT ”)。阅读完一些博客后,我们在连接字符串中添加了一个参数 VALIDATE CONNECTION = TRUE 。此错误已得到解决,但我们现在收到一条新的错误消息,“连接请求已超时”
答案 0 :(得分:1)
我看到的唯一一个使用适用于.NET / ODP.NET的Oracle数据提供程序指定超时的connectionstring选项如下:
Data Source=myOracle;User Id=myUsername;Password=myPassword;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2;
您可以在此处获得更多示例:http://www.connectionstrings.com/oracle#p12
以下是描述:
默认情况下,启用连接池。这个控制池化机制。连接池服务通过使用ConnectionString属性来唯一标识池来创建连接池。
第一个打开的连接会创建连接池。该服务最初创建由Min Pool Size参数定义的连接数。
Incr Pool Size属性定义了在需要更多连接时由连接池服务创建的新连接数。
当连接关闭时,连接池服务确定连接生存期是否已超过Connection Lifetime属性的值。如果是,则关闭连接;否则,连接将返回连接池。
连接池服务每3分钟关闭一次未使用的连接。 Decr Pool Size属性指定每3分钟可以关闭的最大连接数。
此外,您可以查看运行查询的OracleCommand是否收到超时。 查找有关OracleCommand.CommandTimeout属性的文档。
在本网站上查看有关oracle命令Timeout的讨论 https://forums.oracle.com/forums/thread.jspa?threadID=317603