Evolução Gerenciamento de Memória na instancia Oracle
Autor: MarcusWilliam | Publicado: 2011-08-20T03:48:00-03:00







É interessante perceber a evolução no gerenciamento de memória de uma instancia Oracle. Naturalmente, a cada nova versão que é liberada pela Oracle, conceitos e funcionalidades são agregadas para facilitar a vida de quem administra o produto. Ilustraremos quais foram as novidades de cada versão no assunto gerenciamento de memória



Primeiramente devemos esclarecer a diferença entre SGA e PGA, que são os principais componentes de uma instancia. Na SGA encontramos dados e controles que são compartilhados entre todas as sessões criadas na instancia, enquanto que o conteúdo da PGA não é compartilhado, é especifico para cada sessão criada na instancia (uma sessão não é criada no banco e sim na instancia). A SGA é formada por database buffer cache, redo log buffer, Shared Pool, Large Pool, Java Pool e Streams Pool. E isso é assunto para outro post.





Oracle8i&nbsp;

Apenas o controle manual dos compomentes da SGA era permitido. Se o DBA necessitase alterar o valor de algum compomente da SGA este deveria, alterar o arquivo de inicialização (pfile) com o novo valor, shutdown e startup na instancia. Não existia um limite imposto na própria instancia o limite era o hardware. Nesta versão não existia o tunning na PGA, o tamanho era fixo.



Oracle9i&nbsp;

o DBA ainda contralava manualmente o tamanhos dos compomentes da SGA, entretanto a grande novidade foi a "Dynamic SGA" onde os tamanhos dos compomentes da SGA poderiam ser alterar sem a necessidade de baixar e levantar a instancia. Apareceu também o parâmetro SGA_MAX_SIZE que servia de limite para o crescimento da SGA. Esse valor deveria ser "casado" com o tabanho da memória física. O avanço se deu no fato de que um DBA receberia imediatamente uma mesamgem ORA-??? se a alteração do tamanho do compomenta da SGA fosse indevida sem ter a necessidade de baixar e levantar a instância. Nesta versão nasceu o parametro PGA_AGGREGATE_TARGET que limitava a soma de todas as PGA criadas pelas sessões criadas.



Oracle 10g

A coisa tá melhorando! Nasceu o conceito Automatic Shared Memory Mangement (ASMM) onde o DBA apenas "diz" qual vai ser o tamanho da SGA (SGA_TARGET) e o próprio Oracle se encarrega de distribuir o tamanho dos componentes e AUTOMATICANTE fará as alterações necessárias quando nescessário. Apesar de toda essa facilidade o DBA que quizer, poderá também trabalhar controlando manualmene os tamanhos dos compomentes. Eu não indico isso. O parâmetro &nbsp;PGA_AGGREGATE_TARGET continua instituindo a soma de todas as PGA criadas pelas sessões criadas.



Oracle 11g

Não parou por ai !!!!!!! Nesta versão nasceu o termo Automatic Memory Management onde a partir de um único parâmetro (MEMORY_TARGET) o DBA "diz" para o Oracle controlar automaticamente tanto o tamanho dos compomentes da SGA, bem como o tamanho da PGA. Apesar de tudo isso o DBA ainda pode controlar manualmente todos os compontes da instancia Oracle.



Quanto eu ministro aulas de Oracle, eu costumo dizer que a Oracle está de olho nas atividade recorrentes, estas seguramente aparecerão já automatizadas nas próximas versões a evolução no gerenciamento de memória é um caso claro.



É salutar olhar pra tráz pra entender o presente.



Marcus William

about.me/marcuswlima