How to resolve ORA-04030: out of process memory when trying to allocate 248 bytes (kxs-heap-w,ctx:keswxCurPrepare) Errors on IBM AIX Platforms (Doc ID 1934141.1)

Last updated on MARCH 02, 2016

Applies to:

Oracle Database - Enterprise Edition - Version 11.2.0.4 and later
IBM AIX on POWER Systems (64-bit)

Goal

This note helps you in resolving the ORA-04030 errors with upgrade or any other activity on the database. 

1.  The alert log might contain the following errors 

Tue Sep 30 12:02:43 2014
Errors in file /usr/oracle/admin/diag/rdbms/og200/og200/incident/incdir_2438976/og200_ora_17236010_i2438976.trc:
ORA-04030: out of process memory when trying to allocate 82456 bytes (pga heap,control file i/o buffer)
ORA-04030: out of process memory when trying to allocate 4064 bytes (PLS CGA hp,pdzdM80_Allocate_Block)
Errors in file /usr/oracle/admin/diag/rdbms/og200/og200/trace/og200_ora_17236010.trc  (incident=2438979):
ORA-04030: out of process memory when trying to allocate 248 bytes (kxs-heap-w,ctx:keswxCurPrepare)
Incident details in: /usr/oracle/admin/diag/rdbms/og200/og200/incident/incdir_2438979/og200_ora_17236010_i2438979.trc

2.  The Incident trace file might contain the following errors

2014-09-30 12:02:45.628
Dump continued from file: /usr/oracle/admin/diag/rdbms/og200/og200/trace/og200_ora_17236010.trc
ORA-04030: out of process memory when trying to allocate 248 bytes (kxs-heap-w,ctx:keswxCurPrepare)

2014-09-30 12:02:46.042
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=aqu3vk9zsj4aa) -----
update procedure$ set audit$=:2,options=:3 where obj#=:1

3.  The failing functions and the callstack is similar to the following

Function List   (to Full stack)   (to Summary stack)

     skdstdst <- ksedst1 <- ksedst <- dbkedDefDump <- ksedmp
        <- ksfdmp <- dbgexPhaseII <- dbgexExplicitEndInc <- dbgeEndDDEInvocatio <- nImpl
         <- dbgeEndDDEInvocatio <- kghnospc <- kghalf <- keswxCurPrepare <- keswxCurPushMonitor
          <- ing <- kews_sqlst_push_mon <- itoring <- kews_sqlst_flush_le <- vel
           <- kews_sqlst_flush <- kews_timeout <- ksu_dispatch_tac
            <- updrow <- qerupFetch <- updaul <- updThreePhaseExe
             <- updexe <- opiexe <- opiodr <- rpidrus <- skgmstack
              <- rpidru <- rpiswu2 <- rpidrv <- rpiexe <- kqlobjchg
               <- kqlchg <- kglfls1 <- ktcCommitTxn <- ktdcmt <- k2lcom
                <- k2send <- xctctl <- xctCommitTxn <- opiexe <- opiosq0
                 <- kpooprx <- kpoal8 <- opiodr <- ttcpip <- opitsk
                  <- opiino <- opiodr <- opidrv <- sou2o <- opimai_real
                   <- ssthrdmain <- main <- start

4.  The uploaded RDA or the ulimit -a output shows the following

Ulimit
Using: /usr/bin/ksh -f -c "ulimit -a"
time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         131072
stack(kbytes)        32768
memory(kbytes)       32768
coredump(blocks)     1
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

Solution

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms