[Oracle] OCP 11g – Capítulo 14: Usando o Scheduler para Automatização de Tarefas | Certificação BD 4shared
[Oracle] OCP 11g – Capítulo 14: Usando o Scheduler para Automatização de Tarefas
Postado por Milton Bastos | fev 18, 2014 | 1Z0-053 | 0 |
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âmetros EVENT_CONDITION e QUEUE_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 com CHAIN.
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 com TRUE.
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 ou HIGH 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.