Sep 24 2008

Scheduled jobs do not run !!!

Tag: AdministracióneJavier @ 5:15 pm

Interesante situación …. estuve revisando una instancia 9i y los JOBS no se han ejecutado como en 4 días, revisando el parámetro me encuentro con:

SQL> show parameter job
NAME TYPE VALUE
———————————— ———– ——————————
job_queue_processes integer 20

Lo cual me extraño así que decidí eliminarlos y crearlos de nuevo, pero aun no se ejecutaban a la fecha/hora dictada… revisano los procesos de sistema operativo me encuentro con lo siguiente:

oracle 29213 1 0 Aug29 ? 00:00:46 ora_smon_ifoping
oracle 29215 1 0 Aug29 ? 00:00:00 ora_reco_ifoping
oracle 29217 1 33 Aug29 ? 8-13:56:10 ora_cjq0_ifoping
oracle 29219 1 0 Aug29 ? 00:22:51 ora_qmn0_ifoping
oracle 29221 1 0 Aug29 ? 00:00:00 ora_s000_ifoping
oracle 29223 1 0 Aug29 ? 00:00:00 ora_d000_ifoping
oracle 29225 1 0 Aug29 ? 00:03:08 ora_arc0_ifoping
oracle 29227 1 0 Aug29 ? 00:00:00 ora_arc1_ifoping
oracle 10673 1 0 Sep10 ? 00:00:00 ora_p000_ifoping
oracle 30587 1 0 Sep12 ? 00:00:00 ora_p001_ifoping
oracle 30589 1 0 Sep12 ? 00:00:00 ora_p002_ifoping
oracle 18955 1 0 16:28 ? 00:00:00 ora_p003_ifoping
oracle 18957 1 0 16:28 ? 00:00:00 ora_p004_ifoping

Revisando documentación decidí hacer lo siguiente:

  1. Matar el proceso ora_cjq0_ifoping
  2. Setear el parametro job_queue_process=0
  3. Setear nuevamente el parametro job_queue_process=20

Y funciono impecable ahora re-apareciendo los famosos ora_j00XXXXXX y ejecutando todos mis JOBS.
Interesante no!!! Saludos !!!


Sep 23 2008

Monitoreo de archivo de alertas de Oracle, alert_sid.log

Tag: MonitoreoeJavier @ 9:10 pm

Otra ayuda, bueno es importante revisar siempre (y de manera constante) el archivo de alertas de Oracle llamado alert_sid.log por lo cual he creado un script que lo va revisando y en caso de encontrar algun “ORA-” envia una alerta por e-mail. Ojo que esto es para ambiente linux/unix y esta creado para no comunicarse con la base de datos es decir no estable conexión alguna.

El proceso consta de dos shell:

  • call_alertlog.sh: Shell que cuando es ejecutada va llamado al archivo alertlog.sh segun la cantidad de instancias que hayan en un servidor.
  • alertlog.sh: Shell que recibe de parametros “el nombre de la instancia”, “ruta en donde se ubica el archivo de alertas” y por ultimo el “nombre del servidor”. Cuando se ejecuta por primera vez busca en el archivo de alertas el texo “ORA-” y si lo encuentra las envia por e-mail luego deja una copia del archivo de alertas en el directorio en donde se aloja esta shell. Cuando se vuelve a ejecutar, verifica que existe una copia del archivo de alertas y la compara con el original, y de la comparación busca el texto “ORA-” y si lo encuentra las envia por e-mail luego nuevamente deja una copia del archivo de alertas en el directorio en donde se aloja esta shell y asi se va repitiendo el ciclo.

Archivo 1: call_alertlog.sh

#!/bin/bash
# Javier Perez - javierperezdiaz@e-japd.com
# ———————————–
/home/oracle/bin/mon_alertlog/alertlog.sh “ifoping” “/oracle_database/oraInventory/admin/oceano/bdump” “OCEANO”
exit 0

Archivo 2: alertlog.sh
#!/bin/bash
# Javier Perez - javierperezdiaz@e-japd.com
# ———————————-

# ——————-
# Recupera parametros
ORA_SID=$1
ORA_BASE=$2
MAQUINA=$3

# ————————
# Declaracion de variables
DIR_BASE=”/home/oracle/bin/mon_alertlog” —> Ruta en donde esta situada la shell
DIR_BDUMP=”$ORA_BASE”
FILE_ALERTLOG=”$DIR_BDUMP/alert_$ORA_SID.log”
FILE_ALERTLOG_TMP=”$DIR_BASE/alert_$ORA_SID.log”
FILE_ALERTLOG_DIFF=”$DIR_BASE/diff_alert_$ORA_SID.log”
FILE_EMAIL=”$DIR_BASE/email_$ORA_SID.log”

# Envie email
# ———–
sMAIL=”javierperezdiaz@e-japd.com” —> Correo de destino, se pueden agregar mas separandolos por coma “,”
FECHA=`date +”%d%m%Y%H”`
FECHA2=`date +”%d-%m-%Y %H:%M”`

echo “|||||| INICIO VERIFICACION ALERT.LOG $ORA_SID de $MAQUINA|||||”
if [ -f $FILE_ALERTLOG_TMP ]
then
echo “Existe copia de alert.log, se buscan diferencias con el original …”
if cmp -s $FILE_ALERTLOG $FILE_ALERTLOG_TMP
then
echo “No existen diferencias entre los alert.log desde el ultimo analisis …”
else
echo “Diferencias encontradas desde el ultimo analisis, generando archivo de diferencias …”
diff $FILE_ALERTLOG $FILE_ALERTLOG_TMP|cat > $FILE_ALERTLOG_DIFF
echo “Buscando alertas en archivo de diferencias …”
sDIFERENCIAS=`grep “ORA-” $FILE_ALERTLOG_DIFF`
echo “$sDIFERENCIAS” > $FILE_EMAIL
if [ "$sDIFERENCIAS" == "" ]
then
echo “No existen alertas en archivo de diferencias …”
else
echo “Alertas encontradas, enviado aviso …”
for u in $sMAIL
do
more “$FILE_EMAIL” |mail -s “ALERT_${ORA_SID}.LOG ${FECHA2}” $u
done
fi
cp $FILE_ALERTLOG $FILE_ALERTLOG_TMP
fi
else
echo “No existe copia alert.log, generando copia …”
cp $FILE_ALERTLOG $FILE_ALERTLOG_TMP
echo “Buscando alertas en copia de alert.log …”
sDIFERENCIAS=`grep “ORA-” $FILE_ALERTLOG_TMP`
echo “$sDIFERENCIAS” > $FILE_EMAIL
if [ "$sDIFERENCIAS" == "" ]
then
echo “No existen alertas …”
else
echo “Alertas encontradas, enviado aviso …”
for u in $sMAIL
do
more “$FILE_EMAIL” |mail -s “ALERT_${ORA_SID}.LOG ${FECHA2}” $u
done
fi
fi

exit 0

Bueno me a dado buenos resultado y lo comparto, obviamente es mejorable y se aceptan recomendaciones. Saludos!!!.

PD: Los sources … call_alertlog.sh y alertlog.sh


Next Page »