Oracle11g ODP.NET或Oracle在通信通道上导致03113文件结束

Oracle11g ODP.NET或Oracle在通信通道上导致03113文件结束,oracle11g,enterprise-library,odp.net,Oracle11g,Enterprise Library,Odp.net,我有一个控制台程序,它使用企业库和oracle ODP.NET执行以下操作 开放连接 搜索一些数据 密切联系 稍等片刻 重复 在大约30分钟到3小时(通常大约2小时)之后,我得到了一个oracle 03113文件通信结束 我追踪到它获得了一个连接(好吧,认为它有一个连接),然后它在执行一条语句时失败(即,它第一次尝试使用连接) 通常(我正在开发中),步骤2不返回任何数据,并且始终使用相同的sql SELECT 我通过在DSN中添加“Pooling=false”来修复它: <add na

我有一个控制台程序,它使用企业库和oracle ODP.NET执行以下操作

  • 开放连接
  • 搜索一些数据
  • 密切联系
  • 稍等片刻
  • 重复
  • 在大约30分钟到3小时(通常大约2小时)之后,我得到了一个oracle 03113文件通信结束

    我追踪到它获得了一个连接(好吧,认为它有一个连接),然后它在执行一条语句时失败(即,它第一次尝试使用连接)

    通常(我正在开发中),步骤2不返回任何数据,并且始终使用相同的sql SELECT

    我通过在DSN中添加“Pooling=false”来修复它:

      <add name="DEV64" connectionString="Data Source=dev3;User Id=XXX;Password=YYY;Pooling=false" providerName="System.Data.OracleClient"/>
    
    但这只是因为司机不知道这一点

    顺便说一句,执行此操作的代码如下:

    获取我的上下文:

                dac = new DataAccessContext(EnterpriseLibraryContainer.Current.GetInstance<Database>(AppSettingsHandler.ConnectionStringName));
    
    读取数据,通常是在数据丢失的地方,可能是某种陈旧的连接:

                DataSet ds = context.Database.ExecuteDataSet(CommandType.Text, query);
    

    对于ORA-3113错误,您需要查看数据库服务器上的alert.log。请在alert.log中报告该时间段的错误。另外,请说明您正在使用的ODP.NET的完整版本号、数据库的完整版本以及Visual Studio的完整版本。
    Context.DBConnection = new DataAccessConnection(Context.Database.CreateConnection());
    Context.DBConnection.Connection.Open();
    return Context.DBConnection.Connection;
    
                DataSet ds = context.Database.ExecuteDataSet(CommandType.Text, query);