Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #94107
    jspaulonci
    Participante

      Boa tarde pessoal, eu não uso Grid Control e nem OEM, não tenho nada contra também, é que apenas não os configurei, mas eu queria saber se alguem tem algum modelo de utilização de xml no banco e depois enviando e-mail através de job. Eu preciso monitorar as tablespaces que estão com mais de 70% de espaço alocado, e queria usar xml para “perfumar” a saída para o pessoal da equipe de monitoramento.

      Eu procurei e procurei e não achei nada na net, na empresa que eu trabalhei eu tinha , mas eu sai da empresa e o código ficou lá, alguem teria algum modelo ou alguma dica de onde procurar isso ?

      Obrigado
      João Paulo Spaulonci

      #94114
      vieri
      Participante

        essa aqui fica com uma saida legal… 😆

        CREATE OR REPLACE PROCEDURE “SYSTEM”.”PR_MONIT_TBPS”
        is
        l_body long := chr(10) ||’ ‘|| lpad(‘tsname’,10, ‘ ‘) || ‘ ‘
        || rpad(‘tbs_size_mb’, 12, ‘ ‘) || ”
        || rpad(‘used’, 20, ‘ ‘) || ‘ ‘
        || rpad(‘avail’, 20, ‘ ‘) || ‘ ‘
        || rpad(‘used_visual’, 20, ‘ ‘) || ‘ ‘
        || rpad(‘pct_used’, 8, ‘ ‘) || chr(10);
        begin
        for x in ( SELECT df.tablespace_name tsname
        , round(sum(df.bytes)/1024/1024) tbs_size_mb
        , round(nvl(sum(e.used_bytes)/1024/1024,0)) used
        , round(nvl(sum(f.free_bytes)/1024/1024,0)) avail
        , rpad(‘ ‘||rpad(‘X’,round(sum(e.used_bytes)
        10/sum(df.bytes),0), ‘X’),11,’-‘) used_visual
        , round(nvl((sum(e.used_bytes)
        100)/sum(df.bytes),0),2) pct_used
        FROM sys.dba_data_files df
        , (SELECT file_id
        , sum(nvl(bytes,0)) used_bytes
        FROM sys.dba_extents
        GROUP BY file_id) e
        , (SELECT max(bytes) free_bytes
        , file_id
        FROM dba_free_space
        GROUP BY file_id) f
        WHERE e.file_id(+) = df.file_id
        AND df.file_id = f.file_id(+)
        GROUP BY df.tablespace_name
        ORDER BY 6 )
        loop
        l_body := l_body || lpad(x.tsname, 18, ‘ ‘) || ‘ ‘ ||
        rpad(x.tbs_size_mb, 12, ‘ ‘) ||’ ‘|| rpad(x.used,20,’ ‘) ||’ ‘|| rpad(x.avail,2
        0,’ ‘)
        ||’ ‘|| rpad(x.used_visual,20,’ ‘) ||’ ‘|| rpad(x.pct_used,5,’ ‘) || chr(10) ;
        end loop;
        mail.send
        ( p_sender_email => ”,
        p_from => ‘Dba_monitor ‘,
        p_to => mail.array( ”),
        p_subject => ‘Consumo de Tablespace no RAC !’,
        p_body => l_body );
        end;

        #94122
        jspaulonci
        Participante

          Meu amigo Vieri, obrigado pela atenção mais uma vez, mas é o seguinte,

          A minha procedure que envia e-mail é assim
          CREATE OR REPLACE PROCEDURE PRC_ENVIA_EMAIL
          ( P_MESSAGE IN VARCHAR2, P_EMAIL_ORIG IN VARCHAR2,P_EMAIL_DEST IN VARCHAR2,P_ASSUNTO IN VARCHAR2)
          IS
          /* Constantes */
          cSMTP_SERVER CONSTANT VARCHAR2(30) :=’10.216.36.15′;
          cSMTP_SERVER_PORT CONSTANT NUMBER := 25;
          CRLF CONSTANT VARCHAR2(2) := chr(13) || chr(10);
          cMENSAGEM CONSTANT VARCHAR2(32767) := ‘Date: ‘ || TO_CHAR( SYSDATE, ‘dd Mon yy hh24:mi:ss’ ) || CRLF ||
          ‘From: ‘ || P_EMAIL_ORIG || CRLF ||
          ‘Subject: ‘ || P_ASSUNTO || CRLF ||
          ‘To: ‘ || P_EMAIL_DEST || CRLF ||
          ‘Mime-Version: 1.0’ || CRLF ||
          ‘Content-Type: multipart/mixed; boundary=”DMW.Boundary.605592468″‘ || CRLF ||
          ‘–DMW.Boundary.605592468’ || CRLF ||
          ‘Content-Type: text/plain; name; charset=US-ASCII’ || CRLF ||
          ‘Content-Disposition: inline; filename’ || CRLF ||
          ‘Content-Transfer-Encoding: 7bit’ || CRLF ||
          ” || CRLF;

          /* Variáveis */
          CONN UTL_SMTP.CONNECTION;
          vMESG VARCHAR2(32767);
          vMESG_LEN NUMBER;
          vCONTINUE BOOLEAN := TRUE;

          BEGIN

          /* Abrindo Conexão SMTP e HTTP */
          CONN := UTL_SMTP.OPEN_CONNECTION( cSMTP_SERVER, cSMTP_SERVER_PORT );

          /* Comunicando SMTP */
          UTL_SMTP.HELO( CONN, cSMTP_SERVER );
          UTL_SMTP.MAIL( CONN, P_EMAIL_DEST );
          UTL_SMTP.RCPT( CONN, P_EMAIL_DEST );
          UTL_SMTP.OPEN_DATA ( CONN );

          /* Criando Cabeça do E-mail /
          vMESG := cMENSAGEM || P_MESSAGE || CRLF;
          UTL_SMTP.WRITE_DATA ( CONN, vMESG );
          /
          Fechando a Cabeça do E-mail /
          vMESG := CRLF || ‘Secretaria da Fazenda’ ||’ – ‘||to_char(sysdate,’dd/mm/yyyy hh24:mi:ss’)|| CRLF;
          UTL_SMTP.WRITE_DATA( CONN, vMESG );
          /
          Fechando conexão SMTP */
          UTL_SMTP.CLOSE_DATA( CONN );
          UTL_SMTP.QUIT( CONN );
          END;

          Preciso fazer alguma adaptação nela ?

          Abraços

          #94129
          vieri
          Participante

            Fala Paulo,
            Acho que não.. teria que adaptar os parametros das chamadas na minha procedure.

            Trocar isso:

            mail.send
            ( p_sender_email => ”,
            p_from => ‘Dba_monitor ‘,
            p_to => mail.array( ”),
            p_subject => ‘Consumo de Tablespace no RAC !’,
            p_body => l_body );
            end;

            Por isso:

            PRC_ENVIA_EMAIL
            (p_email_orig => ‘dvidal@xpto.com.br‘,
            p_email_dest => ‘gbancodados@xpto.com.br‘,
            p_assunto=> ‘Consumo de Tablespace no RAC !’,
            p_message => l_body );
            end;

            com os e-mails orig e destino válidos no exchange.

            tenta ai mandar o e-mail depois posta ai se conseguiu e se ficou legal.

            #94134
            jspaulonci
            Participante

              Bom dia Vieri deu certo obrigado.

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.