【问题标题】:OracleClient, intermittent connection issue: app hangs on OracleConnection.Open(), no timeout, no exception thrownOracleClient,间歇性连接问题:应用程序在 OracleConnection.Open() 上挂起,没有超时,没有抛出异常
【发布时间】:2010-06-28 12:44:40
【问题描述】:

应用程序工作正常,并且每次都从任何机器连接除了它应该被部署的服务器:/当它在服务器上运行时,它设法在 20 次或其他尝试中连接一次。从时髦的症状来看,我怀疑这是某种与网络配置相关的问题(比如一些随机丢失的数据包?),但我的网络管理员同事尝试了 许多 不同的设置,但我们无法找到原因/解决方案。

每一条建议都将不胜感激,因为它真的让我发疯了。我想知道切换到 ODP.NET 是否可以解决问题,或者至少可以更轻松地进行故障排除(我读过 MS 的提供程序不是很稳定)。但是,由于架构不是很灵活,因此切换需要相当长的时间。但如果这是唯一合理的做法......

我正在使用的一段代码:

DbConnection conn = new OracleConnection();
conn.ConnectionString = _connectionString;
try
{
    conn.Open();
    DbCommand cmd = conn.CreateCommand();
    cmd.CommandText = "select sysdate from dual";
    cmd.Connection = conn;
    _logger.Info("Sysdate: " + cmd.ExecuteScalar().ToString());
}
catch (OracleException oex)
{
    _logger.ErrorException("Oracle exception: " + oex.Message, oex);
}
catch (Exception ex)
{
    _logger.ErrorException("Exception: " + ex.Message, ex);
}
finally
{
    if (conn != null) conn.Close();
}

更多信息:

  • 提供者:System.Data.OracleClient
  • 库:instantclient-basiclite-win32-10.2.0.3-20061115
  • 连接字符串的格式为:Data Source=ip_address:port_number/instance;Persist Security Info=True;User ID=user;Password=passwd
  • 其他可以正常连接的应用程序:QueryExpress 使用相同的库,Sql Developer
  • 操作系统:Windows Server 2008 Standard SP 2

【问题讨论】:

标签: c# .net oracle ado.net oracleclient


【解决方案1】:

我们最终使用了 ODP.NET,因为我们在使用 WCF 将数据从我们的服务传输到 Oracle 时遇到了一些错误问题。我不记得实际的问题 - 认为某些数据类型不适用于某些数据类型 - 但它最终对我们来说效果很好。

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 2010-09-23
    • 2019-10-24
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多