memory management in oracle

14
MEMORY MANAGEMENT IN ORACLE BY DAVIN.J.ABRAHAM 1701310002/M.TECH DB/SRMU

Upload: davin-abraham

Post on 05-Jul-2015

242 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Memory management in oracle

MEMORY MANAGEMENTIN ORACLE

BY DAVIN.J.ABRAHAM

1701310002/M.TECH DB/SRMU

Page 2: Memory management in oracle

BASIC MEMORY STRUCTURES

• The basic memory structures associated with Oracle Database include:

• Software code areas

• Software code areas are portions of memory used to store code that is being run or can be run. Oracle Database code is stored in a software area that is typically at a different location from users' programs—a more exclusive or protected location.

• System global area (SGA)

• The SGA is a group of shared memory structures, known as SGA components, that contain data and control information for one Oracle Database instance. The SGA is shared by all server and background processes. Examples of data stored in the SGA include cached data blocks and shared SQL areas.

• Program global area (PGA)

• A PGA is a memory region that contains data and control information for a server process. It is nonsharedmemory created by Oracle Database when a server process is started. Access to the PGA is exclusive to the server process. There is one PGA for each server process. Background processes also allocate their own PGAs. The total memory used by all individual PGAs is known as the total instance PGA memory, and the collection of individual PGAs is referred to as the total instance PGA, or just instance PGA. You use database initialization parameters to set the size of the instance PGA, not individual PGAs.

Page 3: Memory management in oracle
Page 4: Memory management in oracle

RECOMMENDATION

• Memory management involves maintaining optimal sizes for the Oracle database instance memory structures as demands on the database change. The memory that must be managed is the system global area (SGA) memory and the instance program global area (instance PGA) memory. The instance PGA memory is the collection of memory allocations for all individual PGAs.

• Oracle Database supports various memory management methods, which are chosen by initialization parameter settings. Oracle recommends that you enable the automatic memory management method.

Page 5: Memory management in oracle

ABOUT AUTOMATIC MEMORY MANAGEMENT• Oracle has made great strides in simplifying memory management over the last few versions of the database.

• Oracle 9i automated PGA management by introducing PGA_AGGREGATE_TARGET parameter.

• Oracle 10g continued this trend by automating SGA management using the SGA_TARGET parameter.

• Oracle 11g takes this one step further by allowing you to allocate one chunk of memory, which Oracle uses to dynamically manage both the SGA and PGA.

• The simplest way to manage instance memory is to allow the Oracle Database instance to automatically manage and tune it for you.

• To do so (on most platforms), you set only a target memory size initialization parameter (MEMORY_TARGET) and optionally a maximum memory size initialization parameter (MEMORY_MAX_TARGET).

• The instance then tunes to the target memory size, redistributing memory as needed between the system global area (SGA) and the instance program global area (instance PGA). Because the target memory initialization parameter is dynamic, you can change the target memory size at any time without restarting the database.

• The maximum memory size serves as an upper limit so that you cannot accidentally set the target memory size too high, and so that enough memory is set aside for the Oracle Database instance in case you do want to increase total instance memory in the future. Because certain SGA components either cannot easily shrink or must remain at a minimum size, the instance also prevents you from setting the target memory size too low.

• If you create your database with Database Configuration Assistant (DBCA) and choose the basic installation option, automatic memory management is enabled. If you choose advanced installation, Database Configuration Assistant (DBCA) enables you to select automatic memory management.

Page 6: Memory management in oracle
Page 7: Memory management in oracle

ORACLE DATABASE MEMORY MANAGEMENT MODES

Memory Management Mode For You Set Oracle Database Automatically Tunes

Automatic memory management SGA and PGA Total memory target size for the

Oracle instance

(Optional) Maximum memory size for

the Oracle instance

Total SGA size

SGA component sizes

Instance PGA size

Individual PGA sizes

Automatic shared memory management

(Automatic memory management

disabled)

Page 8: Memory management in oracle

ENABLING AUTOMATIC MEMORY MANAGEMENT

• If you did not enable automatic memory management upon database creation (either by selecting the proper options in DBCA or by setting the appropriate initialization parameters for the CREATE DATABASE SQL statement), you can enable it at a later time. Enabling automatic memory management involves a shutdown and restart of the database.

1. Start SQL*Plus and connect to the database as SYSDBA.

2. Calculate the minimum value for MEMORY_TARGET as follows:

• Determine the current sizes of SGA_TARGET and PGA_AGGREGATE_TARGET by entering the following SQL*Plus command:

• SHOW PARAMETER TARGET

Page 9: Memory management in oracle

• SQL*Plus displays the values of all initialization parameters with the string TARGET in the parameter name.

• NAME TYPE VALUE• ------------------------------ ------------- ---------------• archive_lag_target integer 0• db_flashback_retention_target integer 1440• fast_start_io_target integer 0• fast_start_mttr_target integer 0• memory_max_target big integer 0• memory_target big integer 0• pga_aggregate_target big integer 90M• sga_target big integer 272M

a. Run the following query to determine the maximum instance PGA allocated since the database was started:

a. select value from v$pgastat where name='maximum PGA allocated';

b. Compute the maximum value between the query result from step 2b and PGA_AGGREGATE_TARGET. Add SGA_TARGET to this value.

c. memory_target (m) = sga_target + max(pga_aggregate_target, maximum PGA allocated)

Page 10: Memory management in oracle

For example, if SGA_TARGET is 272M and PGA_AGGREGATE_TARGET is 90M as shown above, and if the maximum PGA allocated is determined to be 120M, then MEMORY_TARGET should be at least 392M (272M + 120M).

3. Choose the value for MEMORY_TARGET that you want to use.

4. This can be the minimum value that you computed in step 2, or you can choose to use a larger value if you have enough physical memory available.

5. For the MEMORY_MAX_TARGET initialization parameter, decide on a maximum amount of memory that you would want to allocate to the database for the foreseeable future. That is, determine the maximum value for the sum of the SGA and instance PGA sizes. This number (n) can be larger than or the same as the MEMORY_TARGET value that you chose in the previous step.

Page 11: Memory management in oracle

5. Do one of the following:

• If you started your Oracle Database instance with a server parameter file, which is the default if you created the database with the Database Configuration Assistant (DBCA), enter the following command:

• ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE;

5. where n is the value that you computed in Step 4.

6. The SCOPE = SPFILE clause sets the value only in the server parameter file, and not for the running instance. You must include this SCOPE clause because MEMORY_MAX_TARGET is not a dynamic initialization parameter.

7. If you started your instance with a text initialization parameter file, manually edit the file so that it contains the following statements:

• memory_max_target = nM

• memory_target = mM

8. where n is the value that you determined in Step 4, and m is the value that you determined in step 3.

Page 12: Memory management in oracle

Note:

• In a text initialization parameter file, if you omit the line for MEMORY_MAX_TARGET and include a value forMEMORY_TARGET, the database automatically sets MEMORY_MAX_TARGET to the value of MEMORY_TARGET. If you omit the line for MEMORY_TARGET and include a value for MEMORY_MAX_TARGET, the MEMORY_TARGET parameter defaults to zero. After startup, you can then dynamically change MEMORY_TARGET to a nonzero value, provided that it does not exceed the value of MEMORY_MAX_TARGET.

9. Shut down and restart the database.

If you started your Oracle Database instance with a server parameter file, enter the following commands:

ALTER SYSTEM SET MEMORY_TARGET = nM;

ALTER SYSTEM SET SGA_TARGET = 0;

ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;

where n is the value that you determined in step 3.

Page 13: Memory management in oracle

Note

• The preceding steps instruct you to set SGA_TARGET and PGA_AGGREGATE_TARGET to zero so that the sizes of the SGA and instance PGA are tuned up and down as required, without restrictions. You can omit the statements that set these parameter values to zero and leave either or both of the values as positive numbers. In this case, the values act as minimum values for the sizes of the SGA or instance PGA.

Page 14: Memory management in oracle

THANK YOU