Shell Script for Oracle Database Monitoring
How to monitor Oracle Database by using Shell Script.
#!/bin/ksh
#set -x
#set -v
err() {
test -n “$@” && echo “ERROR: $@” >&2 # print error message if given
#echo “Value of ‘$@’: $@”>>$LOGFILE
mail_msg=$@
echo $mail_msg >> $LOGFILE
echo $mail_msg >> $LOGFILE
mailx -s “$S_MSG1” $V_MAILEES < $LOGFILE || exit 1
#rm -f $LOGFILE || exit 1
}
|
Set the environment:
set_env() {
umask 177
export DB
DTE=`date +%y_%m.%d.%H.%M`
SCRIPT_DIR=/home/oracle/scripts/EMV
ORACLE_HOME=/u00/app/oracle/product/19.0.0/db_1
export TNS_ADMIN=/home/oracle/scripts/EMV
PATH=$ORACLE_HOME/bin:$PATH
ORACLE_SID=R2D2
ORAENV_ASK=NO
. oraenv
export LOGFILE=$SCRIPT_DIR/EMV_connection_log_${DTE}.log
export CONN_ERR=$SCRIPT_DIR/EMV_connection_err_log_${DTE}.log
export ERR_LOG=$SCRIPT_DIR/EMV_ERR_LOG_${DTE}.log
export ORA_LOGFILE=$SCRIPT_DIR/EMV_ora_connection_log_${DTE}.log
export SQLPLUS=$ORACLE_HOME/bin/sqlplus
S_MSG1=”EMV_Connectivity issue with $CONN_STR”
export V_MAILEES=admin@ajara.tech,dba@ajara.tech
}
|
Main Function:
main()
{
set_env
#. $HOME/scripts/setdb $ORACLE_SID || err “Error while initializing DB”
#touch $LOGFILE || err “Error while creating log file $LOGFILE”
rm $LOGFILE
rm $ORA_LOGFILE
# Check the mail file
touch $LOGFILE || err “Error in creating mail file”
cat $SCRIPT_DIR/.db_names|grep -v “^#” >$SCRIPT_DIR/.sorted_db_names
exec <$SCRIPT_DIR/.sorted_db_names
#for CONN_STR in `cat .db_names|awk ‘{print $2}’`
l_count=`wc -l $SCRIPT_DIR/.sorted_db_names`
l=1
while read line
do
CONN_STR=`echo $line|awk ‘{print $2}’`
echo “Conn str =${CONN_STR}”
export DB
DB=`echo $line|cut -d “@” -f2`
echo “line = $line”
SQL=`echo $line|awk ‘{print $1}’`
echo “SQL =${SQL}”
echo “DB=${DB}”
echo “——————————————————————————–“>>$LOGFILE
echo “echo DB name : $DB”>>$LOGFILE
DB_CONN=`($SQLPLUS -s $CONN_STR <<EOF
–WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
WHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR EXIT 2;
set head off
set echo off
set serveroutput on
set feedback off
spool $ORA_LOGFILE append
@$SCRIPT_DIR/$SQL
spool off
EXIT;
EOF
)`
STATUS=$?
if [ $STATUS -eq 0 ]
then
echo “———————————————————–“>> $LOGFILE
echo ” DB name : ${CONN_STR}”>> $LOGFILE
echo $DB_CONN>> $LOGFILE
else
echo “———————————————————–“>> $ERR_LOG
echo ” DB name : ${CONN_STR}”>> $ERR_LOG
echo $DB_CONN>>$ERR_LOG
continue
fi
done
cat /home/oracle/scripts/EMV/EMV_Heading $ORA_LOGFILE > /home/oracle/scripts/EMV/EMV.csv
if [ -f ${ERR_LOG} ]
then
mailx -s “Early Morning Validations” -a /home/oracle/scripts/EMV/EMV.csv -a $ERR_LOG $V_MAILEES < /dev/null
else
mailx -s “Early Morning Validations” -a /home/oracle/scripts/EMV/EMV.csv $V_MAILEES < /dev/null
fi
}
|
Calling Main Function:
main “$@” |
See Also:
- Script to display ASM disk group usage
- script for oracle ASM header backup
- Scripts for Data Patch in Oracle
- Script to monitor Alert log in Oracle
- Script to delete archive logs from standby database
- Script to get DDL of the Database Links
- Script to get oracle database status UP or DOWN
- Script to get tablespace alert in Oracle
- Script to get CPU intensive queries in oracle
- Script to monitor OMS
- http://Oracle.com