10、11、12c集群数据库部署监听清理脚本操作手册

此脚本可以布置在自动任务crontab可以自动清理集群的listener日志,会先做一个.bak备份再把老的清理,并且同事也会清理除log.xml之外的log_*.xml

具体看脚本吧,在自己的环境下可以先尝试下

do_clear_11g(){
listener_group=$(ps -ef|grep tnslsnr|grep -v grep|awk '{print $(NF-1)}')
for listener in $listener_group
  do
    logxml=$(lsnrctl status $listener|grep "Listener Log File"|awk '{print $NF}')
    len=${#logxml}
    need=$(expr $len - 14)
    logpath=$(echo $logxml|cut -c 1-"$need") 
    tracepath=$(echo $logpath"/trace") 
    logfile=$(ls -lt $tracepath|grep -i $listener|grep -i log|grep -v bak|awk 'NR==1 {print $NF}')   
    alertpath=$(echo $logpath"/alert")
    find $alertpath -name log_*.xml -mtime +1 -exec rm {} \; 
    
    cp  $tracepath"/"$logfile $tracepath"/"$logfile".bak"
    >$tracepath"/"$logfile 
  done
 }

do_clear_12c(){
listener_group=$(ps -ef|grep tnslsnr|grep -v grep|awk '{print $(NF-2)}')
for listener in $listener_group
  do
    logxml=$(lsnrctl status $listener|grep "Listener Log File"|awk '{print $NF}')
    len=${#logxml}
    need=$(expr $len - 14)
    logpath=$(echo $logxml|cut -c 1-"$need") 
    tracepath=$(echo $logpath"/trace") 
    logfile=$(ls -lt $tracepath|grep -i $listener|grep -i log|grep -v bak|awk 'NR==1 {print $NF}')     
    alertpath=$(echo $logpath"/alert")
    find $alertpath -name log_*.xml -mtime +1 -exec rm {} \; 
    
    
    cp  $tracepath"/"$logfile $tracepath"/"$logfile".bak"
    >$tracepath"/"$logfile
  done
 }
  
do_clear_10g(){
listener_group=$(ps -ef|grep tnslsnr|grep -v grep|awk '{print $(NF-1)}')
for listener in $listener_group
  do
    logpath=$(lsnrctl status $listener|grep "Listener Log File"|awk '{print $NF}')
    cp $logpath $logpath".bak"
    >$logpath 
  done
}


lsnr_path=`ps -ef|grep tnslsnr|grep -v grep|awk 'NR==1 {print substr($(NF-2),1,(length($(NF-2))-7))}'`
export ORACLE_HOME=`ps -ef|grep tnslsnr|grep -v grep|awk 'NR==1 {print substr($(NF-2),1,(length($(NF-2))-12))}'`
export PATH=$lsnr_path:$PATH
lsnr_version=`lsnrctl version|awk 'NR==2 {print substr($5,1,2)}'`

if [ $lsnr_version -eq 11 ] ;
then
  do_clear_11g
fi

if [ $lsnr_version -eq 10 ] ;
then
  do_clear_10g
fi

if [ $lsnr_version -eq 12 ] ;
then
  do_clear_12c
fi

猜你喜欢

转载自blog.csdn.net/az65381973/article/details/87358787