Painel | ||||
---|---|---|---|---|
| ||||
|
É 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.
...
...
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:
Atributo | Descriçã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:
|
Abaixo, temos um exemplo da chamada do procedimento para definir as propriedades email_server e email_sender.
Bloco de código | ||
---|---|---|
| ||
BEGIN DBMS_SCHEDULER.set_scheduler_attribute('email_server', 'smtp.dominio.com:25'); DBMS_SCHEDULER.set_scheduler_attribute('email_sender', '[email protected]'); END; / |
...
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_NOTIFICATION. Podemos 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” sender” se 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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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.
...
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 | ||
---|---|---|
| ||
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 |
---|
...
| ||
BEGIN
DBMS |
...
_SCHEDULER.remove_job_email_notification ( |
...
job_name = |
...
> 'teste_notificação_job'); |
...
END; |
...
/ |