ORA-01002:取消顺序

时间:2013-04-25 13:12:01

标签: sql oracle oracle11g oracleclient

当我的应用程序部署在仅限服务器上时,我收到以下oracle错误,而不是在本地计算机上运行完全相同的可执行文件时出现:

enter image description here

堆栈跟踪指向带有连接的简单select语句,我可以通过问题服务器上的TOAD本地和SQL Plus成功执行。

堆栈跟踪的上半部分是:

Oracle.DataAccess.Client.OracleException ORA-01002: fetch out of sequence
  at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
  at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src, Boolean bCheck)
  at Oracle.DataAccess.Client.OracleDataReader.Read()
  at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping) 
  at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
  at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
  at System.Data.Common.LoadAdapter.FillFromReader(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
  at System.Data.DataTable.Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler)
  at Reconciliation.Models.Legacy.EntityDbEnvironment.OpenEntity(String sql)
  at Reconciliation.Models.Legacy.EntityDbEnvironment.Open(String& sql, DataTable& datatable)
**at myProject.Checks.ExecuteSql()**

我只能想象这是一个oracle客户端问题,但我应该在哪里解决这个问题?

1 个答案:

答案 0 :(得分:1)

我也有这个问题。我的应用程序在一台机器上工作正常,而另一台机器上的完全相同的可执行文件正在使该提取失序异常。

我的查询很大,需要几分钟才能运行。它由COM +运行。我意识到我的两个环境的组件服务配置略有不同。失败的环境将事务超时设置为60秒,另一个设置为更多。

要解决此问题,我只需转到组件服务,右键单击“我的电脑”,“属性”,“选项”,然后增加“事务超时”。

现在有意义的是,当您尝试访问已关闭的游标时,会发生提取失序异常。据我所知,COM +超时关闭了事务,因此关闭了游标,并抛出了Oracle异常。

Picture of the property to update