如何整数据库服务器上sde用户的单个进程的数据段限制

如题所述

第1个回答  推荐于2016-11-26
一、问题现象
ORA-04030: out of process memory when trying to allocate 64544 bytes (sort subheap)

二、问题诊断
根据错误提示,可以确定是在操作数据库时内存不够造成的。
检查ORACLE数据库内存使用情况,发现SGA和PGA内存使用都有剩余。
然后检查操作系统用户的内存设置,发现/etc/security/limits文件中应用账户sde内存限制过小。

三、问题解决

1、先调整数据库服务器上sde用户的单个进程的数据段限制,由131072调整为ulimited.

$ ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) 131072
stack(kbytes) 4194304
memory(kbytes) 32768
coredump(blocks) 0
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user) unlimited

2、编辑/etc/security/limits文件,添加sde用户参数值
# vi /etc/security/limits
sde:
fsize = -1
core = -1
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1
fsize_hard = -1
core_hard = -1
cpu_hard = -1
data_hard = -1
rss_hard = -1
stack_hard = -1
nofiles_hard = -1

3、重启数据库监听
# su - oracle
$ lsnrctl stop
$ lsnrctl start

监听启动后,重新执行应用,应用成功执行。至此,问题解决。本回答被提问者和网友采纳
相似回答