【问题标题】:PL/SQL function while executing throws Out Process Memory ErrorPL/SQL 函数在执行时抛出进程内存错误
【发布时间】: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吗?您也可以尝试增加它。查看stackoverflow.com/questions/1874044/…

标签: sql oracle plsql


【解决方案1】:

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

当您在查询中调用该函数时,为什么它没有击中您?谁能告诉?也许您正在对不同数量的数据进行排序?也许有不同的环境条件?

此错误可能表示您的 RAM 已用完,但也可能表示您的交换空间(即磁盘空间)已用完。如果它是 RAM 并且您有一些空闲容量,您可以增加 pga_aggregate_target。如果是交换,那么你需要让你的系统管理员来处理这个问题。

【讨论】:

  • 批处理作业可能使用不同的语言 (NLS_LANG / NLS_TERRITORY) 设置运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 2021-08-01
  • 1970-01-01
相关资源
最近更新 更多