Database Reference
In-Depth Information
when using a shared server, you must size your SGA's large pool to have enough space to cater to every possible user
that will ever connect to your database concurrently. So, the SGA of a database supporting shared server connections
is generally much larger than the SGA for a similarly configured dedicated server mode-only database. We'll cover the
SGA in more detail next.
The System Global Area
Every Oracle instance has one big memory structure referred to as the System Global Area (SGA). This is a large,
shared memory structure that every Oracle process will access at one point or another. It varies in size from dozens
of megabytes on small test systems, to a few gigabytes on medium-to-large systems, up to hundreds of gigabytes for
really big systems.
On UNIX/Linux, the SGA is a physical entity you can “see” from the OS command line. It is physically
implemented as a shared memory segment—a standalone piece of memory to which processes may attach. It is
possible to have an SGA on a system without having any Oracle processes; the memory stands alone. It should be
noted, however, that if you have an SGA without any Oracle processes, this is an indication that the database crashed
in some fashion. It is an unusual situation, but it can happen. This is what an SGA “looks like” on Oracle Linux:
$ ipcs -m | grep ora
0x27ba944c 887324675 oracle 640 14680064 82
0x00000000 887357444 oracle 640 1061158912 41
0x749a2e08 887947269 oracle 640 14680064 72
0x00000000 887980038 oracle 640 511705088 36
0x00000000 888537095 oracle 640 8388608 16
0x00000000 888569864 oracle 640 260046848 16
0xc6e51dc4 888602633 oracle 640 2097152 16
I have multiple instances on my test/demo machine. I needed multiple instances to test the various concepts
presented in this topic on different releases. The only reasonable, correct number of instances on a production machine
is one. In real life, never have more than one instance on a given production server. If you need more than one instance
on a physical server, you should use virtualization to split that one server into many virtual servers—each with its own
instance of Oracle.
Note
Three SGAs are represented here and the report shows the OS account that owns the SGA ( oracle for all of these
in this example) and the size of the SGA—1G (the second line) for the first example. On Windows, you really can't see
the SGA as a distinct entity the way you can in UNIX/Linux. Because on the Windows platform Oracle executes as a
single process with a single address space, the SGA is allocated as private memory to the oracle.exe process. If you
use the Windows Task Manager or some other performance tool, you can see how much memory oracle.exe has
allocated, but you can't see the SGA versus any other piece of allocated memory.
unless you have my parameter settings and you are running my exact same version of Oracle on my exact same
OS, you will almost certainly see different numbers than I do. The SGa sizing is very version/OS/parameter-dependent.
Note
 
 
Search WWH ::




Custom Search