Sie sind auf Seite 1von 6

Memory target

MEMORY_TARGET is a database initialization parameter (introduced in Oracle 11g) that can be used for automatic PGA and SGA memory sizing.
Parameter description:

MEMORY_TARGET
Property
Parameter type
Syntax
Default value
Modifiable
Range of value
Basic

Description
Big integer
MEMORY_TARGET = integer [K | M | G]
0
ALTER SYSTEM
152 MB to MEMORY_MAX_TARGET
No

MEMORY_TARGET provides the following:

A single parameter for total SGA and PGA sizes

Automatically sizes SGA components and PGA

Memory is transferred to where most needed

Uses workload information

Uses internal advisory predictions

Can be enable by DBCA at the time of Database creation.

By using one parameter we don't need to use all other SGA and PGA parameters like.

DB_CACHE_SIZE
SHARED_POOL_SIZE
LARGE_POOL_SIZE
JAVA_POOL_SIZE
PGA_AGGREGATE_TARGET
Four most commonly configured components are automatically sized:

Shared Pool

Large Pool

Java Pool

Buffer Cache (DEFAULT buffer pool)

Pga_Aggregate_Target

STATISTICS_LEVEL must be set to TYPICAL

The New view V$MEMORY_DYNAMIC_COMPONENTS shows the current sizes of all dynamically tuned memory components, including the total sizes of the
SGA and instance PGA.

SQL> select * from v$memory_target_advice order by memory_size;


MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR
VERSION
----------- ------------------ ------------ ------------------- ---------250
.25
173
1
1
500
.5
173
1
1

750
1000
1250
1500
1750
2000
8 rows selected.
[edit]Enable

.75
1
1.25
1.5
1.75
2

173
173
173
173
173
173

1
1
1
1
1
1

1
1
1
1
1
1

MEMORY_TARGET

SQL> show parameter memory_target


NAME
TYPE
------------------------------------ ----------memory_target
big integer
SQL> show parameter memory_max_target
NAME
TYPE
------------------------------------ ----------memory_max_target
big integer
SQL> alter system set memory_target=1000m;
System altered.
SQL> show parameter memory_target
NAME
TYPE
------------------------------------ ----------memory_target
big integer

VALUE
-------------0
VALUE
-------------1500M

VALUE
-------------1000M

Now our automatic tuning for both SGA and PGA started by using the above parameter. We can increase the value of MEMORY_TARGET parameter
to MEMORY_MAX_TARGET, if we will try to increase it more from the size of max parameter it will throw error.
[edit]Resize

MEMORY_TARGET

MEMORY_TARGET is dynamic

Can be increased till MEMORY_MAX_TARGET

Can be reduced till some component reaches minimum size

Change in value of MEMORY_TARGET affects only automatically sized components

SQL> show parameter memory_target


NAME
TYPE
VALUE
------------------------------------ ----------- ----------memory_target
big integer 1000M
SQL> show parameter memory_max_target
NAME
TYPE
VALUE
------------------------------------ ----------- ----------memory_max_target
big integer 1500M
Now we can increase the size of MEMORY_TARGET to the upper bound of 1500 because our max limit is 1500.

SQL> alter system set memory_target=1400m;


System altered.
If we try to increase it more than 1500 it will throw error ,look here

SQL> alter system set memory_target=1600m;


alter system set memory_target=1600m
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET

So to prevent from this error we should increase our MEMORY_MAX_TARGET parameter to avoid the above error. we can check which parameter is static and
which is dynamic by querying v$parameter view.

SQL>select name,isses_modifiable,issys_modifiable,isinstance_modifiable
from v$parameter where name like 'memory_max_target'
NAME
ISSES_MO ISSYS_MO ISINSTAN
---------------------- -------- -------memory_max_target
FALSE
FALSE
FALSE

SQL> alter system set memory_max_target=2000m scope=spfile;


System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 1000189952 bytes
Fixed Size
1337492 bytes
Variable Size
708839276 bytes
Database Buffers
285212672 bytes
Redo Buffers
4800512 bytes
Database mounted.
Database opened.
Now we can change the value of parameter Memory_target.

SQL> alter system set memory_target=1600m;


System altered.
[edit]Disable

MEMORY_TARGET

We can disable automatic SGA and PGA tuning by setting MEMORY_TARGET parameter value to 0.

SQL> alter system set memory_target=0;


System altered.
SQL> show parameter target
NAME
TYPE
------------------------------------ ----------archive_lag_target
integer
db_flashback_retention_target
integer
fast_start_io_target
integer
fast_start_mttr_target
integer
memory_max_target
big integer
memory_target
big integer
pga_aggregate_target
big integer
sga_target
big integer

VALUE
----------------0
1440
0
0
2000M
0
944M
656M

Now, Oracle will only tune SGA automatically and we have to tune PGA manually.

Das könnte Ihnen auch gefallen