Processing MODPLSQL Application Crashes Database with ORA-04030 / ORA-04031 Out of Process Memory Errors

(Doc ID 1532032.1)

Last updated on MARCH 10, 2017

Applies to:

Portal - Version 11.1.1.2.0 and later
Oracle Database - Enterprise Edition - Version 10.2.0.1 and later
PL/SQL - Version 10.2.0.1 and later
Oracle HTTP Server - Version 11.1.1.2.0 and later
Information in this document applies to any platform.

Symptoms

Oracle Database is crashing periodically with the following errors in the Database alert log:

ORA-27300: OS system dependent operation:fork failed with status: 11
ORA-27301: OS failure message: Resource temporarily unavailable
ORA-27302: failure occurred at: skgpspawn3
ORA-04030 / ORA-04031 Out of Process Memory 


Database alert log will be located in a place such as /u0/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

Changes

When first getting ORA-04030 errors, you should review your application code to determine if pl/sql collections or use of pl/sql variables leads to high memory usage. The trace or incident file should have the sql or pl/sql that was running at time of error. This memory growth can be controlled by good programming practices. As an example, use LIMIT clause with BULK COLLECT.

References:
http://www.oracle.com/technetwork/issue-archive/2008/08-mar/o28plsql-095155.html


Process sizes can be monitored via sql against database views as listed in <Note 399497.1> FAQ: ORA-4030 [Video]

The problem continues in spite of efforts to tune for load or custom code optimization.

Cause

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