当前位置:  开发笔记 > 后端 > 正文

ORA-03113:ASP.Net应用程序长时间不活动后,通信通道上的文件结束

如何解决《ORA-03113:ASP.Net应用程序长时间不活动后,通信通道上的文件结束》经验,为你挑选了3个好方法。

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

例外:ORA-03113:结束文件在Oracle.DataAccess.Client.OracleException.HandleErrorHelper(的Int32 ERRCODE,康涅狄格州的OracleConnection,IntPtr的opsErrCtx,OpoSqlValCtx*pOpoSqlValCtx,对象的src,字符串过程)在Oracle.DataAccess.Client上的通信信道.OracleCommand.ExecuteReader(布尔重新查询,布尔fillRequest,行为的CommandBehavior)在Oracle.DataAccess.Client.OracleCommand.System.Data.IDbCommand.ExecuteReader()

...堆栈的Oracle部分在这里结束......

我们正在为每个请求创建新的连接,在try/catch/finally中包含open和close以确保正确的连接关闭,并且整个事务都包含在using(OracleConnection yadayada){...}块中.在停止不活动后,此问题似乎与重新启动ASP.Net应用程序无关.

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


更多:通过IT检查,防火墙未设置为终止这些服务器之间的连接.



1> 小智..:

ORA-03113:通信信道上的文件结束

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

    网络问题 - 连接错误或防火墙问题

    服务于您的数据库上的服务器进程意外死亡.

对于1)(防火墙)搜索tahiti.oracle.com for SQLNET.EXPIRE_TIME.这是一个sqlnet.ora参数,它将定期以可配置的间隔发送网络数据包,即:设置这将使防火墙认为连接是活动的.

1)(网络)与您的网络管理员联系

对于2)检查alert.log是否存在错误,如果服务器进程失败,则此处将显示错误消息,并且将编写跟踪文件以启用支持以识别问题.错误消息将引用跟踪文件.

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



2> Christian134..:

Validate Connection = true添加到连接字符串.

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

详细信息: 在OracleConnection.Close()之后,真正的数据库连接不会终止.连接对象放回连接池中.ODP.NET隐含了连接池的使用.如果您创建新连接,则会获得其中一个池.如果此连接"尚未打开",则OracleConnection.Open()方法不会真正创建新连接.如果真实连接中断(由于任何原因),则在首次选择,更新,插入或删除时会出现故障.

使用Validate Connection,可以在Open()方法中验证实际连接.


但请注意,根据[docs](http://docs.oracle.com/html/E10927_01/featConnecting.htm)设置标志会导致**性能损失**:`此属性仅在绝对时使用必要的,因为它会导致数据库的往返,以便在将每个连接提供给应用程序之前立即对其进行验证

3> hamishmcn..:

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

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有