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;