限制Oracle数据库的ConnectionTimeout

时间:2011-11-10 10:12:54

标签: c# .net oracle database-connection connection-timeout

如何限制连接Oracle数据库的超时?我在数据访问层使用devart dotConnect Express Edition。我尝试将Connection timeout=30;添加到连接字符串但它没有给出正确的结果(甚至有点奇怪,第一次它真的限制为30秒,但不是所有连接尝试)。然后我发现了

  

尝试建立时等待的连接超时时间(以秒为单位)   终止尝试并生成错误之前的连接。一个   值0表示没有限制。默认值为15秒。   仅在直接模式下可用。

from Devart site

我不能使用直接模式,因为我使用的是Express Edition。然后我尝试在TNSNAMES.ORA

中设置此参数
DB1 =
  (DESCRIPTION =
    (CONNECT_TIMEOUT=11)
    (TRANSPORT_CONNECT_TIMEOUT=10)
    (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.100.8)(PORT = 1521)
       )
    )
    (CONNECT_DATA =
       (SERVICE_NAME = DB1)
    )
  )

仍然有效。好的,下来尝试在SQLNET.ORA

中设置连接超时
SQLNET.INBOUND_CONNECT_TIMEOUT = 5

另一个失败!有谁知道如何设置超时限制允许时间连接到DB1?它现在完成连接(连接失败)大约20秒。

2 个答案:

答案 0 :(得分:0)

我从未使用过Devart的dotConnect库,但是查看OracleConnection类似乎可以通过调用OracleConnection.Close()在一段时间后关闭连接。当您尝试Open连接时,这会让您退出阻止状态。

这与设置超时不完全相同,但它可能有效。此外,在调试此代码时检查ConnectionTimeout属性,以确认超时已正确设置。

答案 1 :(得分:0)

OracleConnection.ConnectionTimeout仅适用于直接模式。通过Oracle客户端建立连接时会忽略它,在这种情况下,Oracle客户端管理连接。