2010-03-05 188 views
4

我在批量处理大量事务的生产中遇到oracle错误ORA-01001: invalid cursor。然而,相同的代码在开发中工作正常。ORA-01001:无效光标

我需要知道什么时候可以在更新查询中有ORA-01001: invalid cursor。我做了一些谷歌搜索,发现有两种可能性得到这个错误:

  1. 打开的游标数量变得大于MAXCURSOR允许?
  2. 尝试取出而不打开游标。

有没有人遇到过我上面描述过的同样的问题?请建议解决方案。

+0

什么版本的Oracle? – DCookie 2010-03-05 16:20:30

回答

3

是的,这些是常见原因(如果您还没有,也请参阅this)。

考虑到您正在使用两种不同的环境(dev/prod),您是否验证过MAXCURSOR参数相同(或者Prod MAXCURSOR> Dev MAXCURSOR)?

您还应该调查您的批处理过程,看看数据数量是否会导致您的进程在prod中打开更多光标。例如:您的批次为部门表中的每个部门代码启动存储过程,并且此过程的每个实例都会打开N个游标。

如果你有 - 说 - 3局。代码在开发中,因为它足够用于测试,而在Prod中有34个部门代码,您可以使用光标的10倍并获得相同的情况...

+0

@marino,MAXCURSOR在生产和开发环境中都是相同的 – 2010-03-05 09:12:19

+0

数据是否也一样?假设你没有正确地释放游标,如果你在产品中完成了更多的“工作”,你会很快耗尽它们。 – 2010-03-05 09:54:06

+1

Oracle会在什么情况下针对不涉及游标的选择查询引发此异常?当运行标准查询时,Hibernate会在我的应用程序中抛出这个异常。 – 2010-11-17 21:52:26

相关问题