[root ~]# cat del_oracle_log.sh
#!/bin/bash
source /home/oracle/.bash_profile
function audit_log()
{ #---audit_log日志跟踪文件
#audit_log=$(strings $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora|grep -i audit_file_dest|awk -F'=' '{print $NF}'|sed "s/'//g")
audit_log=`sqlplus -s /nolog <
connect lottery/lottery
set feedback off
set head off
select value from v\\$parameter where name='audit_file_dest';
END`
cd $audit_log
pwd=`pwd`
if [ $audit_log == $pwd ]
then
ls | xargs -n 10 rm -rf
echo '-------------------清理完------'$audit_log'路径'
fi
}
function log_xml()
{ #---Diag Alert -- log.xml文件的处理 只保留一个log.xml即可
log_xml=$(dirname `lsnrctl show log_file|grep -i log_file|awk '{print $NF}'`)
cd $log_xml
pwd=`pwd`
if [ $log_xml == $pwd ]
then
echo `ls |grep -v log.xml` | xargs -n 10 rm -rf
echo '-------------------清理完------'$log_xml'路径'
fi
}
function listener()
{ #---listener.log文件的处理
listener_log=$(lsnrctl show trc_directory|grep -i trc_directory|awk '{print $NF}')
cd $listener_log
pwd=`pwd`
if [ $listener_log == $pwd ]
then
echo '' > listener.log
echo '-------------------清理完------'$listener_log'/listener.log'
fi
}
function alert_log()
{ #----alert.log以外的文件清理
alert_log=`sqlplus -s /nolog <
connect lottery/lottery
set feedback off
set head off
select value from v\\$diag_info where upper(name)=upper('Diag trace');
END`
cd $alert_log
pwd=`pwd`
if [ $alert_log == $pwd ]
then
echo `ls |grep -v alert `| xargs -n 10 rm -rf
echo '-------------------清理完------'$alert_log'路径'
fi
}
function main()
{
if [ `ps -ef|grep oracle|grep -i smon|grep -v grep|wc -l` -eq 1 ]
then
echo '----------------'`date`'------------------开始清理---------------------------'
#/*每天清理audit_log(跟踪)、log_xml*/
audit_log
log_xml
#/*每月1号清理alert_log{异常分析}、listener(监听log)*/
date_=`date +%d`
if [ $date_ -eq 1 ]
then
alert_log
listener
fi
echo '----------------'`date`'------------------结束清理---------------------------'
fi
}
main