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.