Job Scheduling Components
While some Oracle tasks are standalone, others require the ability to
communicate with other jobs.
Oracle jobs have a many-to-many relationship with other jobs,
meaning that the successful completion of one job may trigger many new
jobs, and the successful completion of a set of jobs may be required
to trigger a single job:
Figure 11.1:
Many- to- One Job Dependencies
The DBA or developer also needs the ability to stop a jobstream when a
task fails and invoke the appropriate error routines and
notifications. Here is an
example of a one-to-many conditional jobstream:
Figure 11.2:
A one-to-many conditional jobstream
As has been noted, in UNIX and Linux environments, the most
established scheduler is cron while
in Windows environments, there are several schedulers available
depending on the version of Windows being used.
For this reason, each type of environment will be presented
separately, starting with the cron scheduler.
Before exploring the
dbms_scheduler utility, take a quick look at Oracle job
scheduling with cron.
Using cron and crontab
to Schedule Oracle Jobs
This section will introduce the details on how to schedule Oracle
shell scripts to run on a regular timetable.
The cron daemon is the system task that runs scripted jobs on a
predetermined schedule.
The crontab command is used to tell the cron daemon what jobs the user
wants to run and when to run those jobs.
Each Linux user can create his own crontab file.
The administrator controls use of crontab by including users in
the
cron.deny file to disallow use of crontab.
The crontab Options
Like many Linux/UNIX utilities, the crontab command has several
options, each with different purposes.
|
Option
|
Purpose
|
|
-e
|
edits the current crontab file using the text editor
specified by the EDITOR environment variable or the VISUAL
environment variable
|
|
-l
|
lists the current crontab file
|
|
-r
|
removes the current crontab file
|
|
-u
|
specifies the user’s crontab to be manipulated. This is
usually used by root to manipulate the crontab of other
users or can be used to correctly identify the crontab to
be manipulated if one has used the su command to assume
another identity.
|
Table 11.1:
Crontab Options and Purposes
The crontab –e command requires that the DBA knows the vi editor,
which is the powerful UNIX/Linux text editor.
Here is how one would use the crontab –l (list) command to view the
current cron entries for the current logged-in user:
$ crontab -l
#**********************************************************
# Run the Weekly file cleanup task at
6:00AM
every Monday
# and send any output to a file called
cleanup.lst in the
# /tmp directory
#**********************************************************
00 06 * * 1 /home/dkb/cleanup.ksh > /tmp/cleanup.lst
#**********************************************************
# Run the Weekly Management Report every Monday
at 7:00 AM
# and save a copy of the report in my /home
directory
#**********************************************************
00 07 * * 1 /home/dkb/weekly_mgmt_rpt.ksh wprd >
/home/terry/weekly_mgmt_rpt.lst
Now if one wants to delete all the entries in the crontab, use the –r
option.
The Format of the crontab File
The crontab file consists of a series of entries specifying what shell
scripts to run and when to run them.
It is also possible to document crontab entries with comments.
Lines which have a pound sign (#) as the first non-blank
character are comments.
Note that comments cannot be specified on the same line as cron
command lines. Comments
must be kept on their own lines within the crontab.
There are two types of command lines that can be specified in the
crontab: environment variable settings and cron commands.
The following sections will provide more detail on these two
types of crontab entries.