Eseguire il processo di uno script esterno

Eseguire il processo di uno script esterno
  • 29
    Lug

Eseguire il processo di uno script esterno

twittergoogle_pluslinkedin

Nelle versioni precedenti che eseguono uno shell script dal programmatore era difficile.

Nel rilascio 11g, per eseguire uno script di shell si doveva creare un lavoro esterno che lancia l’interprete dei comandi, e passare attraverso lo script come argomento della riga di comando.

In uscita 12c Oracle ha migliorato la funzionalità del pacchetto DBMS_SCHEDULER aggiunta di alcune nuove interessanti funzionalità. Una di queste nuove caratteristiche è la capacità di eseguire script esterni come parte della nostra azione di lavoro o meglio la capacità di scrivere i nostri script personalizzati ed eseguirli richiamando l’interprete di shell (in caso di ambienti Unix) o il prompt dei comandi (in ambienti Windows). Questo script personalizzato può essere writed direttamente all’interno della definizione del processo.
Questo nuovo tipo di lavoro si chiama ‘EXTERNAL_SCRIPT’. Questa definizione specifica che il lavoro è uno script esterno che utilizza la shell dei comandi del computer che esegue il lavoro.

Il processo esterno di uno script esterno:

    SQL> DECLARE

  1.   script_file    varchar2(32000) ;/
  2.   BEGIN
  3.  script_file := ‘#!/bin/bash
  4. export PATH=$PATH:/bin
  5. cd /tmp
  6. mkdir external
  7. cd external
  8. touch prova.txt’;
  9.  DBMS_SCHEDULER.create_job(
  10. job_name     => ‘EXTJOB’,
  11.   job_type     => ‘EXTERNAL_SCRIPT’,
  12.   job_action     => script_file,
  13.    credential_name => ‘oracle_os_credentials’,
  14.    enabled     => TRUE);
  15.  END;
  16. /

PL/SQL procedure successfully completed.

On the database verify execution result:

SQL> SELECT job_name,

  •     status,
  • error#,
  • to_char(log_date,’yyyy-mm-dd hh24:mi’) log_date
  •  FROM user_scheduler_job_run_details
  •   ORDER BY 1;

JOB_NAME        STATUS   ERROR#    LOG_DATE

————— ——————- ———–    ———————

EXTJOB        SUCCEEDED 0                   2015-06-08 14:28

On the operation system verify execution result:

[oracle@ora12c ~]$ cd /tmp/external

[oracle@ora12c external]$ ls -l

total 0

-rw-rw-rw- 1 oracle oinstall   Jun 08 14:28 prova.txt

[oracle@ora12c external]$