O codigo abaixo server para monitora via e-mail o espaço "dos discos"

 

DECLARE

  -- Variavel de Email 

  v_From      VARCHAR2(80) := 'O endereço de e-mail address está sendo protegido de spambots. Você precisa ativar o JavaScript enabled para vê-lo.';

  v_Recipient VARCHAR2(80) :='O endereço de e-mail address está sendo protegido de spambots. Você precisa ativar o JavaScript enabled para vê-lo.';

  v_Subject   VARCHAR2(80) := 'Status servidor Meus servidor';

-- ip do servidor de e-mail ne....

  v_Mail_Host VARCHAR2(30) := 'x.x.x.x';

  v_Mail_Conn utl_smtp.Connection;

  crlf        VARCHAR2(2)  := chr(13)||chr(10);

  

  -- Variaveis Status Espaço 

  v_NAME VARCHAR2(50) ;v_FREE_MB VARCHAR2(50) ;v_TOTAL_MB VARCHAR2(50);

  v_corpo_da_mensagem varchar2(2000); 

  cursor my_cursor is SELECT NAME, FREE_MB,TOTAL_MB from V$ASM_DISK;

  

  

    v_sysdate DATE := SYSDATE;

    v_systimestamp TIMESTAMP := SYSTIMESTAMP;

 

-- Obtendo Variaveis Status Espaço 

BEGIN

v_corpo_da_mensagem:=chr(13) || 'NAME                           FREE_MB        TOTAL_MB' || chr(13);

open my_cursor;

LOOP

    fetch my_cursor into v_NAME, v_FREE_MB,v_TOTAL_MB;

    EXIT WHEN my_cursor%NOTFOUND;

   --  v_corpo_da_mensagem:=my_cursor.FREE_MB || '  ' || my_cursor.TOTAL_MB;

    v_corpo_da_mensagem :=v_corpo_da_mensagem || v_NAME|| '         ' || v_FREE_MB || '                 ' ||v_TOTAL_MB || chr(13);

END LOOP;

close my_cursor;

 

 

 

 

 

 

 v_Mail_Conn := utl_smtp.Open_Connection(v_Mail_Host, 25);

 utl_smtp.Helo(v_Mail_Conn, v_Mail_Host);

 utl_smtp.Mail(v_Mail_Conn, v_From);

 utl_smtp.Rcpt(v_Mail_Conn, v_Recipient);

 utl_smtp.Data(v_Mail_Conn,

   'Date: '   || to_char(sysdate, 'Dy, DD Mon YYYY hh24:mi:ss') || crlf ||

   'From: '   || v_From || crlf ||

   'Subject: '|| v_Subject || crlf ||

   'To: '     || v_Recipient || crlf ||

   crlf ||

   'Situação Espaço Armazenamento '|| v_corpo_da_mensagem || crlf ||-- Message body

   'Servidor Meus Servidor '|| v_systimestamp || crlf

 );

 utl_smtp.Quit(v_mail_conn);

EXCEPTION

 WHEN utl_smtp.Transient_Error OR utl_smtp.Permanent_Error then

   raise_application_error(-20000, 'Unable to send mail', TRUE);

END;