Newsgroup: it.comp.software.database
Titolo: Oracle - Alert via e-mail

Salve a tutti,
io ho un trigger (Oracle) che intercetta determinati errori che si
presentano in fase di import dei dati. Io vorrei che quando il trigger
scatta perchè rileva un errore mi invii in automatico un e-mail di
segnalazione ad un certo indirizzo. So che è possibile fare questa
cosa in SQLServer ma non so se c'è un qualche modo in Oracle. C'è
qualcuno che può aiutarmi? Sono nelle grane se non ci riesco!!!
Grazie in anticipo
Cilla


Versione?
Dalla 10g hai il package utl_mail. Prima avevi utl_smtp.
Ciao
-- 
Fabrizio Magni
fabrizi...@mycontinent.com
replace mycontinent with europe

Ciao,
mi interessa implementare questa cosa per Oracle 8 e 9. Sai se il
package che mi hai indicato esiste anche in Oracle 8.1.7? E sai dove
posso trovare la documentazione necessaria per utilizzarlo?
Grazie mille per avermi aiutato


Allora devi usare utl_smtp.
La documentazione ufficiale oracle la trovi su 
tahiti.oracle.com
Buona serata.


Grazie mille.
Buona serata anche a te.

Ciao,
ho creato una procedura per fare questo mestiere:
CREATE OR REPLACE PROCEDURE SPEDISCI_MAIL
(Mittente IN VARCHAR2, Destinatario IN VARCHAR2,
 Oggetto IN VARCHAR2, Messaggio IN VARCHAR2)
AS
  mailhost VARCHAR2(30);
  conn utl_smtp.connection;
  crlf     VARCHAR2(2);
  mesg     VARCHAR2( 1000 );
  local_mittente VARCHAR2(2000);
BEGIN
  mailhost:= 'nome del server SMTP utilizzato';
  crlf:= CHR( 13 ) || CHR( 10 );
  local_mittente:= Mittente;
/* Apertura di una connessione al server */
  conn := utl_smtp.open_connection (mailhost,25);
/* Assegnazione alla variabile mesg dell'intestazione della mail */
  mesg:='Date:'||TO_CHAR(SYSDATE,'dd mon yy   hh24:mi:ss')||crlf||
        'From:<'||Mittente||'>'||crlf||
        'Subject:'||Oggetto||crlf||
        'To:'||Destinatario||crlf||''
        ||crlf||Messaggio;
/* Apertura di un collegamento al server */
  utl_smtp.helo(conn, mailhost);
/* Inizio di una transazione di posta con il server passandogli il
mittente */
  utl_smtp.mail(conn,local_mittente);
/* Specifico il destinatario della mail */
  utl_smtp.rcpt(conn,Destinatario);
/* Specifico il testo del messaggio */
  utl_smtp.data(conn, mesg);
/* Chiusura della connessione, termino la sessione */
  utl_smtp.quit(conn);
END;
Sono riuscita a crearla tranquillamente e Oracle non mi ha dato nessun
errore di compilazione ma quando la eseguo, passandogli Mittente,
Destinatario, Oggetto e Messaggio, mi viene restituito il seguente
errore:
ORA-29540: class oracle/plsql/net/TCPConnection does not exist
ORA-06512: at "SYS.UTL_TCP", line 537
ORA-06512: at
"SYS.UTL_TCP", line 199
ORA-06512: at "SYS.UTL_SMTP", line 99
ORA-06512: at "SYS.UTL_SMTP", line 121
ORA-06512: at
"PROVA.SPEDISCI_MAIL", line 20
ORA-06512: at line 3
Cosa posso fare?

 
Risposta piu' semplice: metalink, nota 171696.1.
Sembra essere un bug.
Che versione di DB stai usando?
(Fino all'ultima cifra della versione)
Ciao


Utilizzo Oracle8i Release 8.1.7.4.1.
Non riesco a capire, il package dovrebbe esserci visto che quando ho
compilato la procedura non ha avuto problemi.


non e' un problema legato a un package manacante ma ad una classe jar 
non caricata correttamente.
Come spiega la nota dovrai farlo manualmente:
call dbms_java.loadjava('-resolve -force plsql/jlib/plsql.jar');
e come sys:
    $OH/rdbms/admin/utltcp.sql
    $OH/rdbms/admin/prvttcp.plb
    $OH/rdbms/admin/utlsmtp.sql
    $OH/rdbms/admin/prvtsmtp.plb
Puo' anche darsi che tu debba usare:
  alter system flush shared_pool ;
e lanciare:
  $ORACLE_HOME/javavm/install/initjvm.sql
come leggo su uno dei forum metalink.
Benvenuto nle mondo dei bug oracle!


Grazie per il tuo aiuto, ora faccio un po' di prove. Speriamo bene.
Buon lavoro