Limpeza de logs antigos e arquivos desnecessários é uma tarefa simples e recorrente para qualquer DBA Oracle.
Um simples comando rm -rf *.trc ou rm -rf *.trm limpa os arquivos antigos dos diretórios de logs do Oracle Database.
É comum acessar essa estrutura de pasta /u01/app/oracle/diag/rdbms/vs05/vs05/trace e se deparar com GBs e mais GBs de dados de trace, logs e afins.
Exemplo: meu banco de dados vs05 possui alarmantes 32GB de arquivos de logs, alert log, dentre outros:
[code lang=”sql”]
[root@server01 vs05]# pwd
/u01/app/oracle/diag/rdbms/vs05/vs05
[root@server01 vs05]# du -sh
32G
[root@server01 vs05]#
[/code]
Vamos checar qual pasta possui mais arquivos:
[code lang=”sql”]
[root@server01 vs05]# du -sh * | sort -h
4.0K lck
4.0M metadata
11G trace
22G alert
[root@server01 vs05]#
[/code]
Tendo em vista que as maiores pastas são trace e alert, vamos fazer a limpeza nos arquivos contido nelas. Os arquivos a serem excluídos são: .trm e .trc:
[code lang=”sql”]
[root@server01 trace]# rm -rf *.trm
-bash: /usr/bin/rm: Argument list too long
[root@server01 trace]# rm -rf *.trc
-bash: /usr/bin/rm: Argument list too long
[/code]
Para contornar o erro acima, basta executar o comando abaixo, diferente do rm -rf *.trm, ele não irá estourar o buffer e retornar o erro:
[code lang=”sql”]
[root@server01 trace]# find . -name "*.trm" -print0 | xargs -0 rm
[/code]
Essa limitação para remover arquivos é do sistema operacional, varia de distribuição para distribuição e pode ser consultado através do comando # getconf ARG_MAX !
Aproveite e use por conta e risco 😀
Uma resposta
Muito obrigado pelo post. Realmente foi de muita ajuda, Léo.