Chapter 8. Scheduling


Administering a database requires running lots of tasks, sometimes on the spur of the moment, but often at regularly and predictably scheduled times. Examples include collecting statistics on database objects, gathering information on free space inside the database, analyzing and reporting problems with an instance directly to the DBA on call, and so on. Such tasks may be database-related or may be related to the operating systemfor example, checking space in filesystems, making sure that other servers are reachable, and so on. As a DBA, you can probably think of hundreds of situations where a specific task, usually referred to as a job, needs to be scheduled to run at some point in the future rather than executed immediately.

This chapter describes PL/SQL's facilities for scheduling jobs in the database, as well as outside the database (in the same server). This functionality is provided via two built-in packages: DBMS_JOB and DBMS_SCHEDULER. DBMS_JOB, first introduced in the Oracle8i Database, is quite limited in functionality. With Oracle Database 10g Release 1, Oracle effectively replaced DBMS_JOB with DBMS_SCHEDULER. The newer package is a much more robust utility and should be used in place of DBMS_JOB. This chapter focuses solely on showing you how to use DBMS_SCHEDULER. Oracle Enterprise Manager in Oracle Database 10g provides a graphical user interface that may be used to manage job scheduling, but that discussion is outside the scope of this chapter.

Oracle scheduling encompasses four basic components, shown conceptually in Figure 8-1:

  • A job, an object that specifies which program runs at what time

  • A schedule, a named object that stores a calendar of specific execution times

  • A program, a named object that specifies the executable that is to run

  • A window, which specifies a particular duration and resource allocation scheme for a job

A job has the following associated with it:

Figure 8-1. Components of the Oracle Scheduler


  • A job_action, which may be a stored procedure, a PL/SQL anonymous block, or an operating system executable.

  • A repeat_interval, which shows how often and when the job should be executed.

A job may optionally be assigned a named schedule, which specifies calendar strings inside it. The schedule_name parameter may specify a schedule, a window, or a window group. Instead of a job_action, a job may execute a named program, which references the types of actions the job_action parameter can reference; these may be stored procedures, anonymous PL/SQL blocks, or operating system executables.

A job may belong to a job class, which groups similar jobs and defines some common properties for themfor example, a logging level.

A window represents a particular start and end time and a resource manager plan. When a window is assigned to a job, the job starts and ends at the time specified by the window, and it is governed by the same resource manager plan. A window may belong to a window class. If a window class is assigned to a job, then the windows of the window class take effect for the job.

I'll explain all of these components in detail, with examples of usage, as the chapter progresses.




Oracle PL(s)SQL For DBAs
Oracle PL(s)SQL For DBAs
ISBN: N/A
EAN: N/A
Year: 2005
Pages: 122

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net