欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

expdp报ORA-04030 out of process memory错误

程序员文章站 2022-05-30 13:59:04
...

操作系统:AIX6.1Oracle数据库版本:11.1.0.7.01、使用expdp导出的时候,报ORA-04030:outofprocessmemorywhentryingto&nb..

操作系统:AIX 6.1
Oracle数据库版本:11.1.0.7.0
1、使用expdp导出的时候, 报ORA-04030: out of process memory when trying to allocate 120048 bytes错误,
具体如下所示:

ORA-39082: Object type ALTER_PROCEDURE:"INDEXAPP"."PA_INDEX_PORTAL_UV_D" created with compilation warnings Processing object type SCHEMA_EXPORT/VIEW/VIEW ORA-39082: Object type VIEW:"INDEXAPP"."TA_CONTENT_AUDIT_USER_D" created with compilation warnings Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS ##ORA-39014: One or more workers have prematurely exited. ORA-39029: worker 1 with process name "DW01" prematurely terminated ORA-31671: Worker process DW01 had an unhandled exception. ORA-04030: out of process memory when trying to allocate 120048 bytes (session heap,kuxLpxAlloc) ORA-06512: at "SYS.KUPW$WORKER", line 1602 ORA-06512: at line 2

2、以oracle用户执行ulimit -a,对于用户进程使用的内存是有限制的,如下所示:

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

3、切换到root,在/etc/security/limits文件添加如下内容,(-1代表不限制):

oracle: data = -1 stack_hard = -1 stack = -1 rss = -1 core = -1 nofiles = -1

4、查看新增以上内容后的/etc/security/limits文件:

$ su - root root's Password: # cat /etc/security/limits * * Sizes are in multiples of 512 byte blocks, CPU time is in seconds * * fsize - soft file size in blocks * core - soft core file size in blocks * cpu - soft per process CPU time limit in seconds * data - soft data segment size in blocks * stack - soft stack segment size in blocks * rss - soft real memory usage in blocks * nofiles - soft file descriptor limit * fsize_hard - hard file size in blocks * core_hard - hard core file size in blocks * cpu_hard - hard per process CPU time limit in seconds * data_hard - hard data segment size in blocks * stack_hard - hard stack segment size in blocks * rss_hard - hard real memory usage in blocks * nofiles_hard - hard file descriptor limit * * The following table contains the default hard values if the * hard values are not explicitly defined: * * Attribute Value * ========== ============ * fsize_hard set to fsize * cpu_hard set to cpu * core_hard -1 * data_hard -1 * stack_hard 8388608 * rss_hard -1 * nofiles_hard -1 * * NOTE: A value of -1 implies "unlimited" * default: fsize = -1 core = -1 cpu = -1 data = 512000 rss = 512000 stack = 512000 nofiles = 2000 root: data = -1 stack_hard = -1 stack = -1 rss = -1 core = -1 nofiles = -1 oracle: data = -1 stack_hard = -1 stack = -1 rss = -1 core = -1 nofiles = -1 daemon: bin: sys: adm: uucp: guest: nobody: lpd: pconsole: stack_hard = 131072 data = 1280000 data_hard = 1280000 esaadmin: stack = 393216 stack_hard = 393216

5、切换到oracle用户,执行ulimit -a,结果显示如下:

# su - oracle $ ulimit -a time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) unlimited memory(kbytes) unlimited coredump(blocks) unlimited nofiles(descriptors) unlimited threads(per process) unlimited processes(per user) unlimited

6、再次执行expdp导出,仍旧报一样的错误
7、重启操作系统后,参数生效,,导出不再报错

本文出自 “斜阳悠悠寸草心” 博客,请务必保留此出处