{"id":1183,"date":"2015-01-24T21:07:08","date_gmt":"2015-01-24T20:07:08","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=1183"},"modified":"2015-02-19T13:14:05","modified_gmt":"2015-02-19T12:14:05","slug":"monitorizando-el-alert-con-adrci","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/monitorizando-el-alert-con-adrci\/","title":{"rendered":"Monitorizando el alert con adrci"},"content":{"rendered":"<p>Hoy vamos a ver un peque\u00f1o script que puede ser muy \u00fatil para la monitorizacion.<br \/>\nVamos a llamar a adrci indic\u00e1ndole que nos muestre los errores del alert <b>desde la \u00faltima vez que se ejecuto.<\/b><br \/>\nPara ello vamos a usar el comando <i>show alert -p <\/i> , marc\u00e1ndole como rango temporal a buscar la diferencia entre esta ejecuci\u00f3n y a anterior.<\/p>\n<pre>\r\n#!\/bin\/bash\r\n#\r\n# Script que monitoriza el alert.log de una instancia desde la ultima vez que se ejecut\u00f3\r\n# Si esta ultima ejecucion es menor de 5 minutos ejecuta los ultimos 5 minutos\r\n#\r\n#\r\n# Si no guarda diene la guarda de ultima ejecucion sale con un ERROR\r\n#\r\n#  Asuminos timestamp'2015-02-18 00:07:49.767000 +01:00'\r\n#\r\n\r\n# Salida de debug\r\nDEBUG=0\r\n\r\n #Comprobamos que se ha llamado de manera correcta\r\nif  [ $# -ne 1 ]; then\r\necho \"Uso adrci_alert  SID\"\r\nexit 3;\r\nfi\r\n\r\n\r\n\r\n# Inicializamos valores para el script\r\nexport ORAENV_ASK=NO\r\nexport TEMPORAL=\/var\/tmp\/temporal_salida_alert_$$.log\r\nexport SALIDA=\/var\/tmp\/salida_salida_alert_$$.log\r\nexport SID=$1\r\nexport GUARDA=\/var\/tmp\/guarda_alert_${SID}.txt\r\nDIA=`date +%Y-%m-%d`\r\nHORA=`date +%H:%M:%S`\r\nexport AHORA=\"${DIA} ${HORA}.0000000 +01:00\"\r\n. oraenv  1>\/dev\/null\r\n\r\n\r\n\r\n## Comenzamos la ejecucion\r\nif [ $DEBUG -eq 1 ]; then\r\n        echo \"DEBUG: ORACLE_BASE=$ORACLE_BASE\"\r\n        echo \"DEBUG: GUARDA= ${GUARDA}\"\r\n        echo \"DEBUG: SALIDA= ${SALIDA} \"\r\n        echo \"DEBUG: ORACLE_SID=$SID\"\r\n        echo \"DEBUG: AHORA=$AHORA\"\r\nfi\r\n\r\n\r\n# Buscamos ultima iteracion\r\nif [ ! -f  $GUARDA ]; then\r\n        echo \"No tenemos ejecucion anterior\"\r\n        echo $AHORA > ${GUARDA}\r\n        exit 1;\r\nfi\r\n\r\n#  Obtenemos el timestamp de la ultima ejecucion\r\nTIEMPO=`cat ${GUARDA}`\r\n\r\n# COmprobamos que han pasado mas de 5 minutos\r\nOLD=`cat ${GUARDA}|awk '{print($1,$2)}'`\r\nNOW=\"${DIA} ${HORA}.0000000\"\r\nSEGOLD=$(date -u -d \"$OLD\" +\"%s\")\r\nSEGNOW=$(date -u -d \"$NOW\" +\"%s\")\r\nDIFERENCIA=$((SEGNOW-SEGOLD))\r\n\r\n# Comenzamos las iteraciones\r\nadrci_homes=( $(adrci exec=\"show homes\" | grep -e rdbms |grep ${SID}))\r\n  for adrci_home in ${adrci_homes[@]}\r\n    do\r\n  #Generamos el fichero de comandos\r\n   echo \"SET TERMOUT OFF\" > ${TEMPORAL}\r\n   echo \"SET ECHO OFF\" >> ${TEMPORAL}\r\n   echo \"set home ${adrci_home} ;\" >> ${TEMPORAL}\r\n   echo \"spool ${SALIDA} append \" >>${TEMPORAL}\r\n   echo \"show alert -p \\\"message_text like '%ORA-%' and originating_timestamp >= \\'${TIEMPO}\\' \\\" -term \" >>${TEMPORAL}\r\n   echo \"exit; \" >> ${TEMPORAL}\r\n     if [ $DEBUG -eq 1 ]; then\r\n       echo \"DEBUG: \"\r\n       echo \"DEBUG:  adrci SCRIPT=${TEMPORAL}\"\r\n       echo \"DEBUG: EL etemporal es \"\r\n       echo \"DEBUG: -inicio temporal-\"\r\n       cat ${TEMPORAL}\r\n       echo \"DEBUG: -fin temporal-\"\r\n      fi\r\n   adrci  SCRIPT=${TEMPORAL}   1>\/dev\/null\r\n   tail -n+4 ${SALIDA}\r\n   rm ${TEMPORAL}\r\ndone\r\n\r\n#Actualizamos la guarda solamente si hace menos de 5 minutos que lo hemos ejecutado\r\nif [ \"$DIFERENCIA\" -gt  299 ]; then\r\n        echo $AHORA > ${GUARDA}\r\nfi\r\n\r\n## A\u00f1adir aqui la integraci\u00f3n con monitorizacion\r\n\r\n##Borramos la salida \r\nrm ${SALIDA}\r\n#Salimos correctamente\r\nexit 0 ;\r\n\r\n<\/pre>\n<p>A partir de aqui, solamente tenemos que integrar el tratamiento del fichero $SALIDA que es donde tendremos los errores del alert<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy vamos a ver un peque\u00f1o script que puede ser muy \u00fatil para la monitorizacion. Vamos a llamar a adrci indic\u00e1ndole que nos muestre los errores del alert desde la \u00faltima vez que se ejecuto. Para ello vamos a usar &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/monitorizando-el-alert-con-adrci\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,60,199,86],"tags":[179,58,56],"class_list":["post-1183","post","type-post","status-publish","format-standard","hentry","category-11g","category-12c","category-oracle","category-oracle-linux","tag-adrci","tag-alert-log","tag-monitorizacion"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/comments?post=1183"}],"version-history":[{"count":7,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1183\/revisions"}],"predecessor-version":[{"id":1190,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1183\/revisions\/1190"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=1183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=1183"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=1183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}