Este site ira lhe ajudar com algumas opções no uso do DBMS_SCHEDULER

http://docs.oracle.com/cd/B28359_01/server.111/b28310/schedadmin006.htm 

 
--LISTA OS JOBS
SELECT j.owner,
       j.job_name,
       j.job_action,
       j.last_start_date,
       j.last_run_duration,
       j.next_run_date,
       j.state
  FROM dba_scheduler_jobs j
 WHERE UPPER(j.owner) = 'xxx';



>________________________________
> De: Ana Cássia Japiassu Diniz <anajapia...@gmail.com>
>Para: oracle_br@yahoogrupos.com.br 
>Enviadas: Quarta-feira, 26 de Setembro de 2012 15:39
>Assunto: Re: [oracle_br] Re: Execução de job's no oracle 10g (10.2.0.5)
> 
>Grata a todos pelas informações/ajuda.
>
>Samuel,
>
>seguindo o seu exemplo/sugestão exclui o job existente para executar a
>procedure e criei com o script abaixo:
>BEGIN
>    DBMS_SCHEDULER.create_job (job_name => 'ACP.JOB_EXECUTA_PROC',
>                               job_type => 'STORED_PROCEDURE',
>                               job_action => 'ACP.SPD_CARGA_REL_EST_PROC',
>                               repeat_interval => 'FREQ=DAILY;
>BYHOUR=3,7,11,15,19,23; BYMINUTE=0; BYSECOND=0',
>                               end_date => NULL,
>                               enabled => TRUE,
>                               comments => 'Teste');
>End;
>/
>
>O que retornou "PL/SQL procedure successfully completed".
>Dúvida: Não estou conseguindo visualizando o JOB pelo o plsql developer por
>exemplo, deveria aparecer na aba job não era? Outra coisa: a minha
>necessidade é que este job seja executado diariamente de 4 em 4 horas. Como
>defino este intervalo no repeat interval?
>
>Em paralelo estou pesquisando, mas preciso que isto funcione ainda hoje e
>ainda não havia utilizado o DBMS_SCHEDULER.
>
>Mais uma vez muito obrigada a todos.
>
>Ana
>
>Em 26 de setembro de 2012 14:43, J. Laurindo Chiappa <jlchia...@yahoo.com.br
>> escreveu:
>
>> **
>>
>>
>> Vitor, apenas um adendo : absolutamente ***** NÃO ******* é
>> exigido/necessário/preciso vc ter EXCEPTIONs no seu bloco PL/SQL (seja
>> anônimo, seja named dentro dum stored PL/SQL, absolutamente não importa)
>> seo que vc quer é obter um status de falha causada por erros 'normais'
>> decorrentes da execução de SQLs ou PL/SQLs : o comportamento NORMAL dum
>> bloco PL/SQL é ser encerrado e reporta o código do erro pra quem o
>> chamou... Apenas se usa EXCEPTION se vc OU quer ter algum tratamento de
>> erros customizado (digamos, quer gravar numa tabela sua alguns detalhes a
>> mais que não são armazenados), OU se vc quer 'mascarar' o erro....
>> Veja o exemplo abaixo mostrando que SIM, uma falha aborta o bloco e SIM,
>> isso fica registrado Inclusive para jobs DBMS_JOB :
>>
>> ==> crio uma tabela e uma procedure que sintaticamente está OK, mas que
>> vai falhar com TOO MANY ROWS, pois fará SELECT de múltiplos valores numa
>> variável escalar :
>>
>> SQL> create table TAB_OBJ as (select * from DBA_OBJECTS);
>>
>> Tabela criada.
>>
>> SQL> create or replace procedure PROC_TESTE_JOB is
>> 2 v_number number;
>> 3 BEGIN
>> 4 select object_id into v_number from TAB_OBJ;
>> 5 END;
>> 6 /
>>
>> Procedimento criado.
>>
>> ==> vou executar num JOB :
>>
>> SQL> set serveroutput on
>> SQL> DECLARE
>> 2 v_jobno number;
>> 3 BEGIN
>> 4 dbms_job.submit(
>> 5 v_jobno,
>> 6 'BEGIN PROC_TESTE_JOB; END;',
>> 7 sysdate + 5 / (24*60),
>> 8 'trunc(sysdate,''mi'')+1/288',
>> 9 TRUE);
>> 10 commit;
>> 11 dbms_output.put_line('Job id=' || v_jobno);
>> 12 END;
>> 13 /
>> Job id=27
>>
>> Procedimento PL/SQL concluÝdo com sucesso.
>>
>> ==> espero os 5 minutos especificados, veja que a falha ocorreu e FOI
>> registrada na coluna, sem absolutamente NENHUMA necessidade de criar uma
>> EXCEPTION :
>>
>> SQL> select job, last_date, this_date, next_date, broken, interval,
>> failures, what from dba_jobs;
>>
>> JOB LAST_DATE THIS_DATE NEXT_DATE B INTERVAL FAILURES WHAT
>> ---------- ------------------- ------------------- ------------------- -
>> --------------------------- ------- -----------------------------------
>> 5 26/09/2012 12:06:00 30/09/2012 01:00:00 N wk_job.next_time('DY0701') 0
>> wksys.wk_job.invoke(2,5);
>> 7 26/09/2012 12:35:05 26/09/2012 12:36:05 N sysdate + 1 / (24 * 60) 0
>> EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS();
>> 4 26/09/2012 12:06:00 26/09/2012 13:00:00 N wk_job.next_time('HH0001') 0
>> wksys.wk_job.invoke(2,4);
>> 27 26/09/2012 12:37:20 N trunc(sysdate,'mi')+1/288 1 BEGIN PROC_TESTE_JOB;
>> END;
>>
>> ==> espero mais 5 ...
>>
>> SQL> /
>>
>> SQL> select job, last_date, this_date, next_date, broken, interval,
>> failures, what from dba_jobs;
>>
>> JOB LAST_DATE THIS_DATE NEXT_DATE B INTERVAL FAILURES WHAT
>> ---------- ------------------- ------------------- ------------------- -
>> --------------------------- ------- -----------------------------------
>> 5 26/09/2012 12:06:00 30/09/2012 01:00:00 N wk_job.next_time('DY0701') 0
>> wksys.wk_job.invoke(2,5);
>> 7 26/09/2012 12:40:05 26/09/2012 12:41:05 N sysdate + 1 / (24 * 60) 0
>> EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS();
>> 4 26/09/2012 12:06:00 26/09/2012 13:00:00 N wk_job.next_time('HH0001') 0
>> wksys.wk_job.invoke(2,4);
>> 27 26/09/2012 12:41:20 N trunc(sysdate,'mi')+1/288 2 BEGIN PROC_TESTE_JOB;
>> END;
>>
>> SQL>
>>
>> ===> okdoc ?? Só acrescento, tal como Documentado, após um erro o JOb vai
>> ser executado de novo no próximo schedule, e de novo, e de novo, até
>> completar 16 vezes, quando aí sim ele é declarado QUEBRADo e a coluna
>> BROKEN é marcada com Y ... SERÀ que não foi isso que aconteceu pra vc,
>> quando vcdiz que o seu job não foi marcado como BROKEN apos falhar ???
>>
>> Como eu disse também, situações de erro lógico, que NÂO geram código de
>> erro físico (exemplo, UPDATE ou DELETE que não encontraram nenhum
>> registro), logicamente NÃO são flagados, veja :
>>
>>
>> SQL> create or replace procedure PROC_TESTE_JOB is
>> 2 v_number number;
>> 3 BEGIN
>> 4 update TAB_OBJ set object_id = 999999999 where 1=2;
>> 5 END;
>> 6 /
>>
>> Procedimento criado.
>>
>> SQL> select job, last_date, this_date, next_date, broken, interval,
>> failures, what from dba_jobs;
>>
>> SQL> select job, last_date, this_date, next_date, broken, interval,
>> failures, what from dba_jobs;
>>
>> JOB LAST_DATE THIS_DATE NEXT_DATE B INTERVAL FAILURES WHAT
>> ---------- ------------------- ------------------- ------------------- -
>> --------------------------- ------- -----------------------------------
>> 5 26/09/2012 12:06:00 30/09/2012 01:00:00 N wk_job.next_time('DY0701') 0
>> wksys.wk_job.invoke(2,5);
>> 7 26/09/2012 12:40:05 26/09/2012 12:41:05 N sysdate + 1 / (24 * 60) 0
>> EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS();
>> 4 26/09/2012 12:06:00 26/09/2012 13:00:00 N wk_job.next_time('HH0001') 0
>> wksys.wk_job.invoke(2,4);
>> 27 26/09/2012 13:26:03 26/09/2012 13:31:00 N trunc(sysdate,'mi')+1/288 0
>> BEGIN PROC_TESTE_JOB; END;
>>
>> => espero mais algum tempo ....
>>
>> SQL> /
>>
>> SQL> select job, last_date, this_date, next_date, broken, interval,
>> failures, what from dba_jobs;
>>
>> JOB LAST_DATE THIS_DATE NEXT_DATE B INTERVAL FAILURES WHAT
>> ---------- ------------------- ------------------- ------------------- -
>> --------------------------- ------- -----------------------------------
>> 5 26/09/2012 12:06:00 30/09/2012 01:00:00 N wk_job.next_time('DY0701') 0
>> wksys.wk_job.invoke(2,5);
>> 7 26/09/2012 12:40:05 26/09/2012 12:41:05 N sysdate + 1 / (24 * 60) 0
>> EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS();
>> 4 26/09/2012 12:06:00 26/09/2012 13:00:00 N wk_job.next_time('HH0001') 0
>> wksys.wk_job.invoke(2,4);
>> 27 26/09/2012 13:51:00 26/09/2012 13:56:00 N trunc(sysdate,'mi')+1/288 0
>> BEGIN PROC_TESTE_JOB; END;
>>
>> []s
>>
>> Chiappa
>>
>> --- Em oracle_br@yahoogrupos.com.br, "Vitor Jr." <vitorjr81@...> escreveu
>>
>> >
>> > Sim, passo por isso direto… :)
>> > Cenário:
>> > job criado com sucesso, procedure está válida, job dispara mas não
>> finaliza o processo mas não acusa falha na coluna failures ou broken da
>> dba_jobs.
>> > Conclusão:
>> > Falha no procedimento e não há tratamento de exception, em 100% dos
>> casos que peguei até hoje… Não necessariamente uma atualização de banco
>> causa isso, geralmente uma atualização na procedure pode causar isso…
>> > Era necessário debugar a execução da procedure e verificar em que ponto
>> a mesma está falhando.
>> >
>> >
>> > Att,/Regards,
>> >
>> >
>> > Vitor Jr.
>> > Infraestrutura / Infrastructure Team
>> > Oracle 11g DBA Certified Professional - OCP
>> > Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid
>> Infrastructure Administrator - OCE
>> > Oracle Database 11g Performance Tuning Certified Expert - OCE
>> > Oracle Exadata 11g Certified Implementation Specialist
>> > Oracle Certified Associate, MySQL 5
>> > mail, gtalk e msn: vitorjr81@...
>> > http://certificacaobd.com.br/
>> > skype: vjunior1981
>>
>> >
>> >
>> >
>> >
>> > On 26/09/2012, at 11:27, Ana Cássia Japiassu Diniz <anajapiassu@...>
>> wrote:
>> >
>> > > Olá pessoal,
>> > >
>> > > Tenho um job na base de dados que não está executando. Executo o
>> script de
>> > > criação o mesmo é criado e agendado sem erros, porém não executa.
>> > > Segue o script que usei ao tentar recriar o job.
>> > >
>> > > Funcionava sem problemas no oracle 10.2.0.1, desde de que migrei a
>> base de
>> > > dados para o 10.2.0.5 parou de funcionar. Não sei se tem haver. Estou
>> > > pesquisando também algo nesta linha.
>> > >
>> > > A procedure esyá compilada e executa sem erros.
>> > >
>> > > Alguém já passou por essa situação do job simplesmente parar de
>> executar?
>> > > Não gera nenhum erro.
>> > >
>> > > begin
>> > >
>> > > for rec in (select job from dba_jobs where what =
>> > > 'ACP.SPD_CARGA_REL_EST_PROC;') LOOP
>> > > sys.dbms_ijob.remove (rec.job);
>> > > end loop;
>> > > commit;
>> > > end;
>> > > /
>> > >
>> > > alter session set NLS_DATE_FORMAT='dd/mm/yyyy';
>> > >
>> > > variable job NUMBER;
>> > >
>> > > declare
>> > > v_hora_atual integer;
>> > > v_prox_hora integer;
>> > > begin
>> > >
>> > > select to_char(sysdate, 'HH24') into v_hora_atual from dual;
>> > >
>> > > if v_hora_atual > 3 and v_hora_atual < 7 then
>> > >
>> > > v_prox_hora := 7;
>> > >
>> > > elsif v_hora_atual >= 7 and v_hora_atual < 11 then
>> > >
>> > > v_prox_hora := 11;
>> > >
>> > > elsif v_hora_atual >= 11 and v_hora_atual < 15 then
>> > >
>> > > v_prox_hora := 15;
>> > >
>> > > elsif v_hora_atual >= 15 and v_hora_atual < 19 then
>> > >
>> > > v_prox_hora := 19;
>> > >
>> > > elsif v_hora_atual >= 19 and v_hora_atual < 23 then
>> > >
>> > > v_prox_hora := 23;
>> > >
>> > > else
>> > >
>> > > v_prox_hora := 3;
>> > >
>> > > end if;
>> > >
>> > > select nvl(max(job)+1,40) into :job from dba_jobs;
>> > >
>> > > sys.dbms_ijob.submit( job => :job,
>> > > LUSER => 'ACP',
>> > > PUSER => 'ACP',
>> > > CUSER => 'ACP',
>> > > what => 'ACP.SPD_CARGA_REL_EST_PROC;',
>> > > next_date => trunc(sysdate) + v_prox_hora/24,
>> > > interval => 'trunc(sysdate+1/6,''HH'')',
>> > > BROKEN => false,
>> > > NLSENV => 'NLS_LANGUAGE="AMERICAN"
>> > > NLS_TERRITORY="AMERICA" NLS_CURRENCY="$" NLS_ISO_CURRENCY="AMERICA"
>> > > NLS_NUMERIC_CHARACTERS=".," NLS_DATE_FORMAT="=dd/mm/yyyy"
>> > > NLS_DATE_LANGUAGE="AMERICAN" NLS_SORT="BINARY"',
>> > > ENV => hextoraw('0102000200000000'));
>> > > commit;
>> > >
>> > > end;
>> > > /
>> > >
>> > > Desde já agradeço a todos.
>> > >
>> > > Ana
>> > >
>> > > [As partes desta mensagem que não continham texto foram removidas]
>> > >
>> > >
>> >
>> >
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>>
>>  
>>
>
>
>
>-- 
>"A Cristo, por Maria,
>Juntos até o Céu."
>
>Jesus Misericordioso, Eu confio em Vós!
>
>"Viver e levar para o mundo a misericórdia, é a nossa missão"
>Comunidade Católica Missionária Filhos da Misericórdia
>
>
>[As partes desta mensagem que não continham texto foram removidas]
>
>
>
>------------------------------------
>
>--------------------------------------------------------------------------------------------------------------------------
>>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>>responsabilidade de seus remetentes.
>Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
>--------------------------------------------------------------------------------------------------------------------------
>>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>>http://www.oraclebr.com.br/  
>------------------------------------------------------------------------------------------------------------------------
> Links do Yahoo! Grupos
>
>
>
>
>

[As partes desta mensagem que não continham texto foram removidas]

Responder a