Granule

From Oracle FAQ
Jump to: navigation, search

A granule is a unit of contiguous virtual memory allocated to a process.

Oracle instance[edit]

If an Oracle instance starts up, it allocates the SGA (System Global Area) in granule sized memory units. The size of these granules depends on your database version and somtimes even on the operating system port. For example, for Oracle 9i it is typically 4MB if your SGA is smaller than 128MB and 16MB if your SGA is bigger. For later releases it is typically 4MB if your SGA is smaller than 1GB and 16MB if your SGA is bigger. Issue the below query to get your instance's exact granule size:

SQL> SELECT * FROM v$sgainfo WHERE name = 'Granule Size';
NAME                                  BYTES RES
-------------------------------- ---------- ---
Granule Size                        4194304 No

The minimum SGA size is three granules, based on:

  1. One Granule for Fixed SGA (includes redo buffers)
  2. One Granule for Buffer Cache
  3. One Granule for the Shared Pool

Note that Oracle will always round-up memory values to the next granule size. The Buffer Cache, Shared Pool, Large Pool and Java Pool, to name a few, can only grow or shrink based on granule boundaries.

Glossary of Terms
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #