Sei sulla pagina 1di 2

#!

/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

Potrebbero piacerti anche