sexta-feira, 14 de outubro de 2016

Conhecendo o mundo do tal do ODA - purgeODALog Tool

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. 

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

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
    [ -orcl ] | 
 [ -tfa ]  |
    [ -osw ]  | 
 [ -oak ]  |
    [ -extra '    ': | [, '     ':] ]
    [ -lsnr ]
    [ -dryrun ]
OPTIONS:
-orcl             Purge only GI/RDBMS logs & traces (Default 30 days)
-tfa               Purge only TFA repository older then # days (Default 30 days)
-osw             Purge only OSW archives older then # days (Default 30 days)
-oak              Purge only OAK logs and trace older then # days (Default 30 days)
-extra '':        Purge only files in user specified folders (Default 30 days)
-lsnr              It will force the cleanup of listeners log independently by the age
-dryrun         It will show the purge commands w/o execute them
-h                 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 

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            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroupSys-LogVolU01
  97G   79G   14G  86% /u01
-- Depois
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroupSys-LogVolU01
  97G   63G   30G  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

Nenhum comentário:

Postar um comentário

Isso te ajudou? Comente...

Postagem em destaque

[ORACLE] Embedding ONNX model for Vector Search tests with Oracle Database 23ai

Hello, everyone. How's it going? Today, I'm going to show you how to load an ONNX model into the Oracle 23ai database for your vecto...