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;