Sunday , April 28 2024

Oracle Database Memory Structure

In today’s article, we will be examining the memory structure of the Oracle database. The memory structure of the Oracle database consists of two parts.

System Global Area
Program Global Area

SYSTEM GLOBAL AREA

It is known as shared memory space.

All sessions connected to the database use the SGA common area.

Server and background processes do not reside within the SGA area but allocate memory space for it.

Each database has its own SGA field. This area is allocated by the Oracle database through physical memory on the server and is not allowed to be used by any other application/process until the database is closed.

Oracle Instance= SGA + Background Processes

The size of the SGA area is seen in the figure below.

1. While the database is opening.

2. By running the following command in the open database;

3. With the following SQL statement;

Here;

Fixed Size: This is the area where information such as general information and database status information needed by background processes are kept.

Variable Size: It is the sum of Shared Pool + Large Pool + Streams Pool + Java Pool + Free SGA Memory Areas.

The SGA area and the components that make up this area can be determined by database administrators and can also be automatically managed by Oracle with 11g.

In this context, there are 3 memory management options.

1. Automatic Memory Management
a. Memory Management is left to Oracle.
b. The maximum size that the instance can take is specified in the parameter file.
c. Parameters: memory_target, memory_max_target
d. Oracle automatically manages SGA and PGA fields according to this size.

2. Automatic Shared Memory Management
a. The total size that SGA and PGA can take is specified in the parameter file.
b. Parameters: sga_target, sga_max_target, pga_aggregate_target

3. Manual Memory Management
a. The size of all SGA components and PGA sizes are specified individually in the parameter file.

• All components of SGA can be learned by querying the v$sgastat view.

PROGRAM GLOBAL AREA

PGA is non-shared memory space.

When a server process is started, PGA memory space is allocated from the server’s physical memory. This memory area is used until the server process terminates. The memory is released back when the process is finished.

PGA has some important components.

Private SQL Area

It holds the information of the parsed SQL sentence.

When a server process executes a SQL statement or PL/SQL code, it uses a private SQL field to store bind variable values, query execution status information, and query workspaces.

Private SQL Area and Shared SQL Area are different structures. The private SQL field of one or more sessions accesses a single Shared SQL field.

For example, let’s assume that the customers table is queried with the same query in 5 different sessions. The SQL statement executed in all 5 sessions will have a single execution plan.

SQL Working Area

It is an area used for intensive memory operations. Memory-intensive operations such as using the sort field with operations such as ORDER BY and hash joins using the hash field to create the hash table can be given as examples.

Session Memory

This is the area where session-specific variables are kept.

Loading

About Onur ARDAHANLI

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories