Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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

Este documento tem como objetivo apresentar a uma abordagem inicial do mecanismo nativo do banco de dados e descrever os passos básicos para ativação do monitoramento de schedules utilizando este mecanismo. Por se tratar de uma atividade administrativa, envolvendo configurações e liberações no banco de dados, recomenda-se que a configuração seja realizada por ou sob orientações do DBA responsável pela administração do ambiente.

Informações

Para mais informações sobre o recurso, consulte a documentação oficial do fabricante do banco de dados.

PREMISSAS

  • Definir as regras para de ACL (Network Access Control List ACL no ) no banco de dados para o usuário onde o Schedule será configurado para execuçãoos schedules foram criados.
  • Definir Ter os privilégios no banco de dados necessários de execução e manipulação das rotinas relacionadas às configurações dos schedules;para administração de schedules.
  • As notificações por e-mail são configuradas por

...

01.

...

CONFIGURANDO O SCHEDULER

O primeiro passo na para configuração do mecanismo de notificação é informar na tarefa agendada desejada (scheduler) qual servidor SMTP será usado para enviar os e-mails. Você também pode definir, opcionalmente, um endereço de remetente padrão, que será usado caso o parâmetro “sender”  sender”  não tenha sido especificado na notificação, que também possui um atributo para configuração de remetente. Mostraremos estas opções no próximo tópico - Adicionando Notificações a um ScheduleScheduler.

Para configurar os dados de notificação na schedule usamos o procedimento “SET DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE.

_ATTRIBUTE”, do pacote DBMS_SCHEDULER. Este procedimento possibilita a mudança de vários atributos do Schedulescheduler, 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_server

...

Endereç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_sender

...

Endereç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

Para informações mais detalhadas sobre o procedimento, sugerimos uma consulta ao link da documentação oficial de uso.

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:

...

_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 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 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);

scheduler.

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

...


/