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