[oracle_br] Re: JOB ser executado com range de datas
Primeira coisa, para agendamentos mais complexos do tipo o ** IDEAL **, mais simples / menos trabalhoso, é vc usar a opção de executar JOBs pelo ORACLE SCHEDULER, que foi introduzido na versão 10g : caso vc esteja com RDBMS em versão mais antiga que isso, aí vai ser bem mais trabalhoso, provavelmente o que vc faria no caso seria criar e manter uma TABELA com os dias em que a procedure deve rodar e criar um JOB que dispare todo dia mas a cada vez leia a tabela e veja se hoje é dia da proc rodar, se não for não roda... Sendo banco 10g ou superior : pelo que vejo vc quer rodar Mensalmente, nos dias dos meses de 10 até 31 , então ficaria + ou - assim : BEGIN DBMS_SCHEDULER.create_job ( job_name= 'nomedoteujob', job_type= 'PLSQL_BLOCK', job_action = 'BEGIN nomedaprocedureaserrodada; END;', start_date = TO_DATE('10/09/2013 ', repeat_interval = 'FREQ=MONTHLY; BYMONTHDAY=10,11,12,13,14.31;', end_date= TO_DATE('30/11/2013', enabled = TRUE, comments= 'Comentários do teu job.'); END; / Blz ? qquer dúvida mais sobre sintaxes e conceitos, dá um look em http://www.oracle-base.com/articles/10g/scheduler-10g.php e no manual Oracle® Database Administrator's Guide da tua versão de RDBMS, que vc terá um capítulo Scheduling Jobs with Oracle Scheduler , e se ainda assim não conseguir, retorna com os detalhes de versão que a gente tenta te ajudar mais... []s Chiappa OBS : só um detalhe : para se poder criar jobs normalmente o DBA ** tem ** que te dar privilégios específicos, então Confira com o teu DBA se o seu usuário no banco os tem, yep ?? --- Em oracle_br@yahoogrupos.com.br, Saulo Brito saulo.brito01@... escreveu Olá, sou desenvolvedor e me passaram uma tarefa de criar um JOB que executa uma proc. Já fiz a proc só que nunca fiz um JOB na vida, e estou com a seguinte dúvida: - Como faço a regra pro JOB ser executado de uma data X até o final do mês consecutivamente? Por exemplo: dia 10/09 até dia 30/09 e continuar dia 10/10 até dia 31/10 dia 10/11 até dia 30/11 Pesquisei no google e tentei algumas coisas sem sucesso. Poderiam me ajudar? Só a regra mesmo. Obrigado, Saulo Brito
Re: [oracle_br] Re: JOB ser executado com range de datas
J. Laurindo, acho que essa seria a forma correta de fazer só que iria me dar bastante trabalho e consequentemente consumir um tempo que já não tenho. Bom, resolvi de outra forma o problema. Fiz uma validação dentro da PROC mesmo, só verifico se a data atual está entre o dia 10 e o ultimo dia do mês atual, se a condição for valida eu executo o resto da proc. O JOB coloquei para executar todo dia. Acho que não ficou legal e que não é o correto. Enfim, o que você acha disso? é uma gambiarra? Abraços Saulo Brito Em 6 de setembro de 2013 15:22, J. Laurindo Chiappa jlchia...@yahoo.com.brescreveu: ** Primeira coisa, para agendamentos mais complexos do tipo o ** IDEAL **, mais simples / menos trabalhoso, é vc usar a opção de executar JOBs pelo ORACLE SCHEDULER, que foi introduzido na versão 10g : caso vc esteja com RDBMS em versão mais antiga que isso, aí vai ser bem mais trabalhoso, provavelmente o que vc faria no caso seria criar e manter uma TABELA com os dias em que a procedure deve rodar e criar um JOB que dispare todo dia mas a cada vez leia a tabela e veja se hoje é dia da proc rodar, se não for não roda... Sendo banco 10g ou superior : pelo que vejo vc quer rodar Mensalmente, nos dias dos meses de 10 até 31 , então ficaria + ou - assim : BEGIN DBMS_SCHEDULER.create_job ( job_name = 'nomedoteujob', job_type = 'PLSQL_BLOCK', job_action = 'BEGIN nomedaprocedureaserrodada; END;', start_date = TO_DATE('10/09/2013 ', repeat_interval = 'FREQ=MONTHLY; BYMONTHDAY=10,11,12,13,14.31;', end_date = TO_DATE('30/11/2013', enabled = TRUE, comments = 'Comentários do teu job.'); END; / Blz ? qquer dúvida mais sobre sintaxes e conceitos, dá um look em http://www.oracle-base.com/articles/10g/scheduler-10g.php e no manual Oracle® Database Administrator's Guide da tua versão de RDBMS, que vc terá um capítulo Scheduling Jobs with Oracle Scheduler , e se ainda assim não conseguir, retorna com os detalhes de versão que a gente tenta te ajudar mais... []s Chiappa OBS : só um detalhe : para se poder criar jobs normalmente o DBA ** tem ** que te dar privilégios específicos, então Confira com o teu DBA se o seu usuário no banco os tem, yep ?? --- Em oracle_br@yahoogrupos.com.br, Saulo Brito saulo.brito01@... escreveu Olá, sou desenvolvedor e me passaram uma tarefa de criar um JOB que executa uma proc. Já fiz a proc só que nunca fiz um JOB na vida, e estou com a seguinte dúvida: - Como faço a regra pro JOB ser executado de uma data X até o final do mês consecutivamente? Por exemplo: dia 10/09 até dia 30/09 e continuar dia 10/10 até dia 31/10 dia 10/11 até dia 30/11 Pesquisei no google e tentei algumas coisas sem sucesso. Poderiam me ajudar? Só a regra mesmo. Obrigado, Saulo Brito
Re: [oracle_br] Re: JOB ser executado com range de datas
Não entendi, dar bastante trabalho por que? O Chiappa já praticamente te passou a receita prontinha de como fazer, é só copiar o código dele e adaptar colocando a tua proc! Claro, isso considerando que vc tenha versão 10g ou mais atual, conforme ele explicou no e-mail dele, já que vc não especificou a versão no seu e-mail e por isso não tem como a gente adivinhar Tua solução realmente ficou uma gambiarra, pois vc vai executar um JOB todos os dias, inclusive nos dias que vc não precisa, consumindo assim recursos de forma desnecessária. Tudo bem que com a sua lógica de programação vc não vai executar a proc inteira, mas de qualquer maneira vc vai ter um job sendo disparado e um trecho da proc sendo executada. Da maneira que o Chiappa colocou ele só executa nos dias que vc realmente precisa. 2013/9/6 Saulo Brito saulo.brit...@gmail.com ** J. Laurindo, acho que essa seria a forma correta de fazer só que iria me dar bastante trabalho e consequentemente consumir um tempo que já não tenho. Bom, resolvi de outra forma o problema. Fiz uma validação dentro da PROC mesmo, só verifico se a data atual está entre o dia 10 e o ultimo dia do mês atual, se a condição for valida eu executo o resto da proc. O JOB coloquei para executar todo dia. Acho que não ficou legal e que não é o correto. Enfim, o que você acha disso? é uma gambiarra? Abraços Saulo Brito Em 6 de setembro de 2013 15:22, J. Laurindo Chiappa jlchia...@yahoo.com.br escreveu: ** Primeira coisa, para agendamentos mais complexos do tipo o ** IDEAL **, mais simples / menos trabalhoso, é vc usar a opção de executar JOBs pelo ORACLE SCHEDULER, que foi introduzido na versão 10g : caso vc esteja com RDBMS em versão mais antiga que isso, aí vai ser bem mais trabalhoso, provavelmente o que vc faria no caso seria criar e manter uma TABELA com os dias em que a procedure deve rodar e criar um JOB que dispare todo dia mas a cada vez leia a tabela e veja se hoje é dia da proc rodar, se não for não roda... Sendo banco 10g ou superior : pelo que vejo vc quer rodar Mensalmente, nos dias dos meses de 10 até 31 , então ficaria + ou - assim : BEGIN DBMS_SCHEDULER.create_job ( job_name = 'nomedoteujob', job_type = 'PLSQL_BLOCK', job_action = 'BEGIN nomedaprocedureaserrodada; END;', start_date = TO_DATE('10/09/2013 ', repeat_interval = 'FREQ=MONTHLY; BYMONTHDAY=10,11,12,13,14.31;', end_date = TO_DATE('30/11/2013', enabled = TRUE, comments = 'Comentários do teu job.'); END; / Blz ? qquer dúvida mais sobre sintaxes e conceitos, dá um look em http://www.oracle-base.com/articles/10g/scheduler-10g.php e no manual Oracle® Database Administrator's Guide da tua versão de RDBMS, que vc terá um capítulo Scheduling Jobs with Oracle Scheduler , e se ainda assim não conseguir, retorna com os detalhes de versão que a gente tenta te ajudar mais... []s Chiappa OBS : só um detalhe : para se poder criar jobs normalmente o DBA ** tem ** que te dar privilégios específicos, então Confira com o teu DBA se o seu usuário no banco os tem, yep ?? --- Em oracle_br@yahoogrupos.com.br, Saulo Brito saulo.brito01@... escreveu Olá, sou desenvolvedor e me passaram uma tarefa de criar um JOB que executa uma proc. Já fiz a proc só que nunca fiz um JOB na vida, e estou com a seguinte dúvida: - Como faço a regra pro JOB ser executado de uma data X até o final do mês consecutivamente? Por exemplo: dia 10/09 até dia 30/09 e continuar dia 10/10 até dia 31/10 dia 10/11 até dia 30/11 Pesquisei no google e tentei algumas coisas sem sucesso. Poderiam me ajudar? Só a regra mesmo. Obrigado, Saulo Brito
Re: [oracle_br] Re: JOB ser executado com range de datas
Aqui na empresa é 11g. Milton, realmente ele deu tudo mastigado, acontece que só seria executado nos meses de 10 a 31. Os meses de fevereiro e que terminam em 30 não funcionariam. Isso é basicamente uma dúvida que tenho, funcionaria? O meu problema é justamente esse 'repeat_interval', tenho que cria-lo de uma forma que pegue sempre o dia 10 ao ultimo dia do mês. Todos os meses do ano. =/ Em 6 de setembro de 2013 15:47, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: ** Não entendi, dar bastante trabalho por que? O Chiappa já praticamente te passou a receita prontinha de como fazer, é só copiar o código dele e adaptar colocando a tua proc! Claro, isso considerando que vc tenha versão 10g ou mais atual, conforme ele explicou no e-mail dele, já que vc não especificou a versão no seu e-mail e por isso não tem como a gente adivinhar Tua solução realmente ficou uma gambiarra, pois vc vai executar um JOB todos os dias, inclusive nos dias que vc não precisa, consumindo assim recursos de forma desnecessária. Tudo bem que com a sua lógica de programação vc não vai executar a proc inteira, mas de qualquer maneira vc vai ter um job sendo disparado e um trecho da proc sendo executada. Da maneira que o Chiappa colocou ele só executa nos dias que vc realmente precisa. 2013/9/6 Saulo Brito saulo.brit...@gmail.com ** J. Laurindo, acho que essa seria a forma correta de fazer só que iria me dar bastante trabalho e consequentemente consumir um tempo que já não tenho. Bom, resolvi de outra forma o problema. Fiz uma validação dentro da PROC mesmo, só verifico se a data atual está entre o dia 10 e o ultimo dia do mês atual, se a condição for valida eu executo o resto da proc. O JOB coloquei para executar todo dia. Acho que não ficou legal e que não é o correto. Enfim, o que você acha disso? é uma gambiarra? Abraços Saulo Brito Em 6 de setembro de 2013 15:22, J. Laurindo Chiappa jlchia...@yahoo.com.br escreveu: ** Primeira coisa, para agendamentos mais complexos do tipo o ** IDEAL **, mais simples / menos trabalhoso, é vc usar a opção de executar JOBs pelo ORACLE SCHEDULER, que foi introduzido na versão 10g : caso vc esteja com RDBMS em versão mais antiga que isso, aí vai ser bem mais trabalhoso, provavelmente o que vc faria no caso seria criar e manter uma TABELA com os dias em que a procedure deve rodar e criar um JOB que dispare todo dia mas a cada vez leia a tabela e veja se hoje é dia da proc rodar, se não for não roda... Sendo banco 10g ou superior : pelo que vejo vc quer rodar Mensalmente, nos dias dos meses de 10 até 31 , então ficaria + ou - assim : BEGIN DBMS_SCHEDULER.create_job ( job_name = 'nomedoteujob', job_type = 'PLSQL_BLOCK', job_action = 'BEGIN nomedaprocedureaserrodada; END;', start_date = TO_DATE('10/09/2013 ', repeat_interval = 'FREQ=MONTHLY; BYMONTHDAY=10,11,12,13,14.31;', end_date = TO_DATE('30/11/2013', enabled = TRUE, comments = 'Comentários do teu job.'); END; / Blz ? qquer dúvida mais sobre sintaxes e conceitos, dá um look em http://www.oracle-base.com/articles/10g/scheduler-10g.php e no manual Oracle® Database Administrator's Guide da tua versão de RDBMS, que vc terá um capítulo Scheduling Jobs with Oracle Scheduler , e se ainda assim não conseguir, retorna com os detalhes de versão que a gente tenta te ajudar mais... []s Chiappa OBS : só um detalhe : para se poder criar jobs normalmente o DBA ** tem ** que te dar privilégios específicos, então Confira com o teu DBA se o seu usuário no banco os tem, yep ?? --- Em oracle_br@yahoogrupos.com.br, Saulo Brito saulo.brito01@... escreveu Olá, sou desenvolvedor e me passaram uma tarefa de criar um JOB que executa uma proc. Já fiz a proc só que nunca fiz um JOB na vida, e estou com a seguinte dúvida: - Como faço a regra pro JOB ser executado de uma data X até o final do mês consecutivamente? Por exemplo: dia 10/09 até dia 30/09 e continuar dia 10/10 até dia 31/10 dia 10/11 até dia 30/11 Pesquisei no google e tentei algumas coisas sem sucesso. Poderiam me ajudar? Só a regra mesmo. Obrigado, Saulo Brito
Re: [oracle_br] Re: JOB ser executado com range de datas
Acho que vc nao entendeu o conceito, Saulo! Funciona sim, pode testar. 2013/9/6 Saulo Brito saulo.brit...@gmail.com ** Aqui na empresa é 11g. Milton, realmente ele deu tudo mastigado, acontece que só seria executado nos meses de 10 a 31. Os meses de fevereiro e que terminam em 30 não funcionariam. Isso é basicamente uma dúvida que tenho, funcionaria? O meu problema é justamente esse 'repeat_interval', tenho que cria-lo de uma forma que pegue sempre o dia 10 ao ultimo dia do mês. Todos os meses do ano. =/ Em 6 de setembro de 2013 15:47, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: ** Não entendi, dar bastante trabalho por que? O Chiappa já praticamente te passou a receita prontinha de como fazer, é só copiar o código dele e adaptar colocando a tua proc! Claro, isso considerando que vc tenha versão 10g ou mais atual, conforme ele explicou no e-mail dele, já que vc não especificou a versão no seu e-mail e por isso não tem como a gente adivinhar Tua solução realmente ficou uma gambiarra, pois vc vai executar um JOB todos os dias, inclusive nos dias que vc não precisa, consumindo assim recursos de forma desnecessária. Tudo bem que com a sua lógica de programação vc não vai executar a proc inteira, mas de qualquer maneira vc vai ter um job sendo disparado e um trecho da proc sendo executada. Da maneira que o Chiappa colocou ele só executa nos dias que vc realmente precisa. 2013/9/6 Saulo Brito saulo.brit...@gmail.com ** J. Laurindo, acho que essa seria a forma correta de fazer só que iria me dar bastante trabalho e consequentemente consumir um tempo que já não tenho. Bom, resolvi de outra forma o problema. Fiz uma validação dentro da PROC mesmo, só verifico se a data atual está entre o dia 10 e o ultimo dia do mês atual, se a condição for valida eu executo o resto da proc. O JOB coloquei para executar todo dia. Acho que não ficou legal e que não é o correto. Enfim, o que você acha disso? é uma gambiarra? Abraços Saulo Brito Em 6 de setembro de 2013 15:22, J. Laurindo Chiappa jlchia...@yahoo.com.br escreveu: ** Primeira coisa, para agendamentos mais complexos do tipo o ** IDEAL **, mais simples / menos trabalhoso, é vc usar a opção de executar JOBs pelo ORACLE SCHEDULER, que foi introduzido na versão 10g : caso vc esteja com RDBMS em versão mais antiga que isso, aí vai ser bem mais trabalhoso, provavelmente o que vc faria no caso seria criar e manter uma TABELA com os dias em que a procedure deve rodar e criar um JOB que dispare todo dia mas a cada vez leia a tabela e veja se hoje é dia da proc rodar, se não for não roda... Sendo banco 10g ou superior : pelo que vejo vc quer rodar Mensalmente, nos dias dos meses de 10 até 31 , então ficaria + ou - assim : BEGIN DBMS_SCHEDULER.create_job ( job_name = 'nomedoteujob', job_type = 'PLSQL_BLOCK', job_action = 'BEGIN nomedaprocedureaserrodada; END;', start_date = TO_DATE('10/09/2013 ', repeat_interval = 'FREQ=MONTHLY; BYMONTHDAY=10,11,12,13,14.31;', end_date = TO_DATE('30/11/2013', enabled = TRUE, comments = 'Comentários do teu job.'); END; / Blz ? qquer dúvida mais sobre sintaxes e conceitos, dá um look em http://www.oracle-base.com/articles/10g/scheduler-10g.php e no manual Oracle® Database Administrator's Guide da tua versão de RDBMS, que vc terá um capítulo Scheduling Jobs with Oracle Scheduler , e se ainda assim não conseguir, retorna com os detalhes de versão que a gente tenta te ajudar mais... []s Chiappa OBS : só um detalhe : para se poder criar jobs normalmente o DBA ** tem ** que te dar privilégios específicos, então Confira com o teu DBA se o seu usuário no banco os tem, yep ?? --- Em oracle_br@yahoogrupos.com.br, Saulo Brito saulo.brito01@... escreveu Olá, sou desenvolvedor e me passaram uma tarefa de criar um JOB que executa uma proc. Já fiz a proc só que nunca fiz um JOB na vida, e estou com a seguinte dúvida: - Como faço a regra pro JOB ser executado de uma data X até o final do mês consecutivamente? Por exemplo: dia 10/09 até dia 30/09 e continuar dia 10/10 até dia 31/10 dia 10/11 até dia 30/11 Pesquisei no google e tentei algumas coisas sem sucesso. Poderiam me ajudar? Só a regra mesmo. Obrigado, Saulo Brito
Re: [oracle_br] Re: JOB ser executado com range de datas
Milton e Chiappa, Obrigado pelas dicas e pelos esclarecimentos, vou testar sim e vou retirar minha gambiarra. =) Em 6 de setembro de 2013 17:00, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: ** Acho que vc nao entendeu o conceito, Saulo! Funciona sim, pode testar. 2013/9/6 Saulo Brito saulo.brit...@gmail.com ** Aqui na empresa é 11g. Milton, realmente ele deu tudo mastigado, acontece que só seria executado nos meses de 10 a 31. Os meses de fevereiro e que terminam em 30 não funcionariam. Isso é basicamente uma dúvida que tenho, funcionaria? O meu problema é justamente esse 'repeat_interval', tenho que cria-lo de uma forma que pegue sempre o dia 10 ao ultimo dia do mês. Todos os meses do ano. =/ Em 6 de setembro de 2013 15:47, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: ** Não entendi, dar bastante trabalho por que? O Chiappa já praticamente te passou a receita prontinha de como fazer, é só copiar o código dele e adaptar colocando a tua proc! Claro, isso considerando que vc tenha versão 10g ou mais atual, conforme ele explicou no e-mail dele, já que vc não especificou a versão no seu e-mail e por isso não tem como a gente adivinhar Tua solução realmente ficou uma gambiarra, pois vc vai executar um JOB todos os dias, inclusive nos dias que vc não precisa, consumindo assim recursos de forma desnecessária. Tudo bem que com a sua lógica de programação vc não vai executar a proc inteira, mas de qualquer maneira vc vai ter um job sendo disparado e um trecho da proc sendo executada. Da maneira que o Chiappa colocou ele só executa nos dias que vc realmente precisa. 2013/9/6 Saulo Brito saulo.brit...@gmail.com ** J. Laurindo, acho que essa seria a forma correta de fazer só que iria me dar bastante trabalho e consequentemente consumir um tempo que já não tenho. Bom, resolvi de outra forma o problema. Fiz uma validação dentro da PROC mesmo, só verifico se a data atual está entre o dia 10 e o ultimo dia do mês atual, se a condição for valida eu executo o resto da proc. O JOB coloquei para executar todo dia. Acho que não ficou legal e que não é o correto. Enfim, o que você acha disso? é uma gambiarra? Abraços Saulo Brito Em 6 de setembro de 2013 15:22, J. Laurindo Chiappa jlchia...@yahoo.com.br escreveu: ** Primeira coisa, para agendamentos mais complexos do tipo o ** IDEAL **, mais simples / menos trabalhoso, é vc usar a opção de executar JOBs pelo ORACLE SCHEDULER, que foi introduzido na versão 10g : caso vc esteja com RDBMS em versão mais antiga que isso, aí vai ser bem mais trabalhoso, provavelmente o que vc faria no caso seria criar e manter uma TABELA com os dias em que a procedure deve rodar e criar um JOB que dispare todo dia mas a cada vez leia a tabela e veja se hoje é dia da proc rodar, se não for não roda... Sendo banco 10g ou superior : pelo que vejo vc quer rodar Mensalmente, nos dias dos meses de 10 até 31 , então ficaria + ou - assim : BEGIN DBMS_SCHEDULER.create_job ( job_name = 'nomedoteujob', job_type = 'PLSQL_BLOCK', job_action = 'BEGIN nomedaprocedureaserrodada; END;', start_date = TO_DATE('10/09/2013 ', repeat_interval = 'FREQ=MONTHLY; BYMONTHDAY=10,11,12,13,14.31;', end_date = TO_DATE('30/11/2013', enabled = TRUE, comments = 'Comentários do teu job.'); END; / Blz ? qquer dúvida mais sobre sintaxes e conceitos, dá um look em http://www.oracle-base.com/articles/10g/scheduler-10g.php e no manual Oracle® Database Administrator's Guide da tua versão de RDBMS, que vc terá um capítulo Scheduling Jobs with Oracle Scheduler , e se ainda assim não conseguir, retorna com os detalhes de versão que a gente tenta te ajudar mais... []s Chiappa OBS : só um detalhe : para se poder criar jobs normalmente o DBA ** tem ** que te dar privilégios específicos, então Confira com o teu DBA se o seu usuário no banco os tem, yep ?? --- Em oracle_br@yahoogrupos.com.br, Saulo Brito saulo.brito01@... escreveu Olá, sou desenvolvedor e me passaram uma tarefa de criar um JOB que executa uma proc. Já fiz a proc só que nunca fiz um JOB na vida, e estou com a seguinte dúvida: - Como faço a regra pro JOB ser executado de uma data X até o final do mês consecutivamente? Por exemplo: dia 10/09 até dia 30/09 e continuar dia 10/10 até dia 31/10 dia 10/11 até dia 30/11 Pesquisei no google e tentei algumas coisas sem sucesso. Poderiam me ajudar? Só a regra mesmo. Obrigado, Saulo Brito