CREATE USER extuser
   IDENTIFIED BY "welcome1"
   DEFAULT TABLESPACE USERS
   QUOTA UNLIMITED ON USERS;

GRANT CREATE SESSION TO extuser;
GRANT CREATE JOB TO extuser;
GRANT CREATE EXTERNAL JOB TO extuser;
GRANT CREATE CREDENTIAL TO extuser;

BEGIN
  DBMS_CREDENTIAL.create_credential(
    credential_name => 'oracle_os_credentials',
    username        => 'oracle',
    password        => 'nueva123'
  );
END;
/

DECLARE
   script_file    varchar2(32000) ;
BEGIN
   script_file := '#!/bin/bash
      export PATH=$PATH:/bin
      cd /tmp
      mkdir external
      cd external
      touch run_example.txt';

   DBMS_SCHEDULER.create_job(
      job_name        => 'Z_EXTJOB_01',
      job_type        => 'EXTERNAL_SCRIPT',
      job_action      => script_file,
      credential_name => 'oracle_os_credentials',
      enabled         => TRUE);
END;
/

COL job_name FORMAT a15
COL status FORMAT a10

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;

-- OS Files

#include <stdio.h>

main() {

printf("this is a test\n") ;
return 0 ;

}

#!/bin/bash

./test.exe 1>test.1 2>test.2
rc=`echo $?`

if [ $rc -ne 0 ]
   then
      echo "with errors" > test.out
      exit $rc
   else
      echo "succesfully" > test.out
      exit 0
fi

-- SQL*Plus Commands

DECLARE
   script_file    varchar2(32000) ;
BEGIN
   script_file := '#!/bin/bash
      cd /tmp/external
      ./test.sh' ;

   DBMS_SCHEDULER.create_job(
      job_name        => 'Z_EXTJOB_02',
      job_type        => 'EXTERNAL_SCRIPT',
      job_action      => script_file,
      credential_name => 'oracle_os_credentials',
      enabled         => TRUE);
END;
/

COL job_name FORMAT a15
COL status FORMAT a10

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;


SELECT COUNT(*) 
  FROM dba_scheduler_job_run_details;

EXEC DBMS_SCHEDULER.purge_log;

SELECT COUNT(*) 
  FROM dba_scheduler_job_run_details;

-- Clean-Up

DROP USER extuser CASCADE;