Oracle Scheduler – Parte 1
Oracle Scheduler – Parte 2
Oracle Scheduler – Parte 3
Oracle Scheduler – Parte 4
Oracle Scheduler – Parte 6
Oracle Scheduler – Parte 7
Oracle Scheduler – Parte 8
Oracle Scheduler: Muito mais que um simples
agendador de tarefas – Parte 5
Este é o quinto artigo de uma
série que trata da funcionalidade de agendamento de tarefas no Banco de Dados
Oracle através da ferramenta Oracle Scheduler. Este artigo trata, através de exemplos
práticos, da utilização de eventos para iniciar jobs. Esta técnica permite que
um job seja iniciado independentemente do horário, mas sim com base em um
acontecimento no banco de dados ou no sistema operacional. Para isso, faz uma breve introdução ao tema seguida de um tutorial que
apresentará em detalhes como trabalhar com mais esta facilidade oferecida pelo
Oracle.
Em que situação o tema é útil
O tema é útil quando se pretende trabalhar com o Scheduler para criar e executar jobs com base em acontecimentos no banco de dados, como valores armazenados em tabelas (estoque de um produto abaixo do limite mínimo, por exemplo) ou acontecimentos no sistema operacional, como a chegada de arquivos de consolidação de servidores espalhados nas filiais da empresa, por exemplo.
Em muitos casos não é possível definir uma data e horário específicos para que determinado job comece a executar, simplesmente por que a execução deste job não depende de um horário, mas sim de um acontecimento. É muito comum que exista a necessidade de execução de um job no momento em que a aplicação sinalizar que é necessário que o job seja iniciado como, por exemplo, um acesso indevido ao banco de dados, ou a alteração do salário de um funcionário ou ainda a quantidade de estoque de um determinado produto estar abaixo de um limite especificado.
Estes são apenas exemplos de eventos gerados pela aplicação que podem originar a necessidade de execução de um job. Mas há ainda os casos em que o evento não seja disparado pela aplicação, mas sim quando um arquivo especificado “chega” no sistema operacional.
Imagine, por exemplo, que vário sistemas, em vários servidores diferentes, “rodando” em COBOL (sim, muitos sistemas ainda usam o velho e bom COBOL) enviem arquivos de texto (os famosos flat files, ou simplesmente os .txt) para o servidor de banco de dados para consolidação de informações das filiais.
Uma série de fatores podem fazer com que estes arquivos não “cheguem” ao servidor de banco de dados em horários pré-definidos, colocando abaixo qualquer tentativa de utilização de jobs baseados em calendário para processarem estes arquivos. Este é um exemplo de evento de chegada de arquivo no sistema operacional.
Para ambos os casos (evento gerado pela aplicação ou chegada de arquivo no sistema operacional) é possível configurar jobs que serão iniciados quando estes eventos acontecerem, independentemente de qualquer calendário.
Para o caso dos eventos gerados pela aplicação é necessário configurar o job para ser executado com base em uma condição de evento (EVENT_CONDITION). Com uma condição de evento definida, um calendário deixa de ser necessário e toda vez que esta condição for satisfeita o banco de dados dispara um evento que o job interpretará e tomará a ação necessária (conforme configurado).
Já no caso de arquivos que “cheguem” ao sistema operacional a Oracle criou um novo objeto, chamado file watcher, que monitora o diretório especificado e dispara um evento assim que um novo arquivo “chegue” ao sistema operacional. Com o evento disparado, o job configurado para tal evento inicia sua execução e, como esperado, toma a ação necessária.
No primeiro e segundo artigos desta série sobre o Oracle Scheduler apresentei, de forma conceitual, todos os objetos que compõem esta solução completa de agendamento e gerenciamento de tarefas no banco de dados Oracle.
Ainda no segundo e, exclusivamente, no terceiro artigos apresentei, em detalhes, tudo o que é necessário para se trabalhar com jobs, que são “a alma” do Oracle Scheduler, mas não é só isso. No quarto artigo apresentei todos os detalhes do objeto program, que dá ainda mais “poder” à execução dos jobs, e também apresentei o objeto Schedule (ou Agenda), que serve para definir quando um job deve ser executado.
Vimos praticamente todas as funcionalidades de um Schedule, mas há ainda uma funcionalidade que é utilização de eventos para iniciar jobs. Esta funcionalidade oferece ainda mais poder na utilização de schedules, permitindo associar a execução de um job a algo que aconteça no bando de dados ou sistema operacional e não a um determinado horário pré-definido.
Utilização de eventos para iniciar a execução de um job
Um evento é uma “mensagem” enviada por um processo da aplicação ou do sistema para outro processo para indicar que alguma ação ou ocorrência foi detectada. Um evento é gerado (enviado) por uma aplicação ou processo, e consumida (recebido) por um ou mais aplicações ou processos.
Existem dois tipos de eventos recebidos pelo Scheduler:
· Eventos gerados pela aplicação: uma aplicação pode gerar um evento que será recebido pelo Scheduler. O Scheduler reage ao evento, iniciando um job. Por exemplo, quando um sistema de rastreamento de inventário percebe que determinado produto esteja abaixo de um certo limite, pode gerar um evento que inicie um job de reposição de estoques;
· Eventos de chegada de arquivos, gerados por um file watcher (visto na primeira parte deste artigo, publicado na SQL Magazine 105): é possível criar um file watcher para verificar a chegada de um arquivo em um sistema. Pode-se configurar um job para iniciar quando o file watcher detecta a presença do arquivo. Por exemplo, um data warehouse para uma cadeia de lojas carrega dados no final do dia com base nos relatórios de receitas carregados a partir dos sistemas de ponto-de-venda das lojas. O job de carga de dados do data warehose é iniciado cada vez que um novo relatório de fim de dia chega.
Iniciando um job através de eventos gerados pela aplicação
A aplicação pode gerar um evento para notificar o Scheduler para iniciar um job. Um job iniciado desta maneira é conhecido como uma tarefa baseada em eventos (event-based job). É possível criar um schedule que faça referência a um evento ao invés de fazer referência a uma data, hora e informações de recorrência. Se um job é definido como sendo baseado em eventos, o mesmo é executado toda vez que o evento é gerado.
Para gerar um evento para notificar o Scheduler para iniciar um job, a aplicação enfileira a mensagem na fila do Oracle ...
Confira outros conteúdos:
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.