- Este tópico contém 12 respostas, 2 vozes e foi atualizado pela última vez 18 anos, 8 meses atrás por Anônimo.
-
AutorPosts
-
4 de maio de 2006 às 8:19 pm #75641Anônimo
Estou precisando criar job no Oracle mas acho q o Banco não esta configurado corretamente para isso.
Não estou localizando o dbms_job.sql para executar.
Como posso saber se esta tudo certo e se não estiver o q devo fazer?
Se alguem souber da uma força ai.4 de maio de 2006 às 9:27 pm #75643Anônimolleticiaa,
Caso você já tenha criado o job. Dê um select na view user_jobs. Lá terá informações de quando foi a ultima vez que rodou, se esta quebrado etc.
Pra executa-lo:
exec dbms_job.run(nº do job);
Pra Criar:
variable Jbno number;
exec dbms_job.submit(:Jbno, What(Ex:Nome de sua procedure), Next_date(Rodará da proxima vez), Interval(De quanto em quanto tempo rodará));
Ex:
variable v number;
exec DBMS_JOB.SUBMIT(:v,’zera;’,SYSDATE, ‘sysdate + 1440/1440′);Isso já basta pra você criar um job.
Pra Altera-lo:
Ex:exec DBMS_JOB.SUBMIT(43,’zera;’,SYSDATE, ‘sysdate + (10 / 24 / 60)’);
Espero ter ajudado.
4 de maio de 2006 às 9:28 pm #75644AnônimoDesculpa,
Pra altera-lo é:
Ex:
exec DBMS_JOB.change(43,’zera;’,SYSDATE, ‘sysdate + (10 / 24 / 60)’);Abraço.
4 de maio de 2006 às 9:55 pm #75646Anônimorosterne,
obrigada mas eu ainda não criei o job justamente pq não tenho certeza se o banco esta corretamente configurado pra isso, encontrei alguns artigos na internet q diz q o arquivo init.ora tem q conter as seguintes linhas:
job_queue_processes, a linha job_queue_interval e a linha job_queue_keep_connections
no meu init.ora tem apenas a primeira linha.
Encontrei tbm q deve-se verificar se o pacote DBMS_JOB esta criado no banco de dados, e creio q não esteja, e para criá-lo deve-se executar o script dbms_job.sql q esta no $ORACLE_HOMERDBMSadmin mas la não consta o dbms_job.sqlentão essa é minha dúvida como configurar o banco para utilizar os jobs?
4 de maio de 2006 às 10:05 pm #75648AnônimoRealmente lleticiaa,
você deverá setar processos pro job.
- alter system set job_queue_processes = 4 scope = both;
Abraço.
5 de maio de 2006 às 6:07 pm #75651AnônimoValeu rosterne
funcionou direitinhoagora to com dificuldade de programar o JOB pr executar num determinado dia e numa determinada hora….rsrsrsrsrs….
preciso q meu JOB execute todos os meses no dia 20 a meia noite.
Se vc puder me ajudar ficarei grata.5 de maio de 2006 às 10:30 pm #75654Anônimolleticiaa,
criando o job hj, fica assim:
- variable v number;
-
exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+15)- 1/200000, ‘trunc(sysdate + 1) + 7/24’);
Abraço.
5 de maio de 2006 às 11:49 pm #75658armandovelosoParticipanterosterne,
se nao for demais, explica o que significa esses parametros todos aí:
trunc(sysdate+15)- 1/200000, ‘trunc(sysdate + 1) + 7/24’);
que tanta divisao é essa!
preciso dar manutencao tambem em alguns JOBS aqui no meu trabalho…Obrigado.
8 de maio de 2006 às 4:15 pm #75662AnônimoArmando,
é o seguinte. Mandei muito parâmetro mesmo pq o bicho tava pegando aqui, mas nao precisava de tanto.
Vou explicar.
O correto pra esse job da lleticiaa sendo criado hj ficaria assim:
variable v number;
- exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+12), ‘trunc(sysdate + 31)’);
Explicando:
- trunc(sysdate+12) –> Estou adcionando a data de hj mais 12 dias e truncando, ou seja, truncando a data retrocede para àszero hora.
00:00:00 20/05/06
- trunc(sysdate + 31) –> Aqui, como é o intervalo do job, estou pegando a data, adicionando 31 dias e truncando para zero horas.
pode ser assim também o intervalo:
- trunc(sysdate + 31) + 0/24′) –> sendo que o 0/24 seria a hora do dia que vc quer rodar.
Ex:
trunc(sysdate + 31) + 0/24′) –> 00:00:00 20/05/06
trunc(sysdate + 31) + 1/24′) –> 01:00:00 20/05/06
Abraço.
8 de maio de 2006 às 4:45 pm #75663AnônimoSó não entendi uma coisa se eu usar dessa forma:
trunc(sysdate+12)- 1/200000, ‘trunc(sysdate + 1) + 7/24’);
considerando q eu quero q rode no dia 20, todo mes após essa data eu teria q alterar o JOB?
Pois até onde eu sei SYSDATE pega a data atual do sistema e pensando assim então esse JOB seria executado apenas uma vez?
Preciso q ele funcione todos os meses por isso a dúvida.
Mas valeu por enquanto, as dicas ja estão sendo muito uteis pra mim.
🙂8 de maio de 2006 às 5:08 pm #75664Anônimolleticiaa,
se vc criar hj, vai rodar 20 às 0 horas(trunc(sysdate+12)) e o intervalo conta a partir do ultima vez que rodou, ou seja, como rodará só dia 20 com um intervalo trunc(sysdate + 31), a proxima execução será apenas no mês seguinte.
exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+12), ‘trunc(sysdate + 31)’);
Abraço.
8 de maio de 2006 às 6:49 pm #75668Anônimorosterne,
nao tem como passar o dia do mes explicitamente nao?
nao ha problema de colocar “31” para rodar o proximo mes nao? caso o mes tenha 30 dias, se somar 31 ele sera executado a proxima vez no dia 21 e nao 20!
to viajando ou acontecerá isso mesmo?
8 de maio de 2006 às 7:40 pm #75670AnônimoRealmente,
pra resolver esse problema e rodar todo dia 20 do mês, vc pode fazer assim:
exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+12), ‘add_months(sysdate, 1)’);
Abraço.
-
AutorPosts
- Você deve fazer login para responder a este tópico.