Oracle 跟蹤/告警/監聽日誌的清理指令碼

maohaiqing0304發表於2017-03-27


作者:lōττéry©版權所有[文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任.]



**** 避免太多小檔案導致系統的索引空間不足..

[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 <<END
    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 <<END
    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



DB建立使用者:
     SQL> create user lottery identified by lottery;
     SQL> grant connect to lottery ;
     SQL> grant select any table to lottery;
     SQL> grant select any dictionary to lottery;


此條目發表在 Oracle 分類目錄。將加入收藏夾。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28602568/viewspace-2136129/,如需轉載,請註明出處,否則將追究法律責任。

相關文章