Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Painel
titleNavegue por aqui!

Índice
maxLevel2

É possível configurar o envio de e-mail para notificação sobre o estado das execuções dos schedules no banco de dados Oracle, assim, permitindo o monitoramento e que ações preventivas ou corretivas sejam executadas em caso de problemas. Para o envio dessas notificações por e-mail, é necessário realizar as configurações definidas pelo fabricante do banco de dados para os schedules desejados.

...

  • Definir as regras de ACL (Network Access Control List) no banco de dados para o usuário onde os schedules foram criados.
  • Ter os privilégios no banco de dados necessários para administração de schedules.
  • As notificações por e-mail são configuradas por scheduler utilizando o pacote DBMS_SCHEDULER.

01. CONFIGURANDO O SCHEDULER

...

Este procedimento possibilita a mudança de vários atributos do scheduler, porém, o foco neste momento são os itens referentes ao envio de e-mails para as notificações. São eles:

AtributoDescrição
email_serverEndereço do servidor SMTP usado para enviar os e-mails quando os eventos configurados para disparo forem atingidos. As notificações por e-mails não poderão ser enviadas se este atributo estiver com o valor padrão “NULL”.
email_senderEndereço de e-mail configurado como remetente padrão para o disparo das notificações que não informarem um remetente. Caso este parâmetro não seja configurado e a notificação configurada também não possua um remetente, o campo remetente do e-mail será enviado em branco.
email_server_credential

Schema e nome da credencial existente, onde SYS tenha privilégios de execução neste objeto. O padrão para este atributo é “NULL”, ou seja, nenhuma credencial informada para uso. Caso o servidor exija credenciais para o envio de e-mails, este atributo deverá ser configurado. O nome de usuário e senha configurados nesta credencial serão usados para autenticação no servidor de e-mail informado durante a comunicação. 

email_server_encryption

Este atributo possibilita a configuração do uso ou não da criptografia pela conexão ao servidor de envio de e-mail. Caso o servidor de envio dos e-mails exija a criptografia, este atributo deverá ser configurado com a opção adequada à necessidade do servidor. Valores possíveis para o atributo:

    • NONE: Valor padrão. Indica a não utilização de criptografia para a conexão
    • SSL_TLS: Indica o uso de criptografia SSL ou TLS, desde o início da conexão
    • STARTTLS: Indica que a conexão inicia sem criptografia, mas começa a ser utilizada a partir do recebimento do comando STARTTLS pelo servidor SMTP

Abaixo, temos um exemplo da chamada do procedimento para definir as propriedades email_server e email_sender.

Bloco de código
languagesql
BEGIN
  DBMS_SCHEDULER.set_scheduler_attribute('email_server', 'smtp.dominio.com:25');
  DBMS_SCHEDULER.set_scheduler_attribute('email_sender', '[email protected]');
END;
/

02.

...

ADICIONANDO NOTIFICAÇÕES A UM SCHEDULER

Após adicionarmos as informações configurações de SMTP necessárias, podemos então adicionar as notificações ao Schedulescheduler. Uma notificação por email e-mail é associada a uma tarefa agendada (scheduler) usando o procedimento procedimento DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATIONPodemos adicionar várias notificações a um schedulescheduler, variando os destinatários e também os eventos associados para disparo dos e-mails. O título e o corpo do texto na notificação por e-mail podem ser personalizados usando diversas variáveis ​​que são identificadas usando o formato "%variable-name%". Os valores padrão dos parâmetros “Subject” e “Body” "Subject" e "Body" fornecem muitas informações, ficando opcional portanto, suas personalizaçõessua personalização.

O parâmetro “events” "events" determina quais quais eventos de de trabalho disparam uma notificação, enquanto o parâmetro “filer"filer_condition” condition"pode reduzir as notificações filtrando os eventos que não atendem a critérios específicos, com base no no tipo de objeto SCHEDULER$_EVENT_INFO . É possível também definir um endereço de remetente para cada notificação, usando o parâmetro “sender”sender. Quando este for informado, substituirá o parâmetro “email_sender” senderse também configurado diretamente no Schedulescheduler.

A notificação do exemplo a seguir é acionada quando o Schedule scheduler é iniciado ou finalizado de forma bem-sucedida. Ele usa o assunto ("Subject) " e o corpo ("Body) " padrão.

Bloco de código
languagesql
BEGIN
 DBMS_SCHEDULER.add_job_email_notification (
  job_name   => 'teste_notificação_schedule',
  recipients => ‘destinatario@empresa'destinatario@empresa.com.br',,
  events     => 'job_started, job_succeeded');
END;
/

A notificação a seguir será acionada somente se um Schedule scheduler falhar com um código de erro "600". Essa opção, permite filtrar ainda mais os eventos para realizar a notificação.

...

Bloco de código
languagesql
BEGIN
 DBMS

...

_SCHEDULER.add_job_email_notification

...

 (
  job_name         => 'teste_notificação_schedule',

...


  recipients       => '[email protected]',
  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.

...

03. REMOVENDO NOTIFICAÇÕES DE UM SCHEDULER

As notificações por email e-mail são removidas usando o procedimento procedimento DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION . Além do parâmetro “job_name” - name”  que é obrigatório, aceita também que sejam informados os parâmetros “recipients” recipients” e “events”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 scheduler 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:

Bloco de código
languagesql
BEGIN

...


 DBMS_SCHEDULER.remove_job_email_notification

...

 (
  job_name   =>

...

 'teste_notificação_job',

...


  recipients => '[email protected]',
  evento     => 'job_succeeded');

...


END;

...


/

Pra remover todas as notificações de um schedulescheduler:

Bloco de código

...

languagesql
BEGIN
 DBMS

...

_SCHEDULER.remove_job_email_notification (

...


  job_name =

...

'teste_notificação_job');

...


END;

...


/