#!/bin/sh # # The purpose of the script is to do the following for each listener ... # 1. "Swap" the listener log file # # Issued by Cron [55 23 * * 0] # # File : listenerlog_swap1.sh # Author : Ravin Maharaj # NB!! : Please do NOT modify or delete this script # without prior consent from the author MAILLIST="/usr/bin/utils/listener" HOST=`uname -n`" : " WorkDir="/oracle/scripts" listeners="${WorkDir}/listeners" lsnrcol5="${WorkDir}/lsnrcol5" SUBJECT="Subject: " LSNRRUNNING=`ps -ef | grep tns | grep -v grep` if [ -n "{LSNRRUNNING}" ] then ps -ef | grep tns | grep -v grep | awk '{print $5}' > ${lsnrcol5} # Get listener names for i in `cat ${lsnrcol5}` do case "${i}" in "Jan"|"Feb"|"Mar"|"Apr"|"May"|"Jun"|"Jul"|"Aug"|"Sep"|"Oct"|"Nov"|"Dec") ps -ef | grep tns | grep -v grep | awk '{print $10}' > ${listeners} ;; *) ps -ef | grep tns | grep -v grep | awk '{print $9}' > ${listeners} ;; esac done rm -f ${lsnrcol5} if [ -s "${listeners}" ] then for i in `cat ${listeners}` do uptime=`lsnrctl status ${i} | grep Uptime` if [ ${?} -eq 0 ] then lsnrlog=`lsnrctl status ${i} | grep "Listener Log" | awk '{print $4}'` if [ ! -f "${lsnrlog}" ] then echo "${lsnrlog} does not exist" echo "${HOST} ${lsnrlog} does not exist" >> ${MAILLIST} exit 1 fi printf "Now swapping the listener log for listener ${i}\n" KeepLogFile="${lsnrlog}.`date '+%d%b%Y'`" echo "LogFile is ${lsnrlog}" # This will copy the listener log file to a save_set and initialise it echo "Appending ${lsnrlog} to ${KeepLogFile}" cat ${lsnrlog} >> ${KeepLogFile} if [ ${?} -eq 0 ] then cat /dev/null > ${lsnrlog} if [ ${?} -eq 0 ] then echo "${lsnrlog} initialised" # Name of listener log file # ========================= echo "${i}.log" > ${WorkDir}/lsnrlogfile # Length (number of bytes) of name of listener log file # ----------------------------------------------------- lngth_logfle=`cat ${WorkDir}/lsnrlogfile | \ awk '{print length($1)}` # Remove temporary file # --------------------- rm -f ${WorkDir}/lsnrlogfile # Length of full listener log path (i.e incl log name) # ==================================================== lngth_logpth=`lsnrctl stat ${i} | grep "Listener Log" | \ awk '{print length($4)}'` # Length of log path (excl log name) # ================================== ((lngth_logdir = ${lngth_logpth} - ${lngth_logfle})) # Listener log directory # ====================== lsnrlogdir=`lsnrctl status ${i} | grep "Listener Log" | \ awk '{print $4}' | cut -c1-${lngth_logdir}` logcnt=`find ${lsnrlogdir} -name "${i}.log.*" -mtime +7 | wc -w` echo "Removing ${logcnt} ${i}.log files older than 7 days" find ${lsnrlogdir} -name "${i}.log.*" -mtime +7 -exec rm {} \; else echo "${lsnrlog} could not be initialised" echo "${HOST} ${lsnrlog} could not be initialised" >> ${MAILLIST} fi else SUBJECT="Subject: Copy Error for listener log - ${i}" echo "Appending ${lsnrlog} to ${KeepLogFile} - failed !!!\n" echo "Initialise of ${lsnrlog} not done" echo "${HOST} Appending/Initialise of ${lsnrlog} failed" >> ${MAILLIST} fi fi done rm -f ${listeners} else echo "${SUBJECT} Scan listeners failed\n" echo "${HOST} Scan for listeners failed" >> ${MAILLIST} fi else printf "Unable to swap listener log files - Listener down\n" echo "${HOST} Unable to swap listener log files - Listener down" >> ${MAILLIST} fi