How do I configure memory for 32 bit Windows?

First of all - don't use 32 bit windows. It's stupid. Instead, use only 64 bit windows for database servers. If you have a 32 bit windows database server, then go upgrade it to 64 bit windows.

Obection: "But my granddaddy used 32 bit windows"
Yes, 64 bit windows will sound scary to anyone whose comfort zone is whatever was being done a decade ago. If that's you, then I hope you're reading this article in paper rather than over the new fangled internet doohicky. And preferrably typed out in a manual typewriter, rather than a printout. Or, even better, written out longhand by quill pen. Come to think of it, papyrus might be a safer bet than paper....

But let's say you are, for some stupid reason, stuck with 32 bit windows. The problem is that 32 bit windows by default only allows 2gb of memory to be used by oracle.

But fixes are available. The action to be taken depends on the amount of physical memory in the server:

The PAE/indirect data buffers area holds the buffer cache. The buffer cache has to specified in old db_block_buffers format, rather than db_cache_size or sga_target, for that to work; and parameter use_indirect_data_buffers has to be set to true; and the /PAE switch has to be set in boot.ini (and the server rebooted).

The normal memory area (2gb by default, or 3gb with the /3gb switch set in boot.init), then holds all the rest of the oracle memory. That is = [the rest of the SGA] + [all of the PGAs] + [the oracle process memory overheads]

If you don't move the buffer cache into the PAE area, then the normal memory area of 2gb/3gb has to hold everything, including the buffer cache.

This setup doesn't work with old oracle versions, or with old or standard edition Windows. Oracle Metalink Support Note 225349.1 has the full details, is worth reading.

Also database servers should be dedicated to their database. If a variety of other stuff is sharing the server, be wary of giving too much memory to oracle.

That's all pretty horrible, so best to use 64 bit windows and not have to worry about all this.

Reference: Oracle Metalink Support Note 225349.1


Windows memory and version info:
Right click "my computer", select "properties", look in "general" tab.

Windows number of cpu cores:
sho parameter cpu
or
right click on task bar and choose "task manager", look in "performance" tab. Each cpu core gets its own display.

See what boot.ini flags are set:
C:\WINDOWS\system32\dllcache>msconfig

"3- In order to take advantage of the additional memory afforded through PAE,the operating system
user account which is used to start the OracleService must be granted the 'Lock Pages in Memory'
system privilege at the operating system level. By default, the OracleService starts as the
LocalSystem account. The LocalSystem account has the privilege to Lock Pages in Memory granted to
it by default."
Good guide to lock pages in memory is at http://www.tipandtrick.net/2008/enable-lock-pages-in-memory-to-prevent-database-paging-to-disk/

Note that a few bugs with use_indirect_data_buffers, including bug 6162163 fixed 10.2.0.4 can get ORA-27072 "File I/O Error"


Equivalent for SQL Server

Reference http://technet.microsoft.com/en-us/library/ms190673.aspx