Acho que é isso.

REPEAT_INTERVAL=> `FREQ=HOURLY; INTERVAL=4`
        

-----Original Message-----
From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] On 
Behalf Of Ana Cássia Japiassu Diniz
Sent: quarta-feira, 26 de setembro de 2012 15:40
To: oracle_br@yahoogrupos.com.br
Subject: 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




___________________________________________________________________

The information transferred by this e-mail is solely for the intended 
recipient(s).
Any disclosure, copying, distribution of this e-mail by and to others is not 
allowed. If you are not an intended recipient, please delete this e-mail and 
notify the 
sender.

___________________________________________________________________


Responder a