PL/SQL 函数在执行时抛出进程内存错误
Posted
技术标签:
【中文标题】PL/SQL 函数在执行时抛出进程内存错误【英文标题】:PL/SQL function while executing throws Out Process Memory Error 【发布时间】:2010-04-26 07:00:55 【问题描述】:我有 PL/SQL 函数,该函数被编程为对一组数据进行排序。当直接作为 PL/SQL 函数调用时,此函数工作正常,没有任何错误。
但是,当我通过 Unix Shell 脚本调用此函数时,即使脚本返回成功代码并抛出 Out Process Memory Error
并且函数实际上并未执行。
我已经验证了数据库索引空间和临时空间,它们的空闲空间超过了 50%
【问题讨论】:
Out Process Memory Error
是 Oracle 错误消息吗?我接近假设问题不在于 PL/SQL 函数,而在于调用机制。
既然你说,你在做一个排序,你可以检查sort_area_size
吗?您也可以尝试增加它。查看***.com/questions/1874044/…
【参考方案1】:
你得到的错误大概是ORA-04030: out of process memory
。这意味着您的进程正在达到内存限制。 (比如,杜尔)。
当您在查询中调用该函数时,为什么它没有击中您?谁能告诉?也许您正在对不同数量的数据进行排序?也许有不同的环境条件?
此错误可能表示您的 RAM 已用完,但也可能表示您的交换空间(即磁盘空间)已用完。如果它是 RAM 并且您有一些空闲容量,您可以增加 pga_aggregate_target
。如果是交换,那么你需要让你的系统管理员来处理这个问题。
【讨论】:
批处理作业可能使用不同的语言 (NLS_LANG / NLS_TERRITORY) 设置运行。以上是关于PL/SQL 函数在执行时抛出进程内存错误的主要内容,如果未能解决你的问题,请参考以下文章
DBMS_OUTPUT.PUT_LINE 抛出“PL/SQL:数字或值错误”
使用 jOOQ 执行 PL/SQL 函数时的 Java 空指针