【问题标题】:Limit ConnectionTimeout for Oracle Database限制 Oracle 数据库的连接超时
【发布时间】:2011-11-10 10:12:53
【问题描述】:

如何限制连接到 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 秒。

【问题讨论】:

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


【解决方案1】:

我从未使用过 Devart 的 dotConnect 库,但查看 OracleConnection 类似乎您应该能够在一段时间后通过调用 OracleConnection.Close() 关闭连接。当您尝试Open 连接时,这应该会让您脱离阻塞状态。

这与设置超时不完全一样,但它可能会起作用。此外,在调试此代码时检查ConnectionTimeout 属性,以确认超时设置正确。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2019-11-01
      相关资源
      最近更新 更多