MigraTI - Soluções em banco de dados

segunda-feira, 18 de janeiro de 2010

Jobs

Vou começar a postar algumas coisas sobre job's conforme vou me lembrando vou editando este post.

Desde já agradeço.

Para forçar a execução de algum job.
exec dbms_job.run(numero do job);

Para remover um job.
exec dbms_job.remove(numero do job);

Para colocar um job em Broken.
exe DBMS_JOB.BROKEN(numero do job,true);

Para retirar um job em broken.
exe DBMS_JOB.BROKEN(numero do job,false);
-- Aconselho a forçar a execução do mesmo.


Para alterar um job completo.
DBMS_JOB.CHANGE (
job IN BINARY_INTEGER,
what IN VARCHAR2,
next_date IN DATE,
interval IN VARCHAR2,
instance IN BINARY_INTEGER DEFAULT NULL,
force IN BOOLEAN DEFAULT FALSE);

-- Aconselho a utilizar o script abaixo.

Para recriar um job a partir de outro job.
set line 155
set feedback off
set pagesize 0
select 'DECLARE ' || CHR(10) || ' JOBNO INTEGER; ' || CHR(10) || ' BEGIN ' ||
CHR(10) || ' DBMS_JOB.SUBMIT(JOBNO, ''' || replace(WHAT,'''','''''') || ''',' || CHR(10) ||
'to_date('''|| to_char(next_date,'DD/MM/YYYY HH24:MI:SS') ||''',''DD/MM/YYYY HH24:MI:SS'')'||',' || CHR(10) || '''' || INTERVAL || ''');' || CHR(10) ||
'END;' || CHR(10) || '/'
from dba_jobs where log_user = upper('&log_user');
set line 132
set feedback on
set pagesize 14
/


Para alterar o what de um job.
exec DBMS_JOB.WHAT(numero do job,'novo what');


Para alterar a instance de um job.
exec DBMS_JOB.INSTANCE(numero do job,'instance');


Lembrando que todos os comandos foram escritos como se você fosse o dono do job.
Caso você não seja o dono do job você terá de efetuar a seguinte sintaxe.
exec sys.dbms_ijob.comando...
exemplo:
exec sys.dbms_ijob.run(numero do job);


Conforme comentei acima. Se eu for lembrando de outros comandos vou editando este post.

Desde já agradeço.

Um comentário:

  1. Não esqueça de efetuar commit apos os comandos efetuados.
    ou melhor, comece a usar dbms_scheduler

    ResponderExcluir