我在批量处理大量事务的生产中收到一个oracle错误ORA-01001: invalid cursor。但是,相同的代码在开发中也可以正常工作。

我需要知道何时可以在更新查询中包含ORA-01001: invalid cursor。我进行了一些谷歌搜索,发现有两种可能会出现此错误:

  • 打开的游标数变得大于允许的MAXCURSOR?
  • 尝试在不打开游标的情况下进行获取。

  • 有人遇到过我上面描述的相同问题吗?请提出解决方案。

    最佳答案

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

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

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

    如果您有-说-3副。开发人员代码,因为它足以满足您的测试要求,而Prod中有34个部门代码,则您可以使用光标的10倍来获得相同的结果...

    09-25 21:28