Criar um Jog, Programa ou Agendamento
- A tabela do dicionário de dados
DBA_SCHEDULER_JOBS
armazena informações sobre todos os jobs associados a um agendamento. - O processo job coordinator, CJQ0, monitora a tabela
DBA_SCHEDULER_JOBS
e, quando necessário, aciona os job slaves (processos Jnnn) para executar jobs do Scheduler. - Um job especifica o que fazer e quando fazer. O “que fazer” pode ser uma única instrução SQL, um bloco PL/SQL, uma stored procedure PL/SQL, uma stored procedure Java, uma procedure externa, ou qualquer arquivo executável armazenado no sistema de arquivos do servidor.
- Os programas criam uma camada de abstração entre o job e a ação que ele irá executar, e são criados com a procedure
DBMS_SCHEDULER.CREATE_PROGRAM
. - Um agendamento é uma especificação de quando e com que frequência um job deve ser executado.
- Uma classe de job é utilizada para associar um ou mais jobs a um grupo de consumidores do Resource Manager, e também para controlar os níveis de registro em log.
- As janelas ampliam o conceito de agendamento, propiciando ao Oracle mais liberdade para determinar quando executar um job.
- Uma janela se abre em determinado momento e se fecha depois de uma duração especificada. Por conseguinte, os jobs especificados para execução em uma janela podem ser acionados, a critério do Oracle, a qualquer momento durante a janela.
Usar uma agenda baseada em tempo ou em evento para executar jobs do Scheduler
- Você pode basear a execução de um job do Scheduler em um tempo ou evento específico.
- Para criar e agendar um job baseado em tempo com uma chamada à procedure, use a procedure
CREATE_JOB
. - Os jobs baseados em evento também utilizam o parâmetro
START_DATE
; contudo, a inicialização do job também depende de um evento especificado pelos parâmetrosEVENT_CONDITION
eQUEUE_SPEC
. - Os programas e agendamentos permitem utilizar os componentes do Scheduler em tarefas semelhantes.
- É possível executar um job independemente de um agendamento, usando a procedure
RUN_JOB
.
Criar jobs leves
- Um job leve tem várias características idênticas às de um job padrão, exceto pelo fato de que um job leve é ideal para executar diversos jobs de curta duração frequentemente executados.
- Se você precisar enviar dezenas ou até centenas de jobs a cada segundo, um job leve é a melhor maneira de reduzir a sobrecarga.
- Os jobs leves ocupam pouco espaço em disco para os metadados e os dados de execução do job.
- Você não pode definir privilégios sobre os jobs leves porque eles herdam os privilégios do programa modelo.
Usar cadeias de jobs para executar uma sequencia de tarefas relacionadas
- Uma cadeia de jobs é um objeto do banco de dados que contém uma série nomeada de programas vinculados para alcançar um objetivo combinado.
- Cada parte de uma cadeia de programas é chamada de uma etapa.
- Uma cadeia é criada com a procedure
CREATE_CHAIN
. - Uma etapa da cadeia é criada com a procedure
DEFINE_CHAIN_STEP
. - As regras da cadeia, criadas com
DEFINE_CHAIN_RULE
, definem as dependências existentes entre as etapas e quando essas etapas serão executadas. - Você deve ativar uma cadeia de jobs com a procedure
ENABLE
. - Para executar uma cadeia de jobs, crie um job com um
JOB_TYPE
definido comCHAIN
.
Criar janelas e classes de jobs
- Crie uma nova janela com a procedure
CREATE_WINDOW
. - Ao criar uma nova janela, você pode atribuir, opcionalmente, um plano de recursos e uma prioridade.
- Crie uma nova classe de job com a procedure
CREATE_JOB_CLASS
. - A classe de job
DEFAULT_JOB_CLASS
é atribuída a um job quando esse job não tem uma atribuição de classe explícita. - Se uma janela se fechar antes do término de um job em execução, o job será executado até a sua conclusão, a menos que você defina o atributo
STOP_ON_WINDOW_CLOSE
comTRUE
.
Usar os conceitos avançados do Scheduler para priorizar os jobs
- A priorização dos jobs dentro de uma janela ocorre em dois níveis: dentro de uma classe por um nível de prioridade ou entre classes através de grupos de consumidores de recursos.
- Os níveis de registro em log são controlados pela classe do job.
- Crie uma classe de job com a procedure
CREATE_JOB_CLASS
. - Se vários jobs da mesma classe estiverem agendados para execução ao mesmo tempo, a prioridade dos jobs determinará a sequência em que os jobs dessa classe serão escolhidos para execução pelo processo job coordinator.
- Crie uma janela com a procedure
CREATE_WINDOW
. - Atribua a prioridade
LOW
ouHIGH
a uma janela para priorizar os atributos de janelas quando elas se sobrepuserem. - Quando as janelas se sobrepuserem e tiverem a mesma prioridade, a primeira janela que foi aberta permanecerá aberta.
Referência Bibliográfica Este post, assim como todos os posts sobre Certificação OCP deste blog, são trechos do livro “OCP Oracle Database 11g – Administração II (Guia do Exame 1Z0-053)”, da editora Bookman – www.bookman.com.br Recomendo este livro a todos que pretendem estudar para o exame. Meus posts são apenas algumas dicas para quem já está estudando por outros materiais, e por isso exige uma base de conhecimento anterior em cada um dos capitulos. Para uma referência completa de estudos é recomendado a compra do livro correspondente, bem como a documentação oficial da Oracle.