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 introduzir sobre este apresentar uma abordagem inicial do mecanismo nativo do banco de dados e descrever os passos básicos para ativação desse 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. |
...
...
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; |
...
/ |