Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Otávio 21

Procedure para rodar JOB

Recommended Posts

Boa tarde,

 

Estou fazendo alguns testes e criei uma Job chamada "LOAD_ORIGEM" no meu banco de dados Oracle para executar o Prompt de Comando.

 

O que eu preciso é que uma Procedure chame esse Job, para que posteriormente, eu possa criar uma rotina diária. O nome da minha procedure é LOA_ORIGEM, e nela contém o seguinte código:

create or replace
PROCEDURE LOA_ORIGEM AS 
LOAD_ORIGEM BINARY_INTEGER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    (
      job       => LOAD_ORIGEM
     ,what      => 'DBMS_OUTPUT.PUT_LINE(''Job executado'');'
     ,next_date => to_date('06/03/2013 07:00:00','dd/mm/yyyy hh24:mi:ss')
     ,interval  => 'trunc(sysdate)+1+3/24+50/1440'
     ,no_parse  => TRUE
    );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(LOAD_ORIGEM));
END LOA_ORIGEM;

Quando eu executo a Procedure, ela me retorna o seguinte:

Conectando ao banco de dados mms.
Job Number is: 141
Processo encerrado.
Desconectando do banco de dados mms.
Alguém saberia me informar o que tem de errado no meu código ?
Obrigado.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi criado um JOB de ID 141, nada errado que vai rodar 06/03/2013 às 07:00:00;

 

Mas o que vai rodar não faz sentido (DBMS_OUTPUT.PUT_LINE).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei recriando o JOB da seguinte forma:

 
BEGIN
dbms_scheduler.create_job(
job_name => 'LOAD_ORIGEM',
job_type => 'EXECUTABLE',
job_action => 'D:\oracle\product\10.2.0\SQLLOAD\ORIGEM\GoLoad.bat',
start_date => systimestamp + interval '10' second,
repeat_interval => 'FREQ=DAILY',
enabled => TRUE,
auto_drop => FALSE,
comments => 'JOB LOAD DE ORIGEM');
END;
/

 

Depois executei o código para execucao, ver o que retornava:

exec  DBMS_SCHEDULER.run_job (job_name => 'LOAD_ORIGEM');

 

 

Ele me retornou o seguinte erro:

 

Erro ao iniciar na linha 1 no comando
exec DBMS_SCHEDULER.run_job (job_name => 'LOAD_ORIGEM')
Relatório de erro:
ORA-27370: o escravo do job falhou ao iniciar um trabalho do tipo EXECUTABLE
ORA-27300: operação dependente de sistema no SO:accessing execution agent falhou com o status: 2
ORA-27301: mensagem de falha de SO: The system cannot find the file specified.
ORA-27302: a falha ocorreu às: sjsec 6a
ORA-27303: informações adicionais: The system cannot find the file specified.
ORA-06512: em "SYS.DBMS_ISCHED", line 150
ORA-06512: em "SYS.DBMS_SCHEDULER", line 441
ORA-06512: em line 1
27370. 00000 - "job slave failed to launch a job of type EXECUTABLE"
*Cause: The scheduler ran into an error when the job slave tried to start
a job of type EXECUTABLE. The rest of the error stack will provide
more detailed information on what the exact problem was.
*Action: Correct the problem specified in the error stack and reschedule
the job.
Sabe me dizer o que pode estar ocorrendo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido !

Meu serviço OracleJobScheduler não estava startado no servidor.

 

Pra quem estiver com esse erro, verifique se o servico esta startado:

  • Executar > services.msc
  • Startar o servico OracleJobScheduler%ORACLE_SID%

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.