ORA-30009:没有足够的内存用于CONNECT BY操作

时间:2014-02-14 08:40:36

标签: sql oracle oracle11g

我有 Linux VM(使用CentOS 64位),我安装了 Oracle Database 11g Express Edition 。数据库正在运行,我可以使用sqlplus,我可以创建表和东西。但是,当我运行某个插入大量随机数据(大约200万行)的SQL脚本时,我收到此错误:

ORA-30009: Not enough memory for CONNECT BY operation

我已尝试使用以下命令增加PGA_AGGREGATE_TARGET。据我所知,这应解决问题(但事实并非如此),因为它会增加内存。

ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 40M scope = both;

然而,问题是我不能将PGA_AGGREGATE_TARGET设置为高于~40M(这似乎是不够的)。如果我尝试将其设置为100M或更高,我会收到另一个错误:

ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-47500: XE edition memory parameter invalid or not specified

我知道如何解决这个问题吗?我完全可以重新安装整个数据库或其他任何内容。

PS:我在dba.stackexchange.com上问了同样的问题,因为我不确定它是编程还是数据库管理。

1 个答案:

答案 0 :(得分:0)

您正在使用Oracle 11g Express版本,它有一定的限制,例如数据库大小不会超过11g而内存SGA + PGA的增长不会超过1 GB。这意味着,你遇到了这种限制。如果您无法扩展PGA,则需要先降低SGA大小,然后重试。我会成功的。