Criando e Alterando JOBS

Algumas tarefas ou execuções de processos precisam ser feitas periodicamente, ou simplesmente agendadas para um determinado horário.
O Oracle possui algumas maneiras de automatizar estas atividades, uma delas é a submissão de atividades como JOBS.

JOBs são objetos associados ao schema que permitem agendamento de atividades, para trabalharmos com os jobs precisamos de permissão de execução na package DBMS_JOB.
( é válido lembrar que deve existir uma queue para os jobs previamente configurada, o que é normal numa instalação padrão ).

Neste post estarei mostrando, de maneira resumida, como criar JOBS e corrigí-los caso fiquem BROKEN.

Submetendo um JOB

Para submetermos um JOB precisamos de alguns itens:
– O que executar;
– Se periódico, qual o intervalo;

No meu caso tenho uma procedure PROC_LIMPADADOS e o intervalo de execução dela é a cada 12h.

Para submetermos um JOB usamos a seguinte sintaxe:

SQLPLUS>

DECLARE
  jobno NUMBER;
BEGIN
DBMS_JOB.submit(jobno,'PROC_LIMPADADOS;',sysdate+1/12);
end;
/

Explicando os parâmetros

DBMS_JOB.submit

1) o primeiro parametro é um parametro OUT e não pode receber nenhum valor. Este campo retornará o código da sua JOB, no meu caso não exibe na tela. ( voce poderia usar o DBMS_OUTPUT.PUT_LINE ou algo assim para fazre isso 🙂 ).
2) o segundo parametro é uma string com o nome da sua procedure. Se for uma package use a seguinte forma: ‘PACKAGE_SUA.PROCEDURE_DA_PACKAGE’.
3) intervalo de execução.

Corrigindo JOBs Broken

Algumas vezes sua job pode falhar e o Oracle pode setá-la como broken. Broken é um estado que a JOB fica agendada para uma data inválida e é necessário revalidá-la para que volte a funcionar.

Para corrigirmos uma JOB BROKEN usamos o comando:

SQLPLUS>

exec dbms_job.broken(14242, FALSE,  TO_DATE('26/01/2011 05:00','dd/MM/yyyy HH24:mi') );

Explicando os parâmetros

DBMS_JOB.submit

1) o primeiro parametro é o código da sua JOB, no meu caso 14242.
2) o segundo parametro é um boleano que informa se sua JOB deve continuar BROKEN ou se deve ser reativada para execução.
3) próxima data de execução. ( ele vai manter o mesmo intervalo de anteriormente )

Como ver as JOBs

Ahá! Pois bem, para visualizarmos as JOBs cadastradas no banco devemos usar as VIEWs USER_JOBS, ALL_JOBS ou DBA_JOBS

SQLPLUS>

select * from all_jobs;

Na view você poderá ver a última execução, a próxima execução, se a JOB está broken e demais dados.

Como ver as JOBs em execução

Na view DBA_JOBS_RUNNING você terá uma listagem das JOBs em execução no momento.

SQLPLUS>

select * from dba_jobs_running;

Onde encontrar erros da minha JOB?

Você poderá encontrar erros de sua job nos alert logs e nos traces do oracle. Na pasta diag ou na pasta bdump.

Espero que este post possa ajudar na criação e manutenção das JOBS.
Abraço!

Deixe uma resposta