Alessandro Guimarães – Oracle Blog

September 1, 2008

Evolução do Gerenciamento de Memória no Oracle

Filed under: banco de dados — Tags: — agleite @ 3:33 am

Tudo começou lá no 9i. Alguns dos parametros da SGA ficaram dinâmicos. Portanto o comando “ALTER SYSTEM” poderia ser utilizado para aumentar ou diminuir seus valores.

O total da SGA é limitado pelo parâmetro SGA_MAX_SIZE. Cada parametro da SGA é alocado em termos de “Grãos”, que nada mais é do que uma unidade de alocação. O tamanho do grão depende do SGA_MAX_SIZE e da plataforma do hardware.

Dependendo da versão 9i, os seguintes parametros foram definidos como dinâmicos:

  • 9.0.1: Shared Pool e Default Buffer Cache
  • 9.2.0: Foi acrescido o Large Pool

Além disso, a equação: “DB_BLOCK_BUFFERS*DB_BLOCK_SIZE”; foi substituida pelo novo parametro DB_CACHE_SIZE e DB_nK_CACHE_SIZE para diferentes tamanhos de bloco.

Por ultimo PGA_AGGREGATE_TARGET, no livrando dos sacrificio de ajustar os diversos  parametros “*_area_size”.

Ainda no  9i, quando você aumenta ou diminui o tamanho de um dos parametros acima, a memória liberada não será re-alocada para outro parametro dinâmico automaticamente. Você deve fazer isso manualmente.

Na versão 10g apareceu o  ASMM (Automatic Shared Memory Management), que automatiza o gerenciamento das seguintes estruturas de memória:

db_cache_size, shared_pool_size, large_pool_size, java_pool_size e streams_pool_size (10.2)

Quando implementada, a ASMM faz com que o Oracle distribua a memória entre os componentes baseado nos requirementos de carga de trabalho. Portanto este componentes são chamado de auto-otimizaveis. Quem coordena o tamanho destes componentes e move a memória para a area com maior necessidade, é o processo background MMAN(Memory Manager).

Para implementar a ASMM, basta

Parametrizar SGA_TARGET com um valor diferente de zero e STATISTICS_LEVEL=TYPICAL (ou ALL).

Os seguintes parametros não são auto-ajustaveis:

* LOG_BUFFER

* DB_KEEP_CACHE_SIZE

* DB_RECICLE_CACHE_SIZE

* DB_nK_CACHE_SIZE

* STREAMS_POOL_SIZE (10.1)

Além claro do valor “Fixed SGA”.

Quando você define SGA_TARGET, o valor total destes parametros é subtraido do valor de SGA_TARGET, sendo o saldo restante distribuido entre os componentes auto-ajustaveis.

SGA_TARGET é dinâmico, seu valor superio é determinado por SGA_MAX_SIZE. Este por sua vez só pode ser alterado com a re-inicialização da instancia.

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: