Scheduler (DBMS_SCHEDULER) Enhancements in Oracle Database 12c Release 1 (12.1)
Oracle Database 12c Release 1 adds more functionality to the Oracle scheduler.
oracle 12cconfigurationintermediate
by OracleDba
13 views
Oracle Database 12c Release 1 adds more functionality to the Oracle scheduler.
12345678910111213141516171819
-- Set the necessary privileges
CONN sys@pdb1 AS SYSDBA
GRANT CREATE JOB TO test;
GRANT CREATE EXTERNAL JOB TO test;
GRANT CREATE CREDENTIAL TO test;
CONN test/test@pdb1
-- Create a credential so script is run as the
-- correct OS user on the database server.
BEGIN
DBMS_CREDENTIAL.create_credential(
credential_name => 'oracle_ol6_121',
username => 'oracle',
password => 'oracle'
);
END;
/123456789101112131415161718192021222324252627282930313233343536373839404142
CONN test/test@pdb1
-- Create a job with a shell script defined in-line.
SET SERVEROUTPUT ON
DECLARE
l_job_name VARCHAR2(30);
l_script VARCHAR2(32767);
BEGIN
l_job_name := DBMS_SCHEDULER.generate_job_name;
DBMS_OUTPUT.put_line('JOB_NAME=' || l_job_name);
l_script := '#!/bin/bash
export PATH=$PATH:/bin
ls /home/oracle > /tmp/test.txt';
DBMS_SCHEDULER.create_job(
job_name => l_job_name,
job_type => 'EXTERNAL_SCRIPT',
job_action => l_script,
credential_name => 'oracle_ol6_121',
enabled => TRUE
);
END;
/
JOB_NAME=JOB$_290
PL/SQL procedure successfully completed.
SQL>
-- Check the status of the job.
COLUMN job_name FORMAT A20
SELECT job_name, status, error#
FROM user_scheduler_job_run_details
ORDER BY job_name;
JOB_NAME STATUS ERROR#
-------------------- ------------------------------ ----------
JOB$_290 SUCCEEDED 0
SQL>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
CONN test/test@pdb1
-- Create a job with a SQL*Plus script defined in-line,
-- including an explicit connect.
SET SERVEROUTPUT ON
DECLARE
l_job_name VARCHAR2(30);
l_script VARCHAR2(32767);
BEGIN
l_job_name := DBMS_SCHEDULER.generate_job_name;
DBMS_OUTPUT.put_line('JOB_NAME=' || l_job_name);
-- Notice the explicit database connection in the script.
l_script := 'CONN test/test@pdb1
SPOOL /tmp/test.lst
SELECT SYSDATE, USER FROM dual;
SPOOL OFF';
DBMS_SCHEDULER.create_job(
job_name => l_job_name,
job_type => 'SQL_SCRIPT',
job_action => l_script,
credential_name => 'oracle_ol6_121',
enabled => TRUE
);
END;
/
JOB_NAME=JOB$_330
PL/SQL procedure successfully completed.
SQL>
-- Check the status of the job.
COLUMN job_name FORMAT A20
SELECT job_name, status, error#
FROM user_scheduler_job_run_details
ORDER BY job_name;
JOB_NAME STATUS ERROR#
-------------------- ------------------------------ ----------
JOB$_330 SUCCEEDED 0
SQL>
CONN test/test@pdb1
-- Create a credential so SQL*Plus connects
-- to the correct database user.
-- Notice the service is included in the username.
BEGIN
DBMS_CREDENTIAL.create_credential(
credential_name => 'test_pdb1_ol6_121',
username => 'test@pdb1',
password => 'test'
);
END;
/
-- Create a job with a SQL*Plus script defined in-line,
-- using a credential, rather than an explicit connect.
SET SERVEROUTPUT ON
DECLARE
l_job_name VARCHAR2(30);
l_script VARCHAR2(32767);
BEGIN
l_job_name := DBMS_SCHEDULER.generate_job_name;
DBMS_OUTPUT.put_line('JOB_NAME=' || l_job_name);
l_script := 'SPOOL /tmp/test.lst
SELECT SYSDATE, USER FROM dual;
SPOOL OFF';
-- Create the job in disabled mode.
-- The credential supplied is the OS user that should
-- run SQL*Plus.
DBMS_SCHEDULER.create_job(
job_name => l_job_name,
job_type => 'SQL_SCRIPT',
job_action => l_script,
credential_name => 'oracle_ol6_121',
enabled => FALSE
);
-- Set the credential used for SQL*Plus to
-- connect to the database;
DBMS_SCHEDULER.set_attribute(
name => l_job_name,
attribute => 'connect_credential_name',
value => 'test_pdb1_ol6_121'
);
-- Enable the job.
DBMS_SCHEDULER.enable(l_job_name);
END;
/
JOB_NAME=JOB$_336
PL/SQL procedure successfully completed.
SQL>
-- Check the status of the job.
COLUMN job_name FORMAT A20
SELECT job_name, status, error#
FROM user_scheduler_job_run_details
ORDER BY job_name;
JOB_NAME STATUS ERROR#
-------------------- ------------------------------ ----------
JOB$_336 SUCCEEDED 0
SQL>123456789101112131415161718192021222324252627282930313233343536373839404142434445
CONN test/test@pdb1
-- Create a job with an RMAN script defined in-line,
-- including an explicit connect.
SET SERVEROUTPUT ON
DECLARE
l_job_name VARCHAR2(30);
l_script VARCHAR2(32767);
BEGIN
l_job_name := DBMS_SCHEDULER.generate_job_name;
DBMS_OUTPUT.put_line('JOB_NAME=' || l_job_name);
-- Define the backup script.
l_script := 'connect target /
run {
backup archivelog all delete all input;
}';
DBMS_SCHEDULER.create_job(
job_name => l_job_name,
job_type => 'BACKUP_SCRIPT',
job_action => l_script,
credential_name => 'oracle_ol6_121',
enabled => TRUE
);
END;
/
JOB_NAME=JOB$_338
PL/SQL procedure successfully completed.
SQL>
-- Check the status of the job.
COLUMN job_name FORMAT A20
SELECT job_name, status, error#
FROM user_scheduler_job_run_details
ORDER BY job_name;
JOB_NAME STATUS ERROR#
-------------------- ------------------------------ ----------
JOB$_338 SUCCEEDED 0
SQL>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
SQL> SELECT output FROM all_scheduler_job_run_details WHERE job_name = 'JOB$_338';
OUTPUT
--------------------------------------------------------------------------------
Recovery Manager: Release 12.1.0.1.0 - Production on Wed Dec 18 20:19:30 2013
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
RMAN>
connected to target database: CDB1 (DBID=797615285)
RMAN> 2> 3>
Starting backup at 18-DEC-13
current log archived
OUTPUT
--------------------------------------------------------------------------------
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=29 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=223 RECID=3 STAMP=834522466
input archived log thread=1 sequence=224 RECID=4 STAMP=834524375
channel ORA_DISK_1: starting piece 1 at 18-DEC-13
channel ORA_DISK_1: finished piece 1 at 18-DEC-13
piece handle=/u01/app/oracle/fast_recovery_area/CDB1/backupset/2013_12_18/o1_mf_
annnn_TAG20131218T201937_9c40ttb4_.bkp tag=TAG20131218T201937 comment=NONE
OUTPUT
--------------------------------------------------------------------------------
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file name=/u01/app/oracle/fast_recovery_area/CDB1/archivelog/2013_1
2_18/o1_mf_1_223_9c3yz2yo_.arc RECID=3 STAMP=834522466
archived log file name=/u01/app/oracle/fast_recovery_area/CDB1/archivelog/2013_1
2_18/o1_mf_1_224_9c40tps3_.arc RECID=4 STAMP=834524375
Finished backup at 18-DEC-13
Starting Control File and SPFILE Autobackup at 18-DEC-13
piece handle=/u01/app/oracle/fast_recovery_area/CDB1/autobackup/2013_12_18/o1_mf
_s_834524379_9c40twl0_.bkp comment=NONE
OUTPUT
--------------------------------------------------------------------------------
Finished Control File and SPFILE Autobackup at 18-DEC-13
RMAN>
Recovery Manager complete.
SQL>Please to add comments
No comments yet. Be the first to comment!