Conhecendo o mundo do tal do ODA - purgeODALog Tool 
Autor: Mario Barduchi | Publicado: 2016-10-14T23:28:00-03:00


Olá pessoal.



Quem trabalha com o Oracle Database Appliance (ODA) já deve ter reparado como são gerados muitos arquivos de log, trace, etc.



É uma enormidade mesmo. E como na configuração do ODA o "/u01" vem com um tamanho relativamente pequeno, várias vezes chegamos a ter uma ocupação alta dessa área.



Mesmo configurando o ADRCI para fazer o purge dos arquivos de alert, trace, etc ainda temos vários outros tipos de arquivos gerados e que vão ficando por lá consumindo muito espaço.&nbsp;



Para resolver isso, apesar de muitos DBA's não conhecerem, a Oracle oferece um script de limpeza muito simples de ser usado.&nbsp;



Mas cuidado, como tudo tem seu lado negro da força, se errar na passagem de parâmetros você pode gerar sérios probemas já que o script é executado como root e ele limpa mesmo, sem piedade.



Informações detalhadas desse script vocês acham em "ODA (Oracle Database Appliance): Cleanup trace and log files Using purgeODALog Tool (Doc ID 2081655.1)".



Repare na mensagem muito importante do note:







AHAHHAH, ou seja, use por sua conta e risco e com muito cuidado.



Abaixo, vou mostrar um exemplo que uso esse script.



Primeiro é claro, faça o download do script no note acima. Eu salvo esse script no home do root, mas escolha onde achar melhor.



O uso pode ser individual ou com várias opções combinadas.



Usage:

purgeODALog
&nbsp; &nbsp; [ -orcl  ] |&nbsp;

   &nbsp;[ -tfa  ] &nbsp;|

&nbsp; &nbsp; [ -osw  ] &nbsp;|&nbsp;

   &nbsp;[ -oak  ] &nbsp;|

&nbsp; &nbsp; [ -extra ' &nbsp; &nbsp;': | [, ' &nbsp; &nbsp;&nbsp;':] ]

&nbsp; &nbsp; [ -lsnr ]

&nbsp; &nbsp; [ -dryrun ]

   

OPTIONS:

 -orcl  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Purge only GI/RDBMS logs &amp; traces (Default 30 days)

 -tfa  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Purge only TFA repository older then # days (Default 30 days)

 -osw &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Purge only OSW archives older then # days (Default 30 days)

 -oak  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Purge only OAK logs and trace older then # days (Default 30 days)

 -extra '':&nbsp; &nbsp; &nbsp; &nbsp; Purge only files in user specified folders (Default 30 days)

 -lsnr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;It will force the cleanup of listeners log independently by the age

 -dryrun &nbsp; &nbsp; &nbsp; &nbsp; It will show the purge commands w/o execute them

 -h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Display this help and exit



Eu costumo usar assim, em alguns de meus ambientes:

 

 1) Lista o que vai ser excluído, sem é claro efetuar a limpeza.

 ./purgeODALog -orcl 15 -tfa 15 -osw 15 -oak 15 -lsnr -dryrun&nbsp;



 2) Efetua a limpeza

 ./purgeODALog -orcl 15 -tfa 15 -osw 15 -oak 15 -lsnr



 O final do log gerado é esse:

 ...

 2016-10-13 09:58:45: I ... purging ALERT older than 15 days

 2016-10-13 09:58:45: I ... purging INCIDENT older than 15 days

 2016-10-13 09:58:45: I ... purging TRACE older than 15 days

 2016-10-13 09:58:45: I ... purging CDUMP older than 15 days

 2016-10-13 09:58:45: I ... purging HM older than 15 days

 2016-10-13 09:58:45: I Purging TFA archives older then 15 days

 2016-10-13 09:58:48: I Purging OSW archives older then 15 days

 2016-10-13 09:58:48: I Purging OAK logs older then 15 days

 2016-10-13 09:58:48: S Purging completed succesfully!



Veja o antes e depois do diretório onde a limpeza aconteceu:

 

 -- Antes

 Filesystem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Size &nbsp;Used Avail Use% Mounted on

 /dev/mapper/VolGroupSys-LogVolU01

       &nbsp; 97G &nbsp; 79G &nbsp; 14G &nbsp;86% /u01

 

 -- Depois 

 Filesystem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Size &nbsp;Used Avail Use% Mounted on

 /dev/mapper/VolGroupSys-LogVolU01

       &nbsp; 97G &nbsp; 63G &nbsp; 30G &nbsp;68% /u01



 

Deixei separado aqui para mostrar a opção "extra". Ela é muito interessante, mas como disse acima devemos tomar muito cuidado.  



Digamos que temos a pasta "/tmp/exemplo" e lá temos alguns arquivos e mais um outro diretório chamado "outrapasta".

 

[srv1 exemplo]$ su -



[srv1 exemplo]$ cd /tmp/exemplo



[srv1 exemplo]$ pwd

 /tmp/exemplo



[srv1 exemplo]$ ls -lrht

 -rw-r--r-- 1 oracle oinstall 0 Sep 14 10:16 z.txt

 -rw-r--r-- 1 oracle oinstall 0 Sep 14 10:16 x.txt

 -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:16 y.txt

 -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:16 zzz.dmp

 -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:17 www.dmp

 -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:17 aaa.log

 -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:19 outrapasta

        -rw-r--r-- 1 oracle oinstall 0 Sep 14 10:17 bbb.log

        -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:17 aaa.log

  

Vou passar para o script os parâmetros para:

 1) Limpar "/tmp/exemplo" e deixar apenas arquivos com menos de 10 dias.

 2) Limpar "/tmp/exemplo/outrapasta" e deixar apenas arquivos com menos de 20 dias. 

 

Agora é só executar:

 ./purgeODALog -extra '/tmp/exemplo':10, '/tmp/exemplo/outrapasta':20



 [srv1 exemplo]$ ls -lrht

  -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:16 y.txt

  -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:16 zzz.dmp

  -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:17 www.dmp

  -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:17 aaa.log

  -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:19 outrapasta

          -rw-r--r-- 1 oracle oinstall 0 Oct 14 10:17 aaa.log



Repare que só restaram os arquivos de Outubro, ou seja, os que tem menos do que 10 e 20 dias respectivamente.



E claro, você pode agendar essas limpezas no crontab para automatizar o processo.



É isso pessoal, espero que ajude.



Abraço

Mario