Oracle Scheduler – Parte 4
Esta é o quarto 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 programs, que auxiliam na criação de jobs e também nas tarefas de reutilização. Será tratado também o objeto schedule, que facilita a criação de agendas para execução dos jobs.

Em que situação o tema é útil

Quando se pretende trabalhar com o Scheduler para criar e executar jobs é muito útil o conhecimento dos objetos program e schedule, pois ambos auxiliarão na criação de estratégias para a criação de jobs, bem como a organização e padronização de metodologias para execução de jobs no banco de dados.

No primeiro e segundo artigos desta série sobre o Oracle Scheduler apresentamos, de forma conceitual, todos os objetos que compõem esta solução completa de agendamento e gerenciamento de tarefas no banco de dados Oracle. No terceiro artigo apresentou-se, em detalhes, tudo o que é necessário para se trabalhar com jobs, que são “a alma” do Oracle Scheduler.

Dando continuidade, a cada novo artigo desta série apresentaremos, em detalhes, cada um dos objetos do Oracle Scheduler e, com isso, o leitor será capaz de construir soluções bastante completas no que diz respeito a execução de tarefas no banco de dados. Particularmente neste artigo apresentaremos todos os detalhes do objeto program, que dão ainda mais “poder” à execução dos jobs.

Outro objeto que será apresentado é o Schedule (ou Agenda), que serve para definir quando um job deve ser executado.

Criando e gerenciando Programs para a definição de Jobs

Um program (programa) é uma coleção de metadados sobre tarefas em particular. Opcionalmente estes programs podem ser usados para definir jobs. O correto conhecimento de como utilizar os programs é especialmente importante, pois eles facilitam bastante a definição dos jobs.

Antes de mais nada, é preciso conhecer quais as tarefas que podem ser feitas com os programs e quais os procedures necessários para tais tarefas, bem como os privilégios necessários para tal. A Tabela 1 apresenta estas tarefas, os procedures e privilégios necessários.

img

abrir imagem em nova janela

Tabela 1. Tarefas, procedures e privilégios necessários para trabalhar com programs.

Agora que conhecemos as tarefas possíveis de serem executadas com programs e também quais os procedures que devem ser usados, vamos colocar a “mão na massa”.

Criando programs

Conforme apresentado na Tabela 1, é possível criar programs usando o procedure CREATE_PROGRAM (ou o Enterprise Manager). Por padrão, os programs são criados no esquema do usuário conectado no momento desta criação. Para criar um program no esquema de outro usuário, é necessário qualificar o nome do program com o nome do esquema. Para que outros usuários possam usar os programs criados em seu esquema, é necessário que estes outros usuários tenham o privilégio de EXECUTE sobre o program portanto, uma vez que um program foi criado, é necessário conceder o privilégio EXECUTE sobre ele para todos os usuários que precisarão utilizá-lo.

A Listagem 1 apresenta um exemplo de criação de um program chamado MEU_PROGRAMA1.

Listagem 1. Criação do program MEU_PROGRAMA1.


  01. BEGIN
  02. DBMS_SCHEDULER.CREATE_PROGRAM (
  03. PROGRAM_NAME => 'MEU_PROGRAMA1',
  04. PROGRAM_ACTION => '/usr/local/bin/date',
  05. PROGRAM_TYPE => 'EXECUTABLE',
  06. COMMENTS => 'Comentários aqui!');
  07. END;
  08. /
  09.
  10. PL/SQL procedure successfully completed.

Nada de muito sofisticado, apenas um program chamado MEU_PROGRAMA (linha 03) cuja ação será a execução do comando de sistema operacional date (linha 04), que é um comando executável externo ao banco de dados (linha 05) e que ainda é possível adicionar comentários (linha 06).

É bom lembrar que todo program é criado como desabilitado. É necessário habilitá-lo antes de habilitar o job que aponta para esta program. É importante salientar também que não se deve tentar habilitar um program que necessite de argumentos sem antes definir todos os argumentos deste program.

Bem, depois de criado o ...

Quer ler esse conteúdo completo? Tenha acesso completo