Começando pelo final rs…. basta executar o script abaixo com seus devidos parâmetros.
[oracle@host script]$ limpezaLogU01.sh
É necessário passar os parâmetros de instância e tempo de retenção, caso contrario ele fará a pergunta e mostrará as instâncias disponíveis , exemplo:
[oracle@host script]$ ./limpezaLogU01.sh
DEFINA INSTANCIA: ORCL
[oracle@host script]$ ./limpezaLogU01.sh ORCL
DEFINA DIAS DE RETENÇÂO: 1 | 2 | 3 | 4 …. |10|20|30
A maneira correta é passar a instância e a quantidade de dias de retenção que deseja remover. Ele executará a limpeza e vai gerar um arquivo de log:
[oracle@host script]$ ls -l *.out
-rw-rw-r– 1 oracle oracle 831 Nov 24 14:50 limpezaLogU01_host.20161124.out
[oracle@host script]$ cat limpezaLogU01_ORCL.20170316.out
INICIO DA LIMPEZA DE LOG DO SERVIDOR host /u01: 16-Mar-17*14:38:02
STATUS INICIAL DO /u01:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb 10190136 4983692 4682156 52% /u01
REMOVENDO TRACES MAIS ANTIGOS:
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_22992.trc 1.1K 3Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_13943.trc 1.8K 3Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_23624.trc 1.5K 2Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_3203.trc 1.1K 3Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_8082.trc 1.1K 3Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_12062.trm 60 4Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_9053.trm 59 3Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_1929.trm 110 3Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_31939.trm 60 3Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_1998.trm 300 2Mar
/u01/app/oracle/admin/../diag/rdbms/ORCL/trace/ORCL_ora_25536.trm 376 3Mar
TRACES REMOVIDOS : 16-Mar-17*14:38:03
REMOVENDO ALERTS MAIS ANTIGOS:
ALERTS REMOVIDOS : 16-Mar-17*14:38:03
STATUS FINAL DO /u01:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb 10190136 4980072 4685776 52% /u01
FIM DA LIMPEZA DE LOG DO SERVIDOR host /u01: 16-Mar-17*14:38:03
Agora, para entender como isso acontece SCRIPT
#!/bin/bash ################################################# # Rotina de Limpeza de Log (/u01) # # Servidor de Banco de Dados # # Criado por Kenia Milene Galiego # # Data: 24/11/2016 # ################################################# export host=`hostname` export DATE=`date +%Y%m%d` export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db1 export INSTANCIA=`cat /etc/oratab|egrep ':N|:Y'|grep -v \*|cut -f1 -d':'| sed 'N;s/\n/ /' ` if [ -z "$1" ] ; then echo echo " DEFINA INSTANCIA: $INSTANCIA " echo exit fi if [ -z "$2" ] ; then echo echo " DEFINA DIAS DE RETENCAO: 1 | 2 | ..... 10 | 20 | 30 " echo exit fi export ORACLE_SID=$1 export retencao=$2 export DBA=`echo $ORACLE_HOME | sed -e 's:/product/.*::g'`/admin export SID_MIN=`echo $ORACLE_SID | tr 'A-Z' 'a-z'` export SID_MAX=`echo $ORACLE_SID | tr 'a-z' 'A-Z'` export LOG_FILE=/u08/app/oracle/script/limpezaLogU01_$ORACLE_SID.$DATE.out export TRACE=$DBA/../diag/rdbms/$SID_MIN/$SID_MAX/trace/ export ALERT=$DBA/../diag/rdbms/$SID_MIN/$SID_MAX/alert/ export AUDIT=$DBA/$ORACLE_SID/adump/ ## START DA LIMPEZA DE LOG /u01 echo " " > $LOG_FILE echo " INICIO DA LIMPEZA DE LOG DO SERVIDOR $host /u01: `date +%d-%h-%y*%H:%M:%S` " >> $LOG_FILE echo " " >> $LOG_FILE echo " STATUS INICIAL DO /u01: " >> $LOG_FILE df | sed '2,4 d' | head -2 >> $LOG_FILE echo " " >> $LOG_FILE echo " REMOVENDO TRACES MAIS ANTIGOS: " >> $LOG_FILE find $TRACE -iname "*.trc" -mtime +$retencao -exec ls -lh {} \; | awk '{print $9 " " $5 " " $7$6 }' >> $LOG_FILE find $TRACE -iname "*.trc" -mtime +$retencao -exec rm {} \; >> $LOG_FILE find $TRACE -iname "*.trm" -mtime +$retencao -exec ls -lh {} \; | awk '{print $9 " " $5 " " $7$6 }' >> $LOG_FILE find $TRACE -iname "*.trm" -mtime +$retencao -exec rm {} \; >> $LOG_FILE find $AUDIT -iname "*.trm" -mtime +$retencao -exec ls -lh {} \; | awk '{print $9 " " $5 " " $7$6 }' >> $LOG_FILE find $AUDIT -iname "*.trm" -mtime +$retencao -exec rm {} \; >> $LOG_FILE echo " " >> $LOG_FILE echo " TRACES REMOVIDOS : `date +%d-%h-%y*%H:%M:%S` " >> $LOG_FILE echo " " >> $LOG_FILE echo " REMOVENDO ALERTS MAIS ANTIGOS: " >> $LOG_FILE find $ALERT -iname "*.xml" -mtime +$retencao -exec ls -lh {} \; | awk '{print $9 " " $5 " " $7$6 }' >> $LOG_FILE find $ALERT -iname "*.xml" -mtime +$retencao -exec rm {} \; >> $LOG_FILE find $ALERT2 -iname "*.xml" -mtime +$retencao -exec ls -lh {} \; | awk '{print $9 " " $5 " " $7$6 }' >> $LOG_FILE find $ALERT2 -iname "*.xml" -mtime +$retencao -exec rm {} \; >> $LOG_FILE echo " " >> $LOG_FILE echo " ALERTS REMOVIDOS : `date +%d-%h-%y*%H:%M:%S` " >> $LOG_FILE echo " STATUS FINAL DO /u01: " >> $LOG_FILE df | sed '2,4 d' | head -2 >> $LOG_FILE echo " " >> $LOG_FILE echo " " >> $LOG_FILE echo " FIM DA LIMPEZA DE LOG DO SERVIDOR $host /u01: `date +%d-%h-%y*%H:%M:%S` " >> $LOG_FILE echo " " >> $LOG_FILE
Meus dois centavos !!
Kenia Milene
Seguir @keniamilene