Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Memory Limit Imposed on Oracle by Windows?

Re: Memory Limit Imposed on Oracle by Windows?

From: BD <robert.drea_at_gmail.com>
Date: 18 Apr 2007 18:58:32 -0700
Message-ID: <1176947912.694445.148860@y5g2000hsa.googlegroups.com>


> could be 4GB or so. Is that true or is Oracle able to use as much of the
> available memory on the server as it is set up to use?

The following applies to 32-bit Windows only.

By default (without specific OS switches enabled), Windows is only able to directly 'see' (ie allow programs to access) 4GB. Anything above that is accessed via smoke and mirrors, similar to EMS/XMS in the DOS days. Virtual address spaces, yada yada yada.

In fact, it is less - because the OS kernel must exist in the same 'base' region of memory. By default, Windows only allows programs direct access to *2* GB of RAM.

This means that *all* Oracle instances must share that 2GB.

There are two ways to address this - both involve OS switches, and one involves specific Oracle config changes.

  1. The '/3GB' switch. Adding this switch to your boot.ini will cause the OS kernel to live in less memory (1GB), and allow programs direct access to 3GB of memory. This can obviously help, but may impose limitations on the OS side.
  2. The '/PAE' switch. Adding this switch to your boot.ini will steal a small amount of base memory, which will then be converted into a 'mapping area' to the vast regions of memory above 4GB. It basically creates an extended address space (the acronym stands for Physical Address Extensions), and it lets Oracle use memory above the 4GB cap.

***however - you are limited to what can go into this upper region of memory - buffer cache only. The PGA, Shared Pool, all other memory areas must still exist in the base region of memory (be it 2 or 3GB).

As well, you need to enable a parameter in Oracle: 'Use_indirect_data_buffers=TRUE'. This will allow the Oracle process to put the buffer cache up in higher memory. You must also assign a size for the 'mapping area' This parameter is 'AWE_WINDOW_SIZE', I believe.

You must also change the terminology used in your pfile for the buffer cache size. Not the value, just the name. I forget the specific one there. But it's in the docs.

One more thing: if you use *both* /3GB and /PAE on the same Windows box, you will *not* be able to see more than 16GB. Ever.

Many hoops to jump through. I gather that these constraints are not present when using 64-bit Windows, but I don't know for sure.

I also hear talk of performance issues when using /PAE in some cases. You must also be very aware that when using /3GB, you're forcing the OS kernel into a smaller region of memory.

BD. Received on Wed Apr 18 2007 - 20:58:32 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US