Gerencie os Logs do Oracle com logrotate de Forma Eficiente

Em ambientes Unix/Linux, a geração contínua de logs — especialmente em sistemas de banco de dados como Oracle — pode rapidamente consumir espaço em disco e comprometer a organização do sistema. Felizmente, o logrotate é uma ferramenta nativa do sistema operacional que pode ajudar a automatizar a rotação, compressão e expurgo desses arquivos.

Embora tradicionalmente usado para gerenciar logs do sistema, como os do syslog ou nginx, o logrotate pode ser perfeitamente adaptado para cuidar dos logs do listener e do alert log do Oracle Database — arquivos que, se não gerenciados, crescem indefinidamente.

O logrotate é uma ferramenta do Sistema Operacional Unix que auxilia na administração de logs do sistema que geram quantidades muito grandes de logs.

É possível aproveitar esta ferramenta para criar regras de reciclagem, limpeza e arquivamento dos logs de listener e do alertlog.

Os arquivos de rotação de log são configurados em /etc/logrotate.d

Configurações:

| **Diretiva**      | **Descrição (traduzida)**                                                                                                                                                   |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **daily**         | Os arquivos de log são rotacionados todos os dias.                                                                                                                          |
| **weekly**        | Os arquivos de log são rotacionados se o dia da semana atual for anterior ao do último giro ou se já tiver passado mais de uma semana desde a última rotação.               |
| **monthly**       | Os arquivos de log são rotacionados na primeira vez que o `logrotate` é executado no mês (geralmente no primeiro dia do mês).                                               |
| **notifempty**    | Não rotacione o log se ele estiver vazio (essa opção sobrescreve `ifempty`).                                                                                                |
| **nocompress**    | Versões antigas dos arquivos de log não são comprimidas.                                                                                                                    |
| **delaycompress** | Adia a compressão do arquivo de log anterior para o próximo ciclo de rotação. Só tem efeito quando usado junto com `compress`. Útil quando programas ainda escrevem no log. |
| **compress**      | Versões antigas dos arquivos de log são comprimidas com `gzip` por padrão.                                                                                                  |
| **mail address**  | Quando um log é rotacionado para fora (deixando de existir), ele é enviado por e-mail para o endereço especificado. Se nenhum e-mail deve ser gerado, usa-se `nomail`.      |
| **missingok**     | Se o arquivo de log estiver ausente, continue com o próximo sem exibir mensagem de erro.                                                                                    |

No exemplo abaixo foi configurado o alertlog para que tenha uma rotação mensal, onde os arquivos seão armazenados por 12 meses e comprimidos.
 cat /etc/logrotate.d/oracle-rotatelogs
/oracle/diag/rdbms/logixprd/LOGIX/trace/alert_LOGIX.log{
    missingok
    monthly
    rotate 12
    compress
    delaycompress
    create 640 oracle oracle
}

Boas Praticas

  • Use delaycompress com o alert.log e listener.log, pois o Oracle pode continuar escrevendo no arquivo logo após a rotação.

  • Combine logrotate com um cron job diário para garantir que a rotação ocorra regularmente.

  • Revise permissões com create para evitar problemas de acesso do Oracle aos novos arquivos.

  • Considere criar regras similares para o listener.log localizado em $ORACLE_HOME/network/log.


Comentários