quarta-feira, 3 de maio de 2017

Análise de utilização da memória do banco de dados (SGA e PGA )


Para verificarmos a utilização de memória de nosso banco de dados e se sua utilização está ocorrendo de forma adequada, podemos seguir os passos abaixo, onde teremos uma visão inicial do comportamento e da utilização da memória interna do banco de dados.


1) Utilização da SGA

Uma das formas de verificação é analisarmos se está ocorrendo muito redimensionamento automático de memória.

Se isto estiver ocorrendo, pode ser necessário aumentarmos o tamanho da SGA.

Uma forma de avaliarmos esses redimensionamentos é com o SQL abaixo:

select component, oper_type, oper_mode,  parameter, initial_size/1024/1024/1024 as initial_size_MB, final_size/1024/1024/1024 as final_size_MB, to_char(start_time,'dd/mm/yyyy  hh24:mi:ss') start_time, to_char(end_time,'dd/mm/yyyy  hh24:mi:ss') end_time from v$memory_resize_ops;

COMPONENT                       PARAMETER                INITIAL_SIZE_MB    FINAL_SIZE_MB
------------------------------------------     ------------------------------------ ------------------------------ --------------------------------
shared pool                            shared_pool_size                      0                              30
ASM Buffer Cache                 db_cache_size                           0                                0
java pool                                 java_pool_size                          0                                3,5
streams pool                          streams_pool_size                    0                                1
SGA Target                             sga_target                                0                                0
large pool                               large_pool_size                        0                                3,5
DEFAULT buffer cache          db_cache_size                        94,5                            94,5
DEFAULT buffer cache          db_cache_size                          0                               94,5
KEEP buffer cache                 db_keep_cache_size                0                                 0
RECYCLE buffer cache          db_recycle_cache_size            0                                 0
DEFAULT 2K buffer cache     db_2k_cache_size                    0                                 0
DEFAULT 4K buffer cache     db_4k_cache_size                    0                                 0
DEFAULT 8K buffer cache     db_8k_cache_size                    0                                 0
DEFAULT 16K buffer cache   db_16k_cache_size                  2                                 2
DEFAULT 16K buffer cache   db_16k_cache_size                  0                                 2
DEFAULT 32K buffer cache   db_32k_cache_size                  0                                 0
In-Memory Area                      inmemory_size                        0                                 0
PGA Target                             pga_aggregate_target             0                               30
DEFAULT buffer cache          db_cache_size                        94,5                            94,5



Analisando os resultados obtidos acima, percebemos que alguns componentes da SGA estão sofrendo redimensionamento e isto indica a possibilidade de aumento da SGA do banco de dados que estamos analisando.


2) utilização de PGA

A verificação na PGA, pode ser feita com o SQL abaixo, onde devemos verificar se o valor do campo "ESTD_OVERALLOC_COUNT" é maior que 0 (zero).
Se o valor for maior que zero, devemos aumentar o tamanho da PGA.

SELECT  round(PGA_TARGET_FOR_ESTIMATE/1024/1024)  target_mb, ESTD_PGA_CACHE_HIT_PERCENTAGE  cache_hit_perc,ESTD_OVERALLOC_COUNT FROM  V$PGA_TARGET_ADVICE;


 TARGET_MB CACHE_HIT_PERC ESTD_OVERALLOC_COUNT
-------------------- ------------------------------ --------------------------------------------
      1125                         92                          0
      2250                         92                          0
      4500                         92                          0
      6750                         92                          0
      9000                         92                          0
     10800                      100                          0
     12600                      100                          0
     14400                      100                          0
     16200                      100                          0
     18000                      100                          0
     27000                      100                          0
     36000                      100                          0
     54000                      100                          0
     72000                      100                          0



- O Campo TARGET_MB informa o valor da PGA;
- O Campo CACHE_HIT_PERC informa o percentual de utilização do cache da PGA;
- O Campo ESTD_OVERALLOC_COUNT informa se ocorreu "estouro" da PGA configurada atualmente;

Para validarmos se precisamos ou não aumentar a PGA, devemos fazer a seguinte comparação:

1) Da lista TRAGET_MB informada, qual o valor de PGA configurada para nosso ambiente?
2) Na coluna ESTD_OVERALLOC_COUNT correspondente ao nosso TRAGET_MB o valor é maior que zero?

Se a resposta para o item 2 acima for sim, devemos avaliar a possibilidade de aumentar a PGA.



Referência:

http://www.oracle.com/technetwork/pt/articles/database-performance/configurando-sga-pga-database-3210653-ptb.html