Thursday, December 17, 2009

Oracle Database Server and the Operating System Memory Limitations


Subject:
Oracle Database Server and the Operating System Memory Limitations

Note:269495.1
Type:
HOWTO

Last Revision Date:
02-MAY-2006
Status:
PUBLISHED

The information in this article applies to:

Oracle Server - Enterprise Edition - Version: 10.1.0.0 to 10.2.0.0
Microsoft Windows 2000
Microsoft Windows XP
Microsoft Windows Server 2003
Linux x86
Microsoft Windows (32-bit)

Errors

ORA 4030 "out of process memory when

Goal

Often the questions of the limitations imposed by the Oracle database arise.
The Oracle database imposes some limits and one can find these limits in the Oracle documentation
for the specific release, book “Oracle Database Reference” Apendix A Database Limits.

However, often the Oracle database is additionaly restricted by some OS level restrictions, which
applies also to the Oracle software, since it generally operates at the next level and uses OS APIs to
complete operations, such as disk and memory management. The purpose of this document is to discuss the memory
limitations imposed by the 32-bit architectures

Fix

Most of the problems appearing here are related to the 32-bit architectures. The most common 32-bit
processors used today are the Intel x86 based systems, running MS Windows or Linux operating
systems. Also most of the RISK vendors offers 32-bit architectures, but since Oracle 9i database and
above, Oracle tends to offer only 64-bit software for these platforms (see Note 149914.1).


Memory limitations of the 32-bit architectures.
The problem appears, because the 32-bit architectures are generally able to address only
231=4Gb of address space per process. In addition to that, part of that address space will normally be
reserved for kernel purposes, so the process itself is able to operate with even less than 4Gb of
memory. Such amount of memory sounded reasonably high several years ago, but today, the systems
often require significantly more. The good news is, that the hardware and OS vendors offers different
mechanisms for overcoming that limitation and addressing significantly more space, but these
mechanisms needs the administrators to be aware of that, needs some configuration, have some
limitations, and sometimes they introduces new APIs for the memory management, so not all the
applications (and respectively all the versions of the Oracle Database) can transparently use them.


Microsoft Windows
As you could know, on this platform the Oracle Database Server is implemented as a single
service and the background and the server processes are implemented as threads in this service.
Hence the total amount of memory addressed by this service (and respectively used by Oracle) could
not be more than 4Gb. In addition, Windows reserves 2Gb of that space for kernel needs, so all the
Oracle structures (SGA and the total amount of PGAs) cannot be more than 2Gb in size. The following
ways to overcome that limitation on Windows exists


The 4GT-tuning feature simply reduces the kernel mode partition to 1GB, so 3Gb of space
can be used by Oracle. However, the total amount of memory addressed by the service is still 4Gb.


The Intel Physical Address Extension (PAE)
PAE is a method to access memory above 4 GiB. PAE maps up to 64 GiB of physical
memory into a 32-bit (4 GiB) virtual address space using either 4-KiB or 2-MiB pages. The page
directories and the page tables are extended from 4 byte to 8 byte formats, allowing the extension of
the base addresses of page tables and page frames to 24 bits (from 20 bits). More details about PAE
can be found at the Microsoft Knowledge Base article Q268363.Instructioins on how to use PAE with
Oracle 10G can be found at your Windows specific documentation, book “Oracle® Database Platform
Guide

10g Release 1 (10.1) for Windows”, Chapter 1 “Oracle Database Architecture on Windows”
Section “Oracle Database Scalability on Windows”


Linux
Since this is mainly hardware problem, Linux also faces similar problems as Windows,
because it runs on the same 32-bit Intel processors. Also, Linux uses same methods (especially PAE)
for extending the memory, which can be addressed.

References

Note 1036312.6 - Utilizing Up to 3GB Virtual Memory on Windows NT Server 4.0
Note 156797.1 - What Is The Maximum Memory (RAM) Size Oracle Can Use on MS Windows 2000
Note 46001.1 - Oracle Database and the Windows NT memory architecture, Technical Bulletin
Note 46053.1 - Windows NT Memory Architecture Overview

No comments:

Post a Comment