Pessoal,
Achei o tópico interessante e fiz uns testes aqui.
Eu não entendo nada de java então tentei o caminho sugerido pelo Portilho na criação do job e chamada na procedure:
1. Criei um arquivo no homeoracle com o nome de test.sh com o conteudo abaixo:
#!/bin/ksh
echo “Calling shell script from Oracle usign dbms scheduler `date`” >> /home/oracle/test.log
2.Criei uma credencial para executar o job com o usuário do SO:
BEGIN
DBMS_SCHEDULER.create_credential(
credential_name => ‘vanessa_credential’,
username => ‘oracle’, — usuario do SO dono do arquivo sh
password => ‘oracle’); — senha do usuario do SO dono do arquivo
END;
3. Criei o job associando a minha credencial:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => ‘TEST_SHELL’,
job_type => ‘EXECUTABLE’,
job_action => ‘/home/oracle/teste.sh’,
start_date => SYSDATE,
repeat_interval => ‘FREQ=MINUTELY; INTERVAL=1’,
enabled => TRUE,
credential_name => ‘VANESSA_CREDENTIAL’,
comments => ‘Calling shell script from Oracle’
);
END;
/
4.Incluir a chamada na procedure. No meu caso o job já está programado para executar de 1 em 1 minuto.
BEGIN
DBMS_SCHEDULER.RUN_JOB(
‘TEST_SHELL’
);
END;
/
O output gerado no SO:
Calling shell script from Oracle usign dbms scheduler Mon Apr 14 18:47:45 BRT 2014
Calling shell script from Oracle usign dbms scheduler Mon Apr 14 18:48:45 BRT 2014
Calling shell script from Oracle usign dbms scheduler Mon Apr 14 18:49:45 BRT 2014
Vanessa