[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