加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle连接没有关闭

发布时间:2021-02-05 12:02:27 所属栏目:站长百科 来源:网络整理
导读:我们有ASP.NET应用程序,它与odp.net连接到oracle数据库. 最近我们开始遇到一些性能问题.似乎Oracle连接没有关闭并最终堆积,直到它崩溃我们的网站. 作为第一步,我们进行了代码审查,并确保在执行后关闭所有打开的连接. OracleConnection cn = Helpers.Connec

我们有ASP.NET应用程序,它与odp.net连接到oracle数据库.

最近我们开始遇到一些性能问题.似乎Oracle连接没有关闭并最终堆积,直到它崩溃我们的网站.

作为第一步,我们进行了代码审查,并确保在执行后关闭所有打开的连接.

OracleConnection cn = Helpers.ConnectToDB();
    try
    {

        cn.Open();
        //do somtehing
    }
    catch (Exception ex)
    {
        //log error
    }
    finally
    {
        cn.Close();
        cn.Dispose();
    }

但这并没有帮助,每隔几个小时连接堆积并崩溃我们的网站.

这是昨天的连接日志:

TO_CHAR(DATE_TIME,'DD/MM/YYYY   MACHINE STATUS  CONNECTIONS 
19/01/2012 14:40:03 WORKGROUPOTH-IIS-1 ACTIVE  1   
19/01/2012 14:38:00 WORKGROUPOTH-IIS-1 ACTIVE  2   
19/01/2012 14:35:57 WORKGROUPOTH-IIS-1 ACTIVE  2   
19/01/2012 14:34:55 WORKGROUPOTH-IIS-1 ACTIVE  28  
19/01/2012 14:33:54 WORKGROUPOTH-IIS-1 ACTIVE  26  
19/01/2012 14:31:51 WORKGROUPOTH-IIS-1 ACTIVE  34  
19/01/2012 14:30:49 WORKGROUPOTH-IIS-1 ACTIVE  96  
19/01/2012 14:29:47 WORKGROUPOTH-IIS-1 ACTIVE  73  
19/01/2012 14:28:46 WORKGROUPOTH-IIS-1 ACTIVE  119 
19/01/2012 14:27:44 WORKGROUPOTH-IIS-1 ACTIVE  161 
19/01/2012 14:26:43 WORKGROUPOTH-IIS-1 ACTIVE  152 
19/01/2012 14:25:41 WORKGROUPOTH-IIS-1 ACTIVE  109 
19/01/2012 14:24:40 WORKGROUPOTH-IIS-1 ACTIVE  74  
19/01/2012 14:23:38 WORKGROUPOTH-IIS-1 ACTIVE  26  
19/01/2012 14:22:36 WORKGROUPOTH-IIS-1 ACTIVE  2   
19/01/2012 14:21:35 WORKGROUPOTH-IIS-1 ACTIVE  2

崩溃点发生在14:27:44,重新启动应用程序后,连接开始下降.

我们使用的连接字符串是:

<add name="OracleRead" connectionString="Data Source=xxx;User Id=yyy;Password=zzz;Max Pool Size=250;Connection Timeout=160;" providerName="Oracle.DataAccess"/>

那么这里的问题是什么?

我们是否需要定义或更改以下属性之一:

Connection Lifetime,Decr Pool Size,Max Pool Size,Min Pool Size?

在这种情况下,建议的设置是什么?

解决方法

您需要显式处置所有Oracle.DataAccess对象,包括Connections,Commands和Parameters.

请参阅以下注释中的代码示例:

https://nhibernate.jira.com/browse/NH-278

其他几点说明:

>首选using关键字,因为即使在特殊情况下也能保证处理> ODP Paramter对象是特殊的(与常规ADO.NET参数契约相比),因为它也需要显式处理(例如,SQL Server版本不需要)

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!