- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 10 meses atrás por
jspaulonci.
-
AutorPosts
-
20 de maio de 2010 às 9:22 pm #94107
jspaulonci
ParticipanteBoa 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 Spaulonci20 de maio de 2010 às 11:19 pm #94114vieri
Participanteessa 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;21 de maio de 2010 às 1:42 pm #94122jspaulonci
ParticipanteMeu 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
21 de maio de 2010 às 6:17 pm #94129vieri
ParticipanteFala 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.
21 de maio de 2010 às 6:36 pm #94134jspaulonci
ParticipanteBom dia Vieri deu certo obrigado.
-
AutorPosts
- Você deve fazer login para responder a este tópico.