expdp报ORA-04030 out of process memory错误


操作系统: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、重启操作系统后,参数生效,导出不再报错

GoldenGate不使用数据泵完成Oracle-Oracle的双向复制

使用GoldenGate的数据泵进行Oracle-Oracle的单向复制

如何对 Oracle 数据泵(expdp/impdp) 进行 debug

Oracle 数据库导出数据泵(EXPDP)文件存放的位置

Oracle 10g 数据泵分区表的导出

相关内容