Sunday, May 11, 2008

How to configure Windows 32 bit to let Oracle use more than 2 GB of memory

The 32-bit operating systems such as Windows 2000 and Windows Server
2003 provide access to 4-gigabyte (GB) of virtual address space. The lower 2 GB of virtual memory is private per process and available for application use. The upper 2 GB is reserved for operating system use.


All operating system editions, starting with Microsoft Windows XP Professional and later, including Windows Server 2003, include a boot.ini switch that can provide applications with access to 3 GB of virtual memory, limiting the operating system to 1 GB.


If you are running oracle on windows 32 bit OS then you are facing the 2GB limit of memory due to the information above there are 3 ways of dealing with that limitation:



  1. Use 64-Bit windows

  2. Apply the /3GB switch in boot.ini to allow 3GB to be made available to
    oracle, with the kernel taking 1GB

  3. Apply the /PAE switch in boot.ini to allow the use of upper memory
    (anything above 4GB). Oracle needs to be configured to use this
    memory, and this memory can only be used for the buffer cache. Shared
    Pool, PGA, all the rest needs to sit in 'base' memory no matter what.



    The /3GB and /PAE switches can be used together, but your
    OS would recognize no more than 16GB of memory



The best way I suggest is finding yourself a 64-bit OS to maximize your memory usage. But if that is not the case the you can do here is how you do the modification on you boot.ini.

Configure your boot.ini

To be able to edit your window’s boot.ini you need to go to Control Panel » System » Advanced » Startup and Recovery » Settings » System startup » Edit .
The file should look something similar to the following:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(1)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(1)partition(2)\WINNT="Microsoft Windows 2003 Server" /fastdetect


As the solution above you need to apply /3GB or /PAE or both in boot.ini file after ”multi(0)disk(0)rdisk(1)partition(2)\WINNT="Microsoft Windows 2003 Server" /fastdetect” line. So after appling it your boot.ini would look like this:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(1)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(1)partition(2)\WINNT="Microsoft Windows 2003 Server" /fastdetect /3GB /PAE



reboot you windows once before configuring your oracle instance.

0 comments: