Painel | ||||
---|---|---|---|---|
| ||||
|
É 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, acesse consulte a documentação oficial do fabricante do banco de dados. |
...
...
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:
...
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 |
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; |
...
/ |
...
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 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 | |
---|---|
|
...
| |
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 | ||
---|---|---|
| ||
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; |
...
/ |