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 oalert.log
elistener.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
Postar um comentário