quinta-feira, 26 de agosto de 2010

CONHECENDO MELHOR SEU BANCO DE DADOS : Redo Log Files - PARTE II

Estamos de volta pessoal, para retomarmos nosso assunto sobre Redo Log Files.
Espero que apreciem.

ENCONTREI PROBLEMAS DE TAMANHO DE REDO LOG FILE O QUE DEVO FAZER?


Bem, na nossa ultima abordagem sobre os arquivos de redo, nós vimos que era possivel, criar, adicionar membros e remover membros de maneira segura e eficaz.

Agora nós iremos ver que é possivel também realizar tarefas de REDIMENSIONAMENTO de arquivos de redo e também LIMPEZA dos mesmos.

Notadamente alguns de vocês já devem ter percebido que o Oracle não possibilita a realisazação do uso da clausula RESIZE em Redo log Files, portanto para que possamos redimensiona-los é necessário que nós os recriemos, seguindo os passos existentes no artigo anterior, removendo e recriando-os com os devidos tamanhos corretamente.

PRECISO LIMPAR MEUS REDO LOGS, COMO DEVO FAZER?  


Antes de mais nada é preciso entender o porque de realizar limpezas nos redos, isso ocorre porque via de regra os arquivos de redo tem problemas de corrupção em seus respectivos conteudos, o que impossibilita assim os serviços do Oracle de descarrega-los em disco, para solucionar este problema procede-se com a limpeza, como fazelo? Veja :


ALTER DATABASE CLEAR LOGFILE GROUP x;


Pronto com este comando acima, você limpa seus redos , deixando-os prontos para receberem dados novamente, caso esses problemas de corrupção em logs se repitam, eu sugiro que fique atento as entradas no seu alert log e monitore se possível as querys mais impactantes que exercem tarefas de DML.


COMO DEVO MONITORAR MEUS REDO LOG FILES?


Excelente questionamento, pois não é tarefa lá muito trivial ficarmos monitorando determinadas áreas, o mais comum é atentarmos apenas a TABLESPACES e ARCHIVES.


Para monitorarmos nossas áreas de REDO LOG utilizaremos como fonte de informação as nossas já conhecidas visões dinamicas, cujos nomes de algumas eu já citei que é a V$LOG e a V$LOGFILE, uma que eu ainda não lhes apresentei é a  :


V$LOG_HISTORY

V$LOG_HISTORY displays log history information from the control file.
Column Datatype Description
RECID NUMBER Control file record ID
STAMP NUMBER Control file record stamp
THREAD# NUMBER Thread number of the archived log
SEQUENCE# NUMBER Sequence number of the archived log
FIRST_CHANGE# NUMBER Lowest system change number (SCN) in the log
FIRST_TIME DATE Time of the first entry (lowest SCN) in the log
NEXT_CHANGE# NUMBER Highest SCN in the log
RESETLOGS_CHANGE# NUMBER Resetlogs change number of the database when the log was written
RESETLOGS_TIME DATE Resetlogs time of the database when the log was written




Pois bem, esta acima é mais uma arma de auxilio para os nossos problemas com Redo Log Files, como o proprio nome sugere, ela nos dá todas as informações em formato de histórico sobre as situações dos nossos arquivos de REDO.


ERROS "ORA" ENCONTRADOS, O QUE DEVO FAZER?

Como toda e boa estrutura Oracle, os arquivos de Redo não estão livres de erros, e podem sim gerar alguns problemas falados na lingua Oracle. LINGUA ORACLE? É pessoal não estranhem, seu banco fala com você, através do "dialeto" ORA-xxxx, é a maneira que o Banco de dados tem de sinalizar quando encontra algum problema que fuja da sua funcionalidade normal e ou seja causado por algo externo que tenha o forçado a trabalhar de maneira erronea,  vejamos abaixo alguns erros comuns relacionados a arquivos de Redo Log Files :


ORA-1571 - Este erro nos remete a uma situação de Migração mau feita, pois em caso do não desligamento normal do Banco para dar inicio ao processo de migração, dados relacionados a versão antiga podem se manter nos arquivos, nos ocasionando está mensagem de erro. Por isso em tarefas de MIGRAÇÃO proceda sempre de maneira prudente e seguindo os passos do README que vem junto com a maioria dos HOW-TO's encontrados no Oracle My  Support.


ORA-1184 - Bem tranquilo, aqui é apenas uma mensagem de WARNING informando que você esta tentando adicionar um arquivo que já existe, corrija a nomenclatura para um nome não existente e re-execute a tarefa.


ORA-0301 - Neste caso temos erros mais apurrados, que poderam ser encontrados em detalhes na forma dos TRACE FILES, isso se faz necessário que analisemos este trace, pois as causas podem ser inumeras.


ORA-17610 - Essa mensagem aparecerá sempre que você tentar criar um redo sem definir para ele um tamanho qualquer, vale salientar que em caso de uso de OMF não será encontrado este erro.

ORA-1185 - Aqui você deve atentar ao parametro MAXLOGFILES, pois este erro aparece quando se atinge o numero máximo de arquivos de REDO LOG no seu Banco de Dados.


ORA-1566 - Se você informar o mesmo nome de REDO na instrução de DROP , dará de cara com este erro. Neste caso remova apenas a entrada duplicada e prossiga.


ORA-1900 - Mais uma mensagem do tipo Warning, aqui é quando nós esquecemos de escrever LOGFILE (junto) e escrevemos LOG FILE (separado) na hora de exercer as tarefas de administração de REDO LOGS, este erro é para nos lembrar que a escrita esta errada.


ORA-0344 - Um erro tipicamente relacionado a problemas de localização, ou de limpeza de REDO LOG, aparece muito em operações de RESETLOGS e de CLEAR LOGFILE, check os diretórios destino se estão todos normais , com espaço e permissões de gravação.


ORA-0357 - Bem aqui esbarramos em um problema de quantidade de membros por grupo, essa mensagem nos informa que excedemos o numero de membros por grupo, devemos então diminuir o numero de membros e re-executar a tarefa.


ORA-0359 - Se você tentar remover um grupo de REDO que não exixta , vai se deparar com este erro especifico.


ORA-0360 - Aqui temos o mesmo problema acima , mais no caso é quando tentamos remover um MEMBRO que não existe.


ORA-0361 - Se você tentou remover o ultimo membro de um dos grupos e isso resultou neste erro, aborte a tarefa e remova o grupo todo.




SITUAÇÕES ENVOLVENDO REDO LOG'S. COMO FAZER PARA "DRIBLAR" ESTES PROBLEMAS?


Aqui vou tentar abordar algumas situações onde nossos arquivos de REDO são acessados, lidos ou somente mencionados, espero que ajude alguem esta parte. Vamos lá :


Acabei de iniciar minha instancia, onde meus arquivos de redo entram nesta história?
R: Qualquer modificação feita na sua instancia após este fato sera gravada no seu arquivo de REDO arquivados.


Meu Tempo de recover esta muito alto , o que eu posso fazer para diminuir isso?
R: Uma das coisas a serem feitas é reduzir o tamanho dos REDO LOG FILES.


Não sei o que fazer, os redos do meu grupo x corromperam, o que devo fazer para poder voltar ao normal, meu arquivamento esta parado?
R: Proceda com o comando de limpeza ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP x;


Estava fazendo uma analise no meu Banco de dados e identifiquei uma contenção nos meus redo log files, o que posso fazer?
R: Check antes se seus arquivos não estão num mesmo disco fisico, caso seja popsitiva sua resposta, proceda com a separação deles e depois aumente seu parametro de REDO LOG BUFFER.


Tive uma falha em um dos meus discos que estava em MIRROR, e este disco tinha BAD BLOCKS, isso ocasionou a perda de um MEMBRO de REDO, o que vai ocorrer com a minha Instancia?
R: Nada, neste caso sua instancia não é afetada.


Onde entra o papel dos meus REDO LOG's quando minha instancia é ABERTA?
R: Todos seus arquivos de REDO são lidos e abertos para tal.


Como faço para habilitar ou desabilitar o arquivamento dos meus REDO LOG's?
R: Coloque sua instancia em estado de MOUNT para isso.


Perdi um dos meus membros, se eu checar o status dele na V$LOGFILE, qual sera a resposta encontrada?
R: Estara com o FLAG de INVALID.


Sofri uma queda de energia no meu ambiente, e percebi que na hora do recover necessitei do meu redo, de que maneira ele me ajudou?
R: O processo de checkpoint ira verificar o final do seu redo log file e proceder com o instance recover e aplicação de seu conteudo através do SMON.


Bem pessoal, era isso que tinha pra dividir com vocês sobre REDO LOG FILES, espero que tenham apreciado, e que tenham se divertido tanto quanto eu.


Abraço á todos!!!