Book Image

Mastering Oracle Scheduler in Oracle 11g Databases

By : Ronald Rood
Book Image

Mastering Oracle Scheduler in Oracle 11g Databases

By: Ronald Rood

Overview of this book

Scheduler (DBMS_SCHEDULER) is included in Oracle Database and is a tool for the automation, management, and control of jobs. It enables users to schedule jobs running inside the database such as PL/SQL procedures or PL/SQL blocks, as well as jobs running outside the database like shell scripts. Scheduler ensures that jobs are run on time, automates business processes, and optimizes the use of available resources. You just need to specify a fixed date and time and Scheduler will do the rest. What if you don't know the precise time to execute your job? Nothing to worry about, you can specify an event upon which you want your job to be done and Scheduler will execute your job at the appropriate time. Although scheduling sounds quite easy, it requires programming skills and knowledge to set up such a powerful, intelligent scheduler for your project. This book is your practical guide to DBMS_SCHEDULER for setting up platform-independent schedules that automate the execution of time-based or event-based job processes. It will show you how to automate business processes, and help you manage and monitor those jobs efficiently and effectively. It explains how Scheduler can be used to achieve the tasks you need to make happen in the real world. With a little understanding of how the Scheduler can be used and what kind of control it gives, you will be able to recognize the real power that many known enterprise-class schedulers ñ with serious price tags ñ cannot compete with. You will see how running a specific program can be made dependent on the successful running of certain other programs, and how to separate various tasks using the built-in security mechanisms. You will learn to manage resources to balance the load on your system, and gain increased database performance.
Table of Contents (15 chapters)
Mastering Oracle Scheduler in Oracle 11g Databases
About the Author
About the Reviewers

Chapter 1. Simple Jobs

For this book, I carried out an out of the box installation on Enterprise Linux with the Oracle-validated package applied to it. I made a simple database using DBCA, complete with sample schemas and DB Console. For storage, I made use of an NAS and openfiler on a separate installation presented as iSCSI targets.

Let's get started with simple jobs.

Simple jobs are the jobs that can easily be created using DB Console with little or no extra object creations required. The quickest way to get you started is by making the database perform actions for you. A simple job is not the same as a useless job. Far from that, many tasks can be performed using simple jobs. Sometimes we can go back and use easy, single-step jobs rather than using advanced jobs based on complicated rules.

The DB Console does provide some support for the Scheduler, which can be used for simple tasks. However, for more elaborate things we need to use a PL/SQL editor. Any PL/SQL-capable tool will do. If you like, use SQL*Plus, SQL Developer, DbVisualizer, or TOAD for a Windows-centric client. Let's start using DB Console and see what this gives us.

This chapter covers:

  • Creation of a user who can handle the tasks

  • A job that runs PL/SQL code

  • A job that can start a stored procedure

  • A job that runs an executable

Creating a user

When working with simple jobs, our basic need is to create a user. In DB Console, there is a default user sysman. We can use this or the user system. However, it is better to create a dedicated user for different tasks. This prevents us from giving too many privileges to jobs and maintains auditability. So, let's first create a normal user who does the work for us:

create user marvin identified by panic;
grant create session, create job to marvin;
grant select any dictionary to marvin;
create user stats identified by nopanic;
alter user stats quota unlimited on users;
create table stats.session_log as select * from v$session where 1 = 2;
create table stats.session_stat_log as select * from v$mystat where 1 = 2;
grant select,insert,update,delete on stats.session_log to marvin;
grant select,insert,update,delete on stats.session_stat_log to marvin;
create public synonym session_log for stats.session_log;
create public synonym session_stat_log for stats.session_stat_log;

The select any dictionary privilege is mainly because we want to use DB Console. For this, it must view a lot from the dictionary. Now start a web browser and connect to the freshly created user marvin. The Oracle Scheduler support is provided in the Server tab of the DB Console.