This document discusses tuning the SGA (System Global Area) parameters in an Oracle database. It provides queries to monitor the current SGA size and component values, calculate free SGA space, and check recommendations for resizing the SGA and its components from various database advisory views. The document also discusses parameters that can be changed without a restart and the steps to change parameters that require a restart.
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Tuning SGA
1. Anar Godjaev
http://anargodjaev.wordpress.com/
Tuning SGA
-- monitoring SGA system parameters
--- max size of the sga
select name, value, description from v$parameterwhere name='sga_max_size';
-- sum of all values of the following query cannot exceed sga_max_size
select sum(value) from
(
select name, value, description from v$parameter
where name in ('java_pool_size',
'shared_pool_size',
'large_pool_size')
UNION
select name, value, description from v$parameterwhere name like
'db_%cache_size'
UNION
select name, value, description from v$parameterwhere name='log_buffer'
);
-------
lets have a look at something
the value of sga_max_size may not be equal to the sum of its components
the difference between these tow values will give you the approximate
free space
selecttrunc(((t2.sga_max_size - t1.total_sga_params)/1024/1024)) FREE_MB
from
(
select sum(value) total_sga_paramsfrom
(
select name, value, description from v$parameter
where name in ('java_pool_size',
'shared_pool_size',
'large_pool_size')
UNION
select name, value, description from v$parameterwhere name like
'db_%cache_size'
UNION
select name, value, description from v$parameterwhere
name='log_buffer'
)
) t1
,(
select sum(value) sga_max_sizefrom v$parameterwhere
name='sga_max_size'
) t2;
--- other ways of obtaining free sga size
-select* from v$sgastatwhere name='free memory';
selectcurrent_size/1024/1024 MB from v$sga_dynamic_free_memory;
--- changing sga and sgacomponenets values
2. Anar Godjaev
http://anargodjaev.wordpress.com/
--- recommended: sga_max_size should be phsical_memory/2
alter system set sga_max_size=500M scope=spfile;
-- changes of this parameter will take affect after instance restart
alter system set java_pool_size=150M scope=spfile;
-- changes of this parameter will take affect after instance restart
alter system set shared_pool_size=150M;
alter system set large_pool_size=50M;
alter system set db_cache_size=150M;
-- which system parameter can be changed without an instance restart
-select* from v$parameterwhere issys_modifiable='IMMEDIATE'
--- following parameter needs an instance restart
-select* from v$parameterwhere issys_modifiable!='FALSE'
-- to change these kind of system parameters following steps can be
followed
alter system set <name>=<value> scope=spfile;
-- from now on you should login from sqlplus "/as sysdba"
alter system checkpoint;
shutdown immediate;
startup;
Advices for SGA
--- advices for sga
-select* from V$SHARED_POOL_ADVICE;
select* from V$DB_CACHE_ADVICE;
select* from V$PGA_TARGET_ADVICE;
NOTES:
1- db_cache_advice system parameter should be ON for v$shared_pool_advice
system view can be up-to-date.
2- for all advice views statistics_level system parameter should be at
least in BASIC mode.
-- setting db_cache_advice system parameter
-select
name,
value,
issys_modifiable,
description
from
v$parameter
where
name='db_cache_advice';
alter system set db_cache_advice='ON';