table SQ_VERIF_TABLESPACE |
create table SQ_VERIF_TABLESPACE ( ID CHAR(2), CONTEUDO VARCHAR2(50) ) tablespace DAD5 pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 32K next 32K minextents 1 maxextents unlimited pctincrease 0 ); |
procedure sq_sendmail |
create or replace procedure sq_sendmail (from_name varchar2 :='sergio.queiroz@inteligtelecom.com.br',to_name varchar2 :='sergio.queiroz@inteligtelecom.com.br',subject varchar2 :='Mensagem Oracle',message varchar2 :='Envio automatico de e-mail',max_size number default 9999999999,filename1 in varchar2 :='/erro.txt',filename2 in varchar2 :='/u41/spool/email/enviados/P182303.txt',filename3 in varchar2 :='/u41/spool/email/enviados/P182552.txt',debug number default 0 )is-- Colocar os e-mails separados por ponto-vírgulav_smtp_server varchar2(30) :='EXCHQT.INTELIG23';v_smtp_server_port number := 25;v_directory_name varchar2(100);v_file_name varchar2(100);v_line varchar2(1000);crlf varchar2(2) := chr(13) ||chr(10);mesg varchar2(32767);conn UTL_SMTP.CONNECTION;type varchar2_table is table of varchar2(200) index by binary_integer;file_array varchar2_table;i binary_integer;v_file_handle utl_file.file_type;v_slash_pos number;mesg_len number;mesg_too_long exception;invalid_path exception;mesg_length_exceeded boolean := false;x number;vemail varchar2(200) := null;chars char(1);begin-- Carregando os arquivos dentro do ARRAY-- ---------------------------------------file_array(1) := filename1;file_array(2) := filename2;file_array(3) := filename3;-- Abrindo Conexão SMTP e HTTP-- ----------------------------conn := utl_smtp.open_connection( v_smtp_server, v_smtp_server_port );-- Comunicando SMTP-- ------------------utl_smtp.helo( conn, v_smtp_server );-- Autenticando Usuário e Senha-- -------------------------------utl_smtp.command (conn, 'AUTH LOGIN');--utl_smtp.command (conn,utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('sergio.queiroz'))));--utl_smtp.command (conn,utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('sergio0101'))));utl_smtp.mail( conn, from_name );-- utl_smtp.rcpt( conn, to_name );-- Separa os destinatários-- -----------------------x := 1;for x in 1..length(to_name) loopchars := substr(to_name,x,1);if chars <> ';' thenvemail := vemail || chars;elseutl_smtp.rcpt( conn, vemail );vemail := '';end if;end loop;utl_smtp.rcpt( conn, vemail );-- Abre a conexão-- --------------utl_smtp.open_data ( conn );-- Criando Cabeça do E-mail-- -----------------------------------mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||'From: ' || from_name || crlf ||'Subject: ' || subject || crlf ||'To: ' || to_name || crlf ||'Mime-Version: 1.0' || crlf ||'Content-Type: multipart/mixed; boundary="DMW.Boundary.605592468"' || crlf ||'' || crlf ||'This is a Mime message, which your current mail reader may not' || crlf ||'understand. Parts of the message will appear as text. If the remainder' || crlf ||'appears as random characters in the message body, instead of as' || crlf ||'attachments, then you''ll have to extract these parts and decode them' || crlf ||'manually.' || crlf ||'' || crlf ||'--DMW.Boundary.605592468' || crlf ||'Content-Type: text/plain; name="message.txt"; charset=US-ASCII' || crlf ||'Content-Disposition: inline; filename="message.txt"' || crlf ||'Content-Transfer-Encoding: 7bit' || crlf ||'' || crlf ||message || crlf ;mesg_len := length(mesg);if mesg_len > max_size thenmesg_length_exceeded := true;end if;utl_smtp.write_data ( conn, mesg );-- Anexando Arquivos-- ------------------for i in 1..3 loop-- Sair se ultrapassar o tamanho de mensagem-- -----------------------------------------exit when mesg_length_exceeded;if file_array(i) is not null thenbegin-- Localiza a '/' ou '\' no caminho-- ---------------------------------v_slash_pos := instr(file_array(i), '/', -1 );if v_slash_pos = 0 thenv_slash_pos := instr(file_array(i), '\', -1 ); -- Valor Retornado = 3end if;-- Separa o arquivo do diretório-- ------------------------------v_directory_name := substr(file_array(i), 1, v_slash_pos - 1);v_file_name := substr(file_array(i), v_slash_pos + 1 );-- Abrir Arquivo-- ---------------- v_file_handle := utl_file.fopen(v_directory_name,v_file_name,'r');v_file_handle := utl_file.fopen('c:/',v_file_name,'r');-- Gera a linha MIME boundary-- --------------------------mesg := crlf || '--DMW.Boundary.605592468' || crlf ||'Content-Type: application/octet-stream; name= "v_file_name"' || crlf ||'Content-Disposition: attachment; filename="v_file_name"' || crlf ||'Content-Transfer-Encoding: 7bit' || crlf ||crlf ;mesg_len := mesg_len + length(mesg);utl_smtp.write_data ( conn, mesg );-- Anexa o conteúdo do arquivo ao corpo da mensagem-- ------------------------------------------------looputl_file.get_line(v_file_handle, v_line);if mesg_len + length(v_line) > max_size thenmesg := '*** truncado ***' || crlf;utl_smtp.write_data ( conn, mesg );mesg_length_exceeded := true;raise mesg_too_long;end if;mesg := v_line || crlf;utl_smtp.write_data ( conn, mesg );mesg_len := mesg_len + length(mesg);end loop;exceptionwhen utl_file.invalid_path thenif debug > 0 thendbms_output.put_line('Erro anexando arquivo ! '|| file_array(i));end if;-- Todas EXCEPTIONS ignoradaswhen others then null;end;mesg := crlf;utl_smtp.write_data ( conn, mesg );-- Fecha Arquivo-- --------------utl_file.fclose(v_file_handle);end if;end loop;-- Fechando a Cabeça do E-mail-- ----------------------------mesg := crlf || '--DMW.Boundary.605592468--' || crlf;utl_smtp.write_data ( conn, mesg );-- Fechando conexão SMTP-- -----------------------utl_smtp.close_data( conn );utl_smtp..quit( conn );end; |
PROCEDURE SQ_VERIFICAR_TABLESPACE |
CREATE OR REPLACE PROCEDURE SQ_VERIFICAR_TABLESPACE ISDECLARECursor c_space is (SELECT TABLESPACE_NAME, SUM(BYTES)FROM DBA_FREE_SPACEWHERE TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM USER_TABLESUNIONSELECT DISTINCT TABLESPACE_NAME FROM USER_INDEXESWHERE TABLE_NAME IN (SELECT TABLE_NAMEFROM USER_TABLES))GROUP BY TABLESPACE_NAME);----------------------------------------- Criado por: Sérgio Queiroz-- Empresa : Atos Origin-- Data : 27/03/09---------------------------------------reg_tablespace varchar2(50);reg_tamanho varchar2(30);reg_minimo number := 52428800; --50Mbmsg varchar2(30000);crlf varchar2(2) := chr(13) || chr(10);/*A TABELA SQ_VERIF_TABLESPACE DEVE SER ALIMENTADA CONFORME ABAIXO:ID | CONTEUDO--------------1 | NOME DO CONSULTOR2 | E-MAIL DO CONSULTOR3 | TELEFONES DO CONSULTOR4 | EMPRESA DO CONSULTOR5 | E-MAIL QUE ENVIARÁ AS MENSAGEM6 | E-MAILS QUE RECEBERÃO AS MENSAGENS (SEPARAR POR ";" SEM ESPAÇOS)7 | ASSUNTO DO E-MAIL8 | QUANTINDADE MÍNIMA DE Mb PARA O ENVIO DA MENSAGEM9 | NOME DA TABLESPACES DE DADOS OU ÍNDICES QUE SERÁ VERIFICADA (UM PARA CADA ID)9 | ...9 | ...10 | MENSAGEM INCIAL (ATÉ 50 BYTES POR ID, SOMENTE PARA OS IDs 10 A 15)11 | ...12 | ...13 | ...14 | ...15 | ...*/vconsnome sq_verif_tablespace.conteudo%type;vconsmail sq_verif_tablespace.conteudo%type;vconstel sq_verif_tablespace.conteudo%type;vconsemp sq_verif_tablespace.conteudo%type;vmailfrom sq_verif_tablespace.conteudo%type;vmailto sq_verif_tablespace.conteudo%type;vmailsubj sq_verif_tablespace.conteudo%type;vmensagem varchar2(400);vmsg varchar2(50);vqtdeminima sq_verif_tablespace.conteudo%type;vind number;vconteudo sq_verif_tablespace.conteudo%type;begin-- Busca informações para envio do e-mail-- --------------------------------------select conteudo into vconsnome from sq_verif_tablespace where id = '1';select conteudo into vconsmail from sq_verif_tablespace where id = '2';select conteudo into vconstel from sq_verif_tablespace where id = '3';select conteudo into vconsemp from sq_verif_tablespace where id = '4';select conteudo into vmailfrom from sq_verif_tablespace where id = '5';select conteudo into vmailto from sq_verif_tablespace where id = '6';select conteudo into vmailsubj from sq_verif_tablespace where id = '7';select conteudo into vqtdeminima from sq_verif_tablespace where id = '8';---- Busca a mensagem incial que vai aparecer no topo do e-mail-- ----------------------------------------------------------vmensagem := crlf || 'TABLESPACES COM MENOS DE ' || vqtdeminima || ' Mb' || crlf || crlf ;vind := 0;for vind in 10..15 loopselect conteudo into vmsg from sq_verif_tablespace where id = vind;if vmsg is not null thenvmensagem := vmensagem || trim(vmsg) || crlf;end if;end loop;---- Monta parte superior da tabela-- ------------------------------msg := crlf || vmensagem || crlf || crlf;msg := msg || '+------------------------------------------+---------------+' || crlf ;msg := msg || '| TABLESPACE_NAME | FREE SPACE |' || crlf ;msg := msg || '+------------------------------------------+---------------+' || crlf ;msg := msg || '| | |' || crlf ;---- Transforma o quantidade mínima em Mb-- ------------------------------------vqtdeminima := to_char(to_number(vqtdeminima) * 1024 * 1024);--open c_space;loopfetch c_space into reg_tablespace, reg_tamanho;exit when c_space%notfound;& nbsp; & nbsp;vconteudo := null;begin-- Verifica as tablespaces existentes e monta a linha da tabela-- ------------------------------------------------------------select conteudo into vconteudo from sq_verif_tablespace where id = 9 and conteudo = reg_tablespace;if vconteudo is not null thenif reg_tamanho <= to_number(vqtdeminima) thenmsg := msg || '| ' || rpad(reg_tablespace, 41,' ') || '| ' || lpad(to_char(to_number(reg_tamanho)/1024/1024,'999G999G999G999','nls_numeric_characters='',.''') || ' Mb',11,' ') || ' |' || crlf;end if;end if;exceptionwhen no_data_found thennull;--end;end loop;-- Monta parte inferior da tabela-- ------------------------------msg := msg || '| | |' || crlf ;msg := msg || '+------------------------------------------+---------------+' || crlf || crlf ;msg := msg || '------------------------------------------------------------' || crlf ;msg := msg || ' CONSULTOR: ' || vconsnome || crlf ;msg := msg || ' E-MAIL : ' || vconsmail || crlf ;msg := msg || ' TELEFONE : ' || vconstel || crlf ;msg := msg || ' EMPRESA : ' || vconsemp || crlf ;msg := msg || '------------------------------------------------------------' || crlf ;---- Envia o e-mail-- --------------sq_sendmail (vmailfrom,vmailto,vmailsubj,msg);--close c_space;end; |
Exemplo insert SQ_VERIF_TABLESPACE |
prompt PL/SQL Developer import fileprompt Created on sexta-feira, 27 de março de 2009 by sergio.queirozset feedback offset define offprompt Loading SQ_VERIF_TABLESPACE...insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('1 ', 'SÉRGIO QUEIROZ');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('2 ', 'sergio.queiroz@atosorigin.com');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('3 ', '13 8111-8329 / 11 2183-2629');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('4 ', 'ATOS ORIGIN');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('5 ', 'sergio.queiroz@inteligtelecom.com.br');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('6 ', 'sergio.queiroz@inteligtelecom.com.br');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('7 ', 'ALERTA AUTOMÁTICO: Tablespaces com pouco espaço');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('8 ', '100');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'USERS');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('10', 'FAVOR VERIFICAR AS TABLESPACES ABAIXO');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('11', '*************************************');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('12', null);insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('13', null);insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('14', null);insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('15', null);insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'DAD1');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'DAD2');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'DAD3');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'DAD4');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'DAD5');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'IDX1');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'IDX2');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'IDX3');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'IDX4');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'IDX5_S160K');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'IDX6_S5');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_CIAP_DADOS');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_CIAP_INDICES');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_FIS_ARQMAG');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_FIS_ARQMAG_IDX');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_IN86_DADOS');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_IN86_DADOS_CARGA');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_IN86_INDEX');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_IN86_INDEX_CARGA');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_SYN_ALL');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_SYN_ALL_IDX');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_SYN_PRCGER_IMP');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_SYN_PRCGER_IMP_IDX');insert into SQ_VERIF_TABLESPACE (ID, CONTEUDO)values ('9 ', 'TS_TEMP');commit;prompt 39 records loadedset feedback onset define onprompt Done. |
Nenhum comentário :
Postar um comentário