Call now: 252-767-6166  
Oracle Training Oracle Support Development Oracle Apps

 E-mail Us
 Oracle Articles
New Oracle Articles

 Oracle Training
 Oracle Tips

 Oracle Forum
 Class Catalog

 Remote DBA
 Oracle Tuning
 Emergency 911
 RAC Support
 Apps Support
 Oracle Support

 SQL Tuning

 Oracle UNIX
 Oracle Linux
 Remote s
 Remote plans
 Application Server

 Oracle Forms
 Oracle Portal
 App Upgrades
 SQL Server
 Oracle Concepts
 Software Support

 Remote S


 Consulting Staff
 Consulting Prices
 Help Wanted!


 Oracle Posters
 Oracle Books

 Oracle Scripts

Don Burleson Blog 







Using cron and crontab to Schedule Oracle Jobs

Oracle Database Tips by Donald Burleson

Advanced Oracle Utilities: The Definitive Reference by Rampant TechPress is written by top Oracle database experts (Bert Scalzo, Donald Burleson, and Steve Callan).  The following is an excerpt from the book.

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.





edits the current crontab file using the text editor specified by the EDITOR environment variable or the VISUAL environment variable


lists the current crontab file


removes the current crontab file


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.


$ crontab -r

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.

Cron Environment Variable Settings

Each environment variable line consists of a variable name, an equal sign (=), and a value.  Values that contain spaces need to be enclosed within quotes.  The following are some examples of environment variable settings:


color = red

title = 'My Life in a Nutshell'


It is important to remember that variable names are case sensitive and that system variables are usually defined with upper case names, while user defined variables are defined with lower case names.

Crontab Command Line Tips

Each crontab command line is comprised of six positional fields specifying the time, date and shell script or command to be run.  The format of the crontab command line is described in Table 11.2 below:





Day of Month


Day of Week


Valid values






Command path/command

Table 11.2:  Crontab Command Line Format


Each of these fields can contain a single number, a range of numbers indicated with a hyphen (such as 2-4), a list of specific values separated by commas (like 2,3,4) or a combination of these designations separated by commas (such as 1,3-5).  Any of these fields may also contain an asterisk (*) indicating every possible value of this field.  This can all get rather confusing, so here are a few examples that are all part of the same crontab file.  It has been broken up so as to explain each entry individually.


# Use the Korn Shell for all shell scripts



This sets the default shell for these cron scripts by setting the SHELL environment variable.



# 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/terry/cleanup.ksh > /tmp/cleanup.lst


This entry will run the script cleanup.ksh at 0 minutes past the hour of 6:00 am, every day of the month, every month of the year, but only on Mondays.  This illustrates that for a crontab to execute, all of the conditions specified must be met. So even though it was stated that the designation is every day of the month by making the third field a wildcard, the day also has to meet the final condition that the day is a Monday.



# 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/terry/weekly_mgmt_rpt.ksh wprd > /home/terry/weekly_mgmt_rpt.lst


This entry is very similar but will execute at 7:00 am.  Since the hour is in 24-hour format (midnight is actually represented as 00), then 07 represents 7:00 a.m.  Again, this entry will only be run once a week.



# Weekly Full Backup - run every Sunday at 1:30AM


30 01 * * 0 /home/terry/full_backup.ksh wprd > /tmp/full_backup.lst


Here this script is specified to be run at 30 minutes past the hour, the first hour of the day, but only on Sundays.  Remember that in the day of the week column, Sunday can be represented by either 0 or 7.



# Nightly Incremental Backup - run Monday-Saturday at 1:30AM


30 01 * * 1-6 /home/terry/incr_backup.ksh  > /tmp/incr_backup.lst


In this crontab entry, it shows the same indication for hour and minute as the last entry, but a range has been specified for the day of the week.  The range 1-6 will cause the incr_backup.ksh to be executed at 1:30 every morning from Monday through Saturday.



# Low disk space alert ... run every 15 minutes, sending

# alerts to key individuals via e-mail


00,15,30,45 * * * * /home/terry/free_space.ksh > /tmp/free_space.lst


This entry has minutes separated by a comma indicating that it should be run at each of the indicated times.  Since all the other fields are wildcards (*), the entry will be run on the hour (00), 15 minutes past the hour, 30 minutes past the hour and 45 minutes past the hour.



# Lunch Time Notification - run Monday-Friday at Noon -

# sends a message to all users indicating it's lunch time


00 12 * * 1-5 /home/terry/lunch_time.ksh wprd > /tmp/lunch_time.lst


This lunch reminder is set up to run at 12:00 p.m. Monday through Friday only.



Oracle Training at Sea
oracle dba poster

Follow us on Twitter 
Oracle performance tuning software 
Oracle Linux poster


Burleson is the American Team

Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals.  Feel free to ask questions on our Oracle forum.

Verify experience! Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications.

Errata?  Oracle technology is changing and we strive to update our BC Oracle support information.  If you find an error or have a suggestion for improving our content, we would appreciate your feedback.  Just  e-mail:  

and include the URL for the page.


Burleson Consulting

The Oracle of Database Support

Oracle Performance Tuning

Remote DBA Services


Copyright © 1996 -  2020

All rights reserved by Burleson

Oracle ® is the registered trademark of Oracle Corporation.