Eu tento limpar alguns arquivos no oracle. Eu uso adrc. Desejo limpar os arquivos de rastreamento no arquivo do ouvinte. Mas não é trabalho. Eu não sei por quê.
[grid@orcl1 app]$ adrci
adrci> set homepath diag/tnslsnr/orcl1/listener
adrci> purge -age 360 -type alert
adrci> purge -age 60 -type trace
adrci> purge -age 1 -type trace
adrci> exit
Tracefile ainda cheio com 4,9 GB.
[root@orcl1 trace]# ls -alh
total 4.9G
drwxr-xr-x 2 grid oinstall 4.0K Nov 2 12:43 .
drwxr-xr-x 14 grid oinstall 4.0K May 7 14:48 ..
-rw-r----- 1 grid oinstall 43M Aug 28 2014 listener_backup_20140828.log.bz2
-rw-r----- 1 grid oinstall 4.8G Nov 2 12:43 listener.log
[root@orcl1 trace]# pwd
/u01/app/grid/diag/tnslsnr/orcl1/listener/trace
O ADRCI exclui os arquivos XML, mas não os logs de texto simples, o que é um incômodo.
Uma solução fácil, mas suja, seria sobrescrever o arquivo com conteúdo vazio, por exemplo:
A exclusão do arquivo enquanto o listener está em execução e o log está ativado pode não levar ao resultado esperado devido à implementação de manipulação de arquivo em plataformas Linux/UNIX.
Outra solução é desativar temporariamente o registro, excluir (ou mover ou compactar) o listener.log e ativar o registro novamente:
Obviamente, se você quiser, basta parar o ouvinte, cuidar do log do ouvinte e, em seguida, iniciar o ouvinte novamente.
adrci purge removerá arquivos de acordo com seus comandos, mas não o conteúdo dos arquivos de rastreamento ou log.
Mesmo que seu listener.log tenha conteúdo de semanas/meses/anos, ele foi modificado hoje se o listener estiver ativo e aceitando conexões. O mesmo para uma limpeza de log de alerta, se o banco de dados estiver online e o arquivo foi atualizado hoje, nenhuma limpeza será executada.
Se eu encontrar um enorme log antigo de alerta ou listener, vou copiá-los, compactar a cópia e, em seguida, fazer um >listener.log que truncará o log, mas permitirá que os processos em execução continuem a atualizá-lo.