Pular para o conteúdo

Fóruns Banco de dados Oracle Executar arquivo do linux em uma procedure no oracle. Executar arquivo do linux em uma procedure no oracle.

#106540
vanessa mortago amato
Participante

    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