Day by day, alert log size will grow in Oracle database. So for housekeeping, we need to move the existing alert log to a backup location and compress there. Upon moving the alert log, the database will create a fresh alert log automatically.
-
Below is the shell script.
WE need to define the ORACLE_HOME in the script. and ORACLE_SID will be passed as an argument while running the script.
# $Header: rotatealertlog.sh # *====================================================================================+ # | AUTHOR : DBACLASS SUPPORT TEAM # | | # +====================================================================================+ # | #!/bin/bash echo ======================== echo Set Oracle Database Env echo ======================== ORACLE_SID=$1; export ORACLE_SID ORACLE_HOME=/oracle/app/oracle/product/12.1.0.2/dbhome_1 ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib; export LD_LIBRARY_PATH PATH=$ORACLE_HOME/bin:$PATH;export PATH TO_DATE="20`date +%y%m%d`"; export TO_DATE echo ======= echo Extract Alert log location echo ======= export VAL_DUMP=$(${ORACLE_HOME}/bin/sqlplus -S /nolog <<EOF conn /as sysdba set pages 0 feedback off; prompt SELECT value from v\$parameter where NAME='core_dump_dest'; exit; EOF ) export LOCATION=`echo ${VAL_DUMP} | perl -lpe'$_ = reverse' |awk '{print $1}'|perl -lpe'$_ = reverse'` export ALERTDB=${LOCATION}/alert_$ORACLE_SID.log export ELOG=$( echo ${ALERTDB} | sed s/cdump/trace/) echo ======= echo Compress current echo ======= if [ -e "$ELOG" ] ; then mv ${ELOG} ${ELOG}_${TO_DATE}; gzip ${ELOG}_${TO_DATE}; > ${ELOG} else echo not found fi exit
2. Configure in crontab:
SCHEDULE – Weekly once
Here, we have passed the ORACLE_SID (PRODDB) as argument
00 22 * * 5 /u01/app/oracle/dbscripts/rotatealertlog.sh PRODDB
Could you please correct the below script
set timing on;
set time on;
Inact=`select ‘Current inactive Session %’, (select count(*) from v/$session where status=’INACTIVE’ )*100/LIMIT_VALUE Inactive
from v/$resource_limit where resource_name = ‘sessions’;`
if [ $Inact -ge 50 ]
thenmailx -s “test” abc@dbaclass.com
else
echo “Memory utilization is under control”
fi
exit;
EOF