2010-04-26 45 views
1

我有PL/SQL函数,它被编程为对一组数据进行排序。当直接调用PL/SQL函数时,该函数可以正常工作,不会出现任何错误。PL/SQL函数执行时抛出进程内存错误

但是,当我通过Unix Shell脚本调用此函数时,即使脚本返回成功代码并抛出Out Process Memory Error并且函数实际上未执行。

我已经验证了DB指数空间和临时空间,其中超过50%的自由空间

+4

“Out Process Memory Error”是否为Oracle错误消息?我接近认为问题不在于PL/SQL函数,而在于调用机制。 – 2010-04-26 07:10:18

+1

是的..我们需要更多的细节。 – Guru 2010-04-27 05:23:47

+0

既然你说过,你正在做一个排序,你可以检查'sort_area_size'吗?你也可以尝试增加它。检出http://stackoverflow.com/questions/1874044/how-to-sort-area-size-increase/1874188#1874188 – Guru 2010-04-27 05:25:32

回答

1

你所得到的错误大概是ORA-04030: out of process memory。这意味着你的进程正在达到内存限制。 (比如durr)。

为什么当你在查询中调用函数时它没有打到你?谁可以告诉?也许你正在整理不同数量的数据?也许有不同的环境条件?

此错误可能表明您的内存不足,但也可能意味着您的交换空间不足(即磁盘空间)。如果它是RAM,并且您有一些备用容量,则可以增加pga_aggregate_target。如果它是交换,那么你需要让你的系统管理员的案件。

+1

批处理作业可能运行时使用不同的语言(NLS_LANG/NLS_TERRITORY)设置。 – 2010-05-02 23:19:31