monitoreo de tablespaces oracle

con este procedimiento se configura desde linux que nos envie un correo informando cuando un tablespace ha superado el 80% de uso, de esta manera tomar las medidas correspondientes.

En la base de datos creee un procedure que muestra el nombre del tablespace y el porcentaje usado y si el porcentaje es mayor a 80% saca por pantalla el mensaje.

PROCEDURE MONITOREA_TABLSP AS

CURSOR c1 is
select SYSDATE AS FECHA, u.tblspc as TABLSPC,(a.fbytes/1024/1024) as ASIGNADO_MB,(u.ebytes/1024/1024) as USADO_MB,ROUND((u.ebytes/a.fbytes)*100,2) as PORC_USADO
from (select tablespace_name tblspc, sum(bytes) ebytes
from sys.dba_extents
group by tablespace_name) u,
(select tablespace_name tblspc, sum(bytes) fbytes
from sys.dba_data_files
group by tablespace_name) a
where u.tblspc = a.tblspc;
mensaje varchar2(200);
BEGIN

for reg in c1 loop
if reg.porc_usado >= 80 then
mensaje := mensaje || ‘  Tablespace: ‘|| reg.TABLSPC || ‘ Usado:’|| reg.porc_usado||’%’;
end if;
end loop;
dbms_output.put_line(mensaje);

END MONITOREA_TABLSP;

Luego se crea la shell en linux que ejecuta el procedimiento  periódicamente, y si el procedure genera información, envia un correo con esta información.

#!/bin/bash
. /home/oracle/var_entorno
Para=pachita8002@yahoo.com
Fecha=$(date +»%Y%m%d»)
Asunto=Monitoreo_$Fecha
valor=$(sqlplus -s usuario/*******@BD @/home/oracle/scripts/espacio_tblsp.sql)
if [ -z «$valor» ]; then
echo «Reporte vacio: «$valor
else
echo $valor| mailx -s $Asunto $Para
fi

Esta shell se programó para ejecutarse cada 15 minutos, y si hay algun tablespace que supere el 80% de uso, se envia un correo.

Espero sea de utilidad

Deja un comentario