Escrevendo no Alert log

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:

O primeiro valor informado na chamada tem como objetivo:

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 ORACLE HOME');

PL/SQL procedure successfully completed.

SQL> EXEC SYS.DBMS_SYSTEM.KSDWRT(2,'ORA-00600: internal error code, arguments: [OracleHome], [12345], [], [], [], [], []');

PL/SQL procedure successfully completed.

Verificando o alertlog 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 ORACLE HOME
Mon Feb 06 18:14:34 2012
ORA-00600: internal error code, arguments: [OracleHome], [12345], [], [], [], [], []

Uma boa prática que podemos adotar é utilizar esta package para registrar o DBID do database no alertlog, 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.

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 ORACLE HOME
Mon Feb 06 18:14:34 2012
ORA-00600: internal error code, arguments: [OracleHome], [12345], [], [], [], [], []
Mon Feb 06 18:22:50 2012
DBID = 54669934

%name Escrevendo no Alert log

Autor: Anderson Graf

Bacharel em Sistemas de Informação e MBA em Gestão de Banco de Dados Oracle. Entusiasta da tecnologia Oracle, ACE Associate ♠, autor em vários blogs e OTN. Consultor Oracle Senior na Exímio Soluções em TI

Envolvido em soluções de:
– Implementação, migração, gerenciamento e suporte a produtos Oracle, multiplataforma
– Monitoramento de ambientes 24×7
– Backup e Recovery
– Performance e Tuning
– Alta disponibilidade (HA) – RAC, Data Guard
– EM database/grid/cloud control
– Particionamento & Advanced Compression
– Oracle Engineered Systems – ODA, Exadata

Blog pessoal: http://www.andersondba.com.br
Articulista na Oracle Technology Network (OTN) – https://goo.gl/99R6yW
ACE Associate – https://goo.gl/MBB51b
Articulista GPO – http://profissionaloracle.com.br