Oracle:未处理内部错误(-2)重新启动IIS

时间:2015-08-21 12:05:28

标签: .net oracle iis

在我们连接到Oracle DB的系统中,我们遇到了这种错误

Internal error not handled (-2).\n   at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
   at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
   at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
   at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)

一旦发生此错误,则它是连续的,所有进一步的查询甚至SELECT语句都会失败。

错误将从任何随机SELECT语句开始。并且没有SQL导致此问题的模式。

唯一可行的方法是执行IISRESET。

之后系统将正常工作2-3天。如果再次弹出此错误,则整个系统再次关闭。

  

注意:我还没有获得Oracle日志。我有时会发布   那些。

编辑1:我们缩小了问题的范围。似乎我们的应用程序的连接泄漏是问题的原因。一旦我们解决问题,我会更新帖子的详细信息。谢谢大家。

1 个答案:

答案 0 :(得分:0)

最后我们可以找出错误的原因。

我们的查询中有一些外部数据库链接。在一个地方,此查询与单个事务中的本地数据库查询相结合。这导致了这个问题。

由于某种原因,本地事务无法升级为分布式事务。

注意:我们仍在使用Miscrosft Oracle Provider与oracle DB进行通信

如果您

,这可以解决
  1. 将此查询作为物化视图移至本地数据库,并从应用程序中调用该视图
  2. 在连接字符串中设置enlit = false(不推荐)