Páginas

sexta-feira, 27 de julho de 2012

TUNING DE REDO LOG


Pessoal,

Neste Post vamos falar um pouco sobre um assunto que tenho muito interesse, o Tuning do Banco Oracle.
Tuning é um assunto muito grande e complexo, por isso vou atacar neste Post apenas uma parte do Tuning do Redo Log, porém de forma objetiva e eficaz.

O tamanho e a quantidade dos REDO LOG's influenciam muito no desempenho de gravação do Banco. Tanto para um processo de importação de dados quanto para instruções DML.

Para melhoria de performance a Oracle recomenda que os arquivos de Redo Log estejam em um disco diferente do disco onde localiza-se os os arquivos de dados (Data Files) e que a troca dos arquivos de redo log seja feita entre 20 à 30 minutos no máximo, pois menos causa contenção de escrita e mais que 30 minutos aumenta muito o tempo de recuperação.

Como posso identificar de quanto em quanto tempo a troca do Redo Log está sendo realizada ?

Para isso você deve fazer uma regra de três no tamanho do redo:
Ex: você tem troca de redo a cada 10 minutos, o tamanho do seu redo log é de 100MB cada grupo.
Então você deve recriar com 300MB para que o tempo suba para 30 minutos.

A query que faz esta verificação é a seguinte:

select group#,
       thread#,
       to_char(first_time,'DD/MM HH24:MI') TROCA_REDO,
       (BYTES /1024/1024) TAMANHO_MB
  FROM V$LOG ORDER BY 2, FIRST_TIME;


Como faço para alterar o tamanho dos arquivos de Redo Log ?


Abaixo segue o procedimento para realizar a alteração:

-- Para verificar o arquivo de redo log corrente:

SELECT * FROM V$LOG;


-- Para alterar/recriar o arquivo de redo log ele deve estar com STATUS INATIVO, caso necessite forçar a troca do arquivo de Redo Log, execute o comando abaixo:

ALTER SYSTEM SWITCH LOGFILE;


-- Não é possível alterar o tamanho do Redo Log já existente, portanto deve-se eliminar o arquivo ou grupo de Redo Log:

ALTER DATABASE DROP LOGFILE GROUP <<numero_grupo>>;

Exemplo:
ALTER DATABASE DROP LOGFILE GROUP 1;


-- Agora basta adicionar o novo grupo de Redo Log com o novo tamanho:

ALTER DATABASE ADD LOGFILE GROUP <<numero_grupo>> ('<<caminho dos membros>>') size <<tamanho>>;

Exemplo:
ALTER DATABASE ADD LOGFILE GROUP 1 (‘\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01A.LOG’, ‘\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01B.LOG’) SIZE 200M;


A T E N Ç Ã O ! ! !

Por padrão ao criar a Instância Oracle é criado 3 grupos de Redo Log. Porém para que a mesma possa ser iniciada é necessário no mínimo 2 grupos de Redo Log.
Enfim, ao apagar, garanta que tenha ao menos 2 grupos de Redo Log, só apague novamente outro grupo após criar mais um novo !!



Galera é isso aí !!!  Espero que esse procedimento possa ajudar a todos caso seja necessário !!

Abraços e até o próximo post,

DIEGO GARCIA FRANCISCO
DBA Oracle
Oracle Database 11g Administrator Certified Associate
(21) 7925-4500 / (21) 8714-2496




3 comentários: