...
Segue abaixo a sintaxe padrão do procedimento SET_SCHEDULER_ATTRIBUTE:
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE (
attribute IN VARCHAR2,
value IN VARCHAR2);
|
Exemplo de utilização:
BEGIN
DBMS_SCHEDULER.set_scheduler_attribute( 'email_server' , 'smtp.dominio.com:25' );
DBMS_SCHEDULER.set_scheduler_attribute( 'email_sender' , 'do_not_reply@dominio.com' );
END ;
/
|
02. Adicionando Notificações a um Schedule
...
Sintaxe padrão ADD_JOB_NOTIFICATION:
DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
job_name IN VARCHAR2,
recipients IN VARCHAR2,
sender IN VARCHAR2 DEFAULT NULL ,
subject IN VARCHAR2 DEFAULT DBMS_SCHEDULER.DEFAULT_NOTIFICATION_SUBJECT,
body IN VARCHAR2 DEFAULT DBMS_SCHEDULER.DEFAULT_NOTIFICATION_BODY,
events IN VARCHAR2 DEFAULT 'JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED,
JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR' ,
filter_condition IN VARCHAR2 DEFAULT NULL );
|
A notificação do exemplo a seguir é acionada quando o Schedule é iniciado ou finalizado de forma bem-sucedida. Ele usa o assunto (Subject) e o corpo (Body) padrão.
BEGIN
DBMS_SCHEDULER.add_job_email_notification (
job_name => 'teste_notificação_schedule' ,
recipients => ‘destinatario@empresa.com ',,
events => ' job_started, job_succeeded');
END ;
/
|
A notificação a seguir será acionada somente se um Schedule falhar com um código de erro "600".
BEGIN
DBMS_SCHEDULER.add_job_email_notification (
job_name => 'teste_notificação_schedule' ,
recipients => ‘destinatario@empresa.com ',
evento => ' job_failed ',
filter_condition => ' :event.error_code=600');
END ;
/
|
Para consultar as notificações configuradas utilizamos a tabela no usuário USER_SCHEDULER_NOTIFICATIONS.
...
As notificações por email são removidas usando o procedimento REMOVE_JOB_EMAIL_NOTIFICATION . Além do parâmetro “job_name” - obrigatório, aceita também que sejam informados os parâmetros “recipients” e “events”. Em ambos os casos, se estes forem definidos como NULL (os valores padrão), presume-se que as notificações para todos os destinatários/eventos do Schedule específico devem ser removidas. Os exemplos abaixo mostram a remoção de uma notificação de evento específica e de todas as notificações de um Schedule específico.
Exemplo:
BEGIN
DBMS_SCHEDULER.remove_job_email_notification (
job_name => 'teste_notificação_job' ,
recipients => ‘destinatario@empresa.com ',
evento => ' job_succeeded');
END ;
/
|
Pra remover todas as notificações de um schedule:
BEGIN
DBMS_SCHEDULER.remove_job_email_notification (
job_name => 'teste_notificação_job' );
END ;
/
|