ORA-04030:out of process memory when trying to allocate string bytes
这个异常的产生、解决,网上有很多方案,不过都是类似的。无非修改系统限制和修改数据库配置。
折腾了一天,按网上说的修改stack、memory后都没成功。最终发现原因是系统ulimit的data没有修改,默认130M,所以oracle进程最大130M,而Oracle的sga设置的2G,pga 750M,远远大于130M导致。
将ulimit的data设为不受限或一个大值即可。
改前
$ ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) 131072
stack(kbytes) 4194304
memory(kbytes) 4194304
coredump(blocks) 2097151
nofiles(descriptors) 2000
改后
$ ulimit -d 4194304
$ ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) 4194304
stack(kbytes) 4194304
memory(kbytes) 4194304
coredump(blocks) 2097151
nofiles(descriptors) 2000