ORA-04030: out of process memory

show parameter background_dump_dest
ORA-04030: out of process memory_第1张图片
sqlplus查询日志路径.png

得到的路径有时候结尾是alert,有时候是trace,前者打开是实时的log.xml日志,后者是关联到alert中错误信息条目的具体错误信息


ORA-04030: out of process memory_第2张图片
alert文件.png

ORA-04030: out of process memory_第3张图片
trace文件.png

通过alert找到对应的trace文件,找到错误原因


image.png

报错信息:
ORA-04030: out of process memory when trying to allocate 1049100 bytes (KSFQ heap,KSFQ Buffers)

sga_max_size指的是可动态分配的最大值﹐而sga_target是当前已分配的最大sga。

报错可能原因:

  1. sga_max_size设置的值大于操作系统对单个进程可分配内存的最大值。
  2. sga_target>sga_max_size

我遇到的情况是原因一,当时通过命令

show parameter sga_max_size

得到sga_max_size = 6000m,这样一看肯定是设置的太大了,于是通过网上的方法

1. 设置rman从SGA取内存
alter system set dbwr_io_slaves=2 scope=spfile;
alter system set backup_tape_io_slaves=true scope=spfile;

2. 调整SGA大小
alter system set sga_target=1500m;
alter system set sga_max_size=1500m scope=spfile;

3. 设置使用内存最大大小
alter system set large_pool_size=80m;

4. 重启oracle service

可是重启了发现除了sga_max_size = 4000m之外,其他都是改变的值。明明设置的是1500m怎么自己变了,继续查找alert的log看有没有异常,找到后,连接到对应trace发现如下


image.png

说明1500m对于oracle来说太小了,自己设置到了4000多。

你可能感兴趣的:(ORA-04030: out of process memory)