Oracle + Linux: logrotate

Dica rápida.

Para que seu banco de dados não fique com um Alert Log gigantesco, difícil de ser analisado, você pode utilizar o logrotate padrão do Linux.

Basta adicionar uma entrada (lá no final do arquivo) no arquivo de configuração do logrotate, informando qual é o arquivo, quando ele deve ser rotacionado (eu coloquei daily – diariamente), e quantos dias devem ser guardados (eu coloquei 90). Para conhecer todas as opções, leia o manual (man logrotate), mas só de ler o arquivo de configuração já dá para entender como o básico funciona.

[root@nerv09 ~]# vi /etc/logrotate.conf
[root@nerv09 ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log {
    daily
    rotate 90
}

# system-specific logs may be also be configured here.
[root@nerv09 ~]# ls -lh /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log*

E para executar o rotate agora, pode ser utilizada a opção –force.

[root@nerv09 ~]# ls -lh /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log*
-rw-r-----. 1 oracle oinstall  40K Aug  1 05:50 /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
-rw-r-----. 1 oracle oinstall 1.7M Jul 31 17:00 /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log-20170731
[root@nerv09 ~]# logrotate --force /etc/logrotate.conf
[root@nerv09 ~]# ls -lh /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log*
-rw-r-----. 1 oracle oinstall    0 Aug  1 05:52 /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
-rw-r-----. 1 oracle oinstall 1.7M Jul 31 17:00 /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log-20170731
-rw-r-----. 1 oracle oinstall  40K Aug  1 05:50 /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log-20170801
[root@nerv09 ~]#

10 comments

  1. Excelente dica!
    Isso elimina uma rotina externa que uso, agendada no crontab.

    Obrigado novamente!

  2. Bom dia Portilho, excelente dica. Porém, pessoalmente prefiro criar um arquivo específico dentro do /etc/logrotate.d

    Por exemplo, crio o arquivo /etc/logrotate.d/oracle:
    /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log {
    daily
    rotate 90
    }
    /u01/app/oracle/diag/rdbms/orcl1/ORCL1/trace/alert_ORCL1.log {
    daily
    rotate 90
    }

    Assim o sysadmin não reclama de mexer num arquivo de configuração do Linux. 🙂

    1. Vários Logs de Alert Log? Eu faria da mesma forma.
      Se você tiver uns 30 Alert Logs o arquivo vai ficar feio, mas se você tem 30 instâncias em um servidor já está tudo feio…

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.