Showing results for 
Search instead for 
Did you mean: 

Using Memory Windows

Go to solution
Donald Osbourne
Occasional Advisor

Using Memory Windows

Hi folks,

I am running oracle 8.1.7 on HP/UX 32-bit, and am experiencing a problem with oracle allocating large chunks of Q4 Global memory area. What is the best solution to this problem? Ideally, I would like to force oracle into using the required SGA from the other quadrants.

Can Memory Windows be use to resolve this issue? And can multiple Memory Windows be configured in the /etc/services.window file for a single database? If so, how?

All suggestions are welcomed. Thanks for the help.
Patrick Wallek
Honored Contributor

Re: Using Memory Windows

I do not think what you require can be done.

Memory Windows makes a separate Q3 window for each application that uses Memory Windows. The Q4 quadrant of shared memory is still Global, that won't change.

You can not have a single Oracle instance in multiple Memory Windows. If you did that then the database likely would not work correctly since it would probably have problems communicating between the windows.
Bill Hassell
Honored Contributor

Re: Using Memory Windows

32bit applications are severely limited in large memory allocations. Anytime you need more than 900 megs of SGA, you'll have to become (painfully) aware of these limitations. First, there is only one memory map for 32bit shared memory and *EVERY* 32bit app will use this area. It is not reserved but allocated as needed--within the addressing limitations of 32bit programs. So two instances of 32bit Oracle programs are going to have to share this map, and fragmentation is quite common.

If you are running on 11.0, you can read the details in /usr/share/doc. The papers mem_mgt and proc_mgt will give you the details. Unfortunately, for 11i, the papers disappeared into a fog at

Memory windows are covered at as well as the 11.0 /usr/share/doc directory. If you don't have the memory window white paper in /usr/share/doc, then your 11.0 system is missing a lot of patches and can't ruin memory windows (11i is OK).

A memory window is simply a separate map to separate applications from each other so that the full address range is available. If you need 3Gb of SGA for your Oracle instance, it can never happen in a 32bit application. You'll have to switch to a 64bit version of Oracle where all memory limitations virtually disappear (terabytes of shared memory if you want).

So for a single instance of Oracle, one additional memory window (the default shared memory map is memwindow #0) can be created and reserved just for Oracle. That way, mempry mapped files, shared libraries and other shared memory segments in #0 won't interfere with another window. Note that ALL applications that must access this Oracle instance of SGA must also be started with the memory window command. Typically, you can get about 1750megs for SGA in a memwindow, but only when you link the executables to handle SHARE_MAGIC.

You'll need a copy of shminfo to show you all the maps and occupants (much more useful than ipcs):

Bill Hassell, sysadmin
Honored Contributor

Re: Using Memory Windows

You have to configure a kernel parameter ( Needs a reboot) max_mem_window to the desired number ( depends on how many you wanted) we have configured this to six.

In /etc/services.window file add oracle_sid names
for Ex:
sid_name1 10
sid_name2 20

More information is available in /usr/share/doc/mem_wnds.txt
and in KBRC00009528


Good Luck..