O arquivo de log de alerta do Oracle conhecido basicamente por alert.log é um log de mensagens e erros escritos pelo banco de dados que registra informações como desligamento e inicialização do banco, alterações de parâmetros, erros/alertas, entre outros.
Como sabemos este arquivo deve ser constantemente monitorado para detectar mensagens de alertas e erros, mas como podemos testar se nosso monitoramento esta realmente funcionando sem gerar um erro ou esperar que um aconteça?
Pois bem, a Oracle oferece uma package para podermos “escrever” no alertlog e arquivos de trace, vejamos:
1 – Gravar o erro em um arquivo de trace (trace file);
2 – Gravar o erro no alertlog;
3 – Gravar o erro no alertlog e em um arquivo trace.
O segundo é a mensagem ou texto a ser escrito:
SQL> EXEC SYS.DBMS_SYSTEM.KSDWRT(2,'ORA-00600: TESTE ANDERSON'); PL/SQL procedure successfully completed. SQL> EXEC SYS.DBMS_SYSTEM.KSDWRT(2,'ORA-00600: internal error code, arguments: [ANDERSON], [12345], [], [], [], [], []'); PL/SQL procedure successfully completed.
Verificando o alert log podemos constatar que a simulação foi realizada com sucesso.
maquina-de-teste > tail -n 10 alert_teste.log Current log# 2 seq# 17929 mem# 0: /oraprd01/app/oracle/oradata/teste/redo02a.log Current log# 2 seq# 17929 mem# 1: /oraprd02/oradata/teste/redo02b.log Mon Feb 06 18:08:50 2012 Archived Log entry 26302 added for thread 1 sequence 17928 ID 0x341cf6e dest 1: Archived Log entry 26303 added for thread 1 sequence 17928 ID 0x341cf6e dest 2: Mon Feb 06 18:12:19 2012 Mon Feb 06 18:13:36 2012 ORA-00600: TESTE ANDERSON Mon Feb 06 18:14:34 2012 ORA-00600: internal error code, arguments: [ANDERSON], [12345], [], [], [], [], []
Uma boa prática que podemos adotar é utilizar esta package para registrar o DBID do database no alertlog(via trigger, scheduler, etc..), visto que é fundamental também matermos registrado em outros locais assim como uma copia dos backups pois nunca sabemos quando um desastre pode ocorrer…
SQL> declare dbid number; begin select dbid into dbid from v$database; dbms_system.ksdwrt(2,'DBID = '||dbid); end; / PL/SQL procedure successfully completed.
Alert log do banco de dados:
maquina-de-teste > tail -n 10 alert_teste.log Mon Feb 06 18:08:50 2012 Archived Log entry 26302 added for thread 1 sequence 17928 ID 0x341cf6e dest 1: Archived Log entry 26303 added for thread 1 sequence 17928 ID 0x341cf6e dest 2: Mon Feb 06 18:12:19 2012 Mon Feb 06 18:13:36 2012 ORA-00600: TESTE ANDERSON Mon Feb 06 18:14:34 2012 ORA-00600: internal error code, arguments: [ANDERSON], [12345], [], [], [], [], [] Mon Feb 06 18:22:50 2012 DBID = 54669934
0 comentários:
Postar um comentário