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:数字或值错误”

实体框架在执行 lambda 表达式时抛出错误

在函数内部发生错误时抛出异常

使用 jOOQ 执行 PL/SQL 函数时的 Java 空指针

在 oracle apex 中使用 sqlerm 和异常时抛出重复的错误代码

Lumen Artisan 命令在测试时抛出“错误:调用 int 上的成员函数 assertExitCode()”