关于oracle:ORA-03113:ASP.Net应用中长时间不活动后通信通道上的文件结束

关于oracle:ORA-03113:ASP.Net应用中长时间不活动后通信通道上的文件结束

ORA-03113: end-of-file on communication channel after long inactivity in ASP.Net app

我已经使用ODAC / ODP.Net驱动程序的10.1.0.301版在IIS5上实现了负载平衡(不使用会话状态)ASP.Net 2.0应用程序,该应用程序运行回单个Oracle 10g服务器。 长时间不活动(几个小时)后,看似随机的应用程序将抛出Oracle异常:

Exception: ORA-03113: end-of-file on communication channel at
Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx*
pOpoSqlValCtx, Object src, String procedure) at
Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery,
Boolean fillRequest, CommandBehavior behavior) at
Oracle.DataAccess.Client.OracleCommand.System.Data.IDbCommand.ExecuteReader()

...Oracle portion of the stack ends here...

我们将在每个请求上创建新的连接,将打开和关闭包装在try / catch / finally中,以确保正确关闭连接,并将整个内容包装在using(OracleConnection yadayada){...}块中。 由于不活动而被分解后,此问题似乎没有链接到ASP.Net应用程序的重新启动。

我们还没有自己重现问题。 思想,祈祷,帮助?


更多:经过IT检验,防火墙未设置为杀死这些服务器之间的连接。


ORA-03113: end-of-file on communication channel

数据库是否在通知您不再存在网络连接。这可能是因为:

  • 网络问题-连接错误或防火墙问题
  • 为您提供服务的数据库上的服务器进程意外死亡。
  • 对于1)(防火墙)在tahiti.oracle.com中搜索SQLNET.EXPIRE_TIME。这是一个sqlnet.ora参数,它将以可配置的时间间隔定期发送网络数据包,即:设置此项将使防火墙认为该连接处于活动状态。

    对于1)(网络)与您的网络管理员交谈(连接可能不可靠)

    对于2)检查alert.log是否有错误。如果服务器进程失败,将出现错误消息。此外,还将编写跟踪文件以使支持人员能够识别问题。该错误信息将引用跟踪文件。

    可以在metalink.oracle.com上使用适当的客户服务标识符(CSI)提出支持问题。


    将Validate Connection = true添加到您的连接字符串。

    查看此博客以了解更多信息。

    细节:
    在OracleConnection.Close()之后,实际的数据库连接不会终止。连接对象放回连接池中。 ODP.NET隐式使用了连接池。如果创建新的连接,则将获得其中一个池。如果此连接"尚未打开",则OracleConnection.Open()方法实际上不会创建新的连接。如果实际连接断开(出于任何原因),则在第一次选择,更新,插入或删除时会失败。

    使用Validate Connection,可以在Open()方法中验证真实的连接。


    检查一段时间后,是否没有防火墙终止连接(这是我们遇到的类似问题的原因)


    end-of-file on communication channel:

    此错误的过程之一是由于数据库处于打开状态而无法写入日志;

    解决方案检查数据库是否在ARCHIVELOG或NOARCHIVELOG中运行

    检查使用

    1
    select log_mode from v$database;

    如果它在ARCHIVELOG上尝试更改为NOARCHIVELOG

    通过使用sqlplus

    • 启动挂载
    • 更改数据库noarchivelog;
    • 更改数据库打开;

    如果它适用于此

    然后,您可以调整闪回恢复区域,使其可能是闪回恢复区域已满
    ->然后在确认您的闪存恢复区域具有空间之后,可以将数据库更改为ARCHIVELOG


    当实际问题是oracle数据库服务器空间不足时,可以在应用程序日志中引发此错误消息。

    更正空间问题后,此特定错误消息消失了。


    您可以尝试以下注册表黑客:

    1
    2
    3
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters]
    "DeadGWDetectDefault"=dword:00000001
    "KeepAliveTime"=dword:00120000

    如果可行,只需增加KeepAliveTime。当前设置为2分钟。


    前面提到的文章很好。 http://forums.oracle.com/forums/thread.jspa?threadID=191750(目前为止)

    如果这不是经常运行的内容(请不要在主页上执行此操作),则可以关闭连接池。

    本文中没有提到其他"陷阱"。如果您尝试使用连接进行的第一件事是调用存储过程,则ODP将挂起!!!您将不会回去管理一个错误情况,只需全力以赴!解决此问题的唯一方法是关闭连接池。一旦我们做到了,所有的问题就消失了。

    池化在某些情况下是好的,但代价是每个连接的第一个语句周围的复杂性增加。

    如果错误处理方法如此好,为什么他们不将其作为ODP的选项来为我们处理?


    推荐阅读

      更新文件命令linux?

      更新文件命令linux?,工作,系统,地址,信息,时间,命令,目录,基础,标准,网络,lin

      linux下读取文件命令?

      linux下读取文件命令?,系统,工作,地址,数字,图片,信息,网络,命令,文件,一致,l

      linux文件全选命令?

      linux文件全选命令?,电脑,系统,环境,代码,平台,服务,快捷键,文件,命令,权限,l

      linux浏览文件类命令?

      linux浏览文件类命令?,系统,信息,数据,情况,命令,标准,时间,文件,概念,管理,

      linux重名名文件命令?

      linux重名名文件命令?,图片,名称,名字,文件,命令,位置,代码,软件,系统,文件

      linux将文件备份命令?

      linux将文件备份命令?,系统,密码,设备,软件,通讯,较大,认证,服务,数据,文件,L

      linux扩展文件命令?

      linux扩展文件命令?,工作,地址,系统,信息,命令,目录,管理,情况,文件,标准,Lin

      修改linux时间的命令?

      修改linux时间的命令?,时间,系统,命令,标准,大陆,国家,网上,资料,信息,时区,l

      linux文件替换命令行?

      linux文件替换命令行?,资料,命令,文件,数据,名称,系统,实时,工作,字符串,批

      linux命令行解锁文件?

      linux命令行解锁文件?,系统,地址,工具,工作,管理,电脑,命令,文件,信息,密码,L

      读写文件命令linux?

      读写文件命令linux?,系统,数字,电脑,档案,地址,命令,文件,标准,位置,设备,lin

      linux时间等待命令?

      linux时间等待命令?,时间,系统,周期,工具,周期性,信息,服务,标准,暂停,单位,

      统计文件夹linux命令?

      统计文件夹linux命令?,系统,数据,文件夹,文件,档案,代码,软件,信息,时间,标

      linux文件异或命令?

      linux文件异或命令?,数字,系统,工作,管理,命令,数据,网络,文件,第一,单位,基

      修改时间命令linux?

      修改时间命令linux?,时间,系统,命令,大陆,国家,信息,时区,终端,时分,日期,如

      linux命令引用文件名?

      linux命令引用文件名?,工作,系统,信息,命令,数据,文件,时间,灵活,名称,标准,l

      linux文件复制的命令?

      linux文件复制的命令?,系统,文件,命令,目录,源文件,基本知识,位置,目标,选

      linux上月时间命令?

      linux上月时间命令?,时间,系统,命令,日期,时钟,硬件,选项,格式,终端,分秒,详

      显示linux时间命令?

      显示linux时间命令?,时间,系统,信息,一致,命令,文件,终端,目录,选项,参数,lin