CRONTAB FOR SCHEDULING JOBS

Before scheduling a job on crontab, the DBA must have created and tested the script for a successful execution.
You can view the current cron setting using the below command;
cat /etc/crontab
* * * * * Command_to_execute
| | | | |
| | | | +?? Day of week (0?6) (Sunday=0) or Sun, Mon, Tue,…
| | | +???- Month (1?12) or Jan, Feb,…
| | +????-? Day of month (1?31)
| +??????? Hour (0?23)
+????????- Minute (0?59)
Below are some examples of cron jobs;

0 6,18 * * /home/oracle/dba/scripts/rm_listener.sh >> /home/oracle/rmlistener.log
0 1 * * * /home/oracle/dba/scripts/expdp_orcl.sh
0,30 9,12,15,18,21,0,3,6 * * * /home/oracle/dba/scripts/rm_trace.sh
0 1,4,7,10,13,16,19,22 * * * /home/oracle/snapshots.sh

By default, crontab has 5 values which are self-explanatory as above. 

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.
Using cron and crontab to Schedule Oracle Jobs
Each Linux user can create his own crontab file. The administrator controls the 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.
list of Options

-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.

The crontab –e command requires that the DBA knows the vi editor, which is the powerful UNIX/Linux text editor.

To view all cron jobs, use the below command
$ crontab -l
#**********************************************************
# Run the Weekly file cleanup task at 6:00AM every Tuesday
# and send any output to a file called cleanup.lst in the
# /tmp directory
#**********************************************************
00 06 * * 2 /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 meaning the script won’t execute at the said time. 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.

Each crontab command line is comprised of six positional fields specifying the time, date and shell script or command to be run.

Field: Minute Hour Day of Month Month Day of Week Command
Valid values : 0-59 0-23 1-31 1-12 0-7 Command path/command

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.

#**********************************************************

# 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

by Anthony Besong

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s