ORA-23350: maximum number of recursive calls exceeded ORACLE 报错 故障修复 远程处理
文档解释
ORA-23350: maximum number of recursive calls exceeded
Cause: This usually occurs when trying to resolve conflicts in a table while concurrent updates to the same row create more conflicts.
Action: Re-execute the deferred transaction from DefError using dbms_defer_sys.execute_error
ORA-23350:最大递归调用数量超过限制。
这是由于在同一事务中已达到最大重复调用限制(称为递归调用)而generate的Oracle错误。
官方解释:
使用超出了最大递归深度(MAXRECURSION)的嵌套调用语句。该错误可能是由修改MAXRECURSION持续变量而引起的,或由公开函数中嵌套调用引起的。递归调用是在程序中引用它自身的步骤。
常见案例
将大量数据从表A中插入表B时,可能会发出ORA-23350的错误,因为SQL的递归调用次数已达到最大值。
一般处理方法及步骤
1. 识别哪一个字段/函数开始了递归,并分析此字段/函数调用了哪些函数。
2. 根据实际情况修改递归函数中的参数或逻辑,以减少递归次数。
3. 如果需要,增加最大递归深度限制(MAXRECURSION)的变量的值。
4. 重新编译已修改的字段/函数。