Conde Bond Post

Sólo existe un tipo de conocimiento, aquel que se transmite.

Monitoring Oracle Database for no DBAs


Here one shoddy bash script for basic basic monitoring and detect oracle databse errors:

#!/bin/bash
shopt -s extglob
oracle_unqname=$(echo $ORACLE_UNQNAME | tr '[:upper:]' '[:lower:]')
#echo "ORACLE_UNQNAME : $oracle_unqname # ORACLE_SID : $ORACLE_SID"
PINDATETIME=$(date +%Y%m%d_%H%M%S)
ORAERRORLOG="/scripts/logs/"$PINDATETIME"_ora_errors_track.log"
ERRORMSG=""
NAGIOSRET=0
SEARCHPATH=$ORACLE_BASE"/diag/rdbms/"$oracle_unqname"/"$ORACLE_SID"/trace/"$ORACLE_SID"*_ora*.trc"
case $# in
  0 ) # We find in all trace files
      for oras in $(ls -ltar $SEARCHPATH | awk '{print $9}' 2>/dev/null)
      do
      # echo "File : $oras " ;
      if [ $(cat $oras |grep "ORA-" | wc -l) -gt 0 ] ; then
        echo "" >> $ORAERRORLOG
        echo "ORA Errors Found in File $oras" >> $ORAERRORLOG
        cat $oras | grep "ORA-" -B7 -A2 >> $ORAERRORLOG
        if [ $(echo "$ERRORMSG" | wc -l ) -gt 0 ] ; then
          NEWMSG="ORA Errors Found in File $oras"
          ERRORMSG="$ERRORMSG"$'\n'"$NEWMSG"
          #echo "ERRORMSG : $ERRORMSG"
        fi
        echo "------------------------------------------------------------------" >> $ORAERRORLOG
      fi
      done
  ;;
  * ) # We find in the past n days files
      case $1 in
     # if [[ $1 = *[:digit:]]* ]]; then
        ( +([0-9]) ) # If is nummber
        dateCompute=$(echo "$1 days ago")
        echo "$dateCompute"
        dateSearch=$(echo $(date -d "$dateCompute") | awk '{print $2" "$3}')
        echo "$dateSearch"
        for oras in $(ls -ltar $SEARCHPATH | grep "$dateSearch" |awk '{print $9}' 2>/dev/null)
          do
        # echo "File : $oras " ;
          if [ $(cat $oras |grep "ORA-" | wc -l) -gt 0 ] ; then
            echo "" >> $ORAERRORLOG
            echo "ORA Errors Found in File $oras" >> $ORAERRORLOG
            cat $oras | grep "ORA-" -B7 -A2 >> $ORAERRORLOG
            if [ $(echo "$ERRORMSG" | wc -l ) -gt 0 ] ; then
              NEWMSG="ORA Errors Found in File $oras"
              ERRORMSG="$ERRORMSG"$'\n'"$NEWMSG"
            #echo "ERRORMSG : $ERRORMSG"
            fi
            echo "------------------------------------------------------------------" >> $ORAERRORLOG
          fi
        done
        ;;
        * ) # Not a Number
      #else
        ERRORMSG="ERROR : Invalid Parameter"
        NAGIOSRET=4
      #fi
        ;;
      esac
  ;;
esac

if [ -z "$ERRORMSG" ] ; then
  ERRORMSG="No ORA Errors Found in Trace Files"
  NAGIOSRET=0
else
  if [ $NAGIOSRET -gt 0 ]; then
     echo "$ERRORMSG"
  else
    NAGIOSRET=3
  fi
fi
#echo " "
exit $NAGIOSRET

I promise to update the script tha.., tha, that’s all folks!

😉

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: