14 copyright © 2006, oracle. all rights reserved. automating tasks with the scheduler

29
14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

Upload: poppy-crawford

Post on 05-Jan-2016

221 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14Copyright © 2006, Oracle. All rights reserved.

Automating Tasks with the Scheduler

Page 2: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-2 Copyright © 2006, Oracle. All rights reserved.

Objectives

After completing this lesson, you should be able to:

• Simplify management tasks by using the Scheduler

• Create a job, program, and schedule

• Monitor job execution

• Use a time-based or event-based schedule for executing Scheduler jobs

• Use job chains to perform a series of related tasks

• Use advanced Scheduler concepts to prioritize jobs

Key Comp. & StepsSchedulesJob ChainsAdv.Concepts

Page 3: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-3 Copyright © 2006, Oracle. All rights reserved.

Simplifying Management Tasks

Performing a seriesof month-end

tasks on the last day of each month

Replicating table datavia materializedview refreshes

Computing table and index statistics

twice a day

Generating an hourly report on

invalid server access attempts

Running a daily job to back up

database

Starting the batch load as soon as the file

arrives on the file system

Running a dequeueprocedure as soon

as a message isenqueued

Rebuilding an index when

finished rebuilding the current index

Page 4: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-4 Copyright © 2006, Oracle. All rights reserved.

A Simple Job

WHAT

WHEN

Page 5: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-5 Copyright © 2006, Oracle. All rights reserved.

Key Components and Steps

To simplify management tasks with the Scheduler, perform the following steps:

1. Create a program.

2. Create and use a schedule.

3. Create and submit a job.

4. Monitor a job.

Arguments

Job

Program Job attributes

Schedule

Page 6: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-6 Copyright © 2006, Oracle. All rights reserved.

1. Creating a Program

BEGINDBMS_SCHEDULER.CREATE_PROGRAM( program_name => 'CALC_STATS2', program_action => 'HR.UPDATE_HR_SCHEMA_STATS', program_type => 'STORED_PROCEDURE', enabled => TRUE);END;/

Page 7: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-7 Copyright © 2006, Oracle. All rights reserved.

2. Creating and Using Schedules

BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE( schedule_name => 'stats_schedule', start_date => SYSTIMESTAMP, end_date => SYSTIMESTAMP + 30, repeat_interval => 'FREQ=HOURLY;INTERVAL=1', comments => 'Every hour');END;/

Page 8: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-8 Copyright © 2006, Oracle. All rights reserved.

3. Creating and Running a Job

Page 9: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-9 Copyright © 2006, Oracle. All rights reserved.

4. Monitoring a Job

SELECT job_name, status, error#, run_durationFROM USER_SCHEDULER_JOB_RUN_DETAILS;

JOB_NAME STATUS ERROR# RUN_DURATION ---------------- ------ ------ ------------GATHER_STATS_JOB SUCCESS 0 +000 00:08:20 PART_EXCHANGE_JOB FAILURE 6576 +000 00:00:00

Page 10: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-10 Copyright © 2006, Oracle. All rights reserved.

Using a Time-Based or Event-Based Schedule

Schedule

EventTime

Key Comp. & Steps

> SchedulesJob ChainsAdv.Concepts

Page 11: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-11 Copyright © 2006, Oracle. All rights reserved.

Creating a Time-Based Job

Example:

Create a job that calls a backup script every night at 11:00, starting tonight.

BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name=>'HR.DO_BACKUP', job_type => 'EXECUTABLE', job_action => '/home/usr/dba/rman/nightly_incr.sh', start_date=> SYSDATE, repeat_interval=>'FREQ=DAILY;BYHOUR=23', /* next night at 11:00 PM */ comments => 'Nightly incremental backups');END;/

Page 12: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-13 Copyright © 2006, Oracle. All rights reserved.

Creating an Event-Based Schedule

To create an event-based job, you must set:

• A queue specification (where your application enqueues messages to start a job)

• An event condition (same syntax as an Oracle Streams AQ rule condition) that if TRUE starts the job

Oracle Database 10g

Scheduler

Event ADT (Abstract

Data Type) QueueApplication

Page 13: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-14 Copyright © 2006, Oracle. All rights reserved.

Creating Event-Based Scheduleswith Enterprise Manager

Page 14: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-15 Copyright © 2006, Oracle. All rights reserved.

Creating an Event-Based Job

Example: Create a job that runs if a batch load data file arrives on the file system before 9:00 a.m.

BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name=>'ADMIN.PERFORM_DATA_LOAD', job_type => 'EXECUTABLE', job_action => '/home/usr/dba/rman/report_failure.sh', start_date => SYSTIMESTAMP, event_condition => 'tab.user_data.object_owner = ''HR'' and tab.user_data.object_name = ''DATA.TXT'' and tab.user_data.event_type = ''FILE_ARRIVAL'' and tab.user_data.event_timestamp < 9 ', queue_spec => 'HR.LOAD_JOB_EVENT_Q');END;

event_condition => 'tab.user_data.object_owner = ''HR'' and tab.user_data.object_name = ''DATA.TXT'' and tab.user_data.event_type = ''FILE_ARRIVAL'' and tab.user_data.event_timestamp < 9 ', queue_spec => 'HR.LOAD_JOB_EVENT_Q');

Page 15: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-16 Copyright © 2006, Oracle. All rights reserved.

Event-Based Scheduling

Event types:

• User- or application-generated events

• Scheduler-generated events

Events raised by Scheduler jobs: • JOB_START • JOB_SCH_LIM_REACHED• JOB_SUCCEEDED • JOB_DISABLED • JOB_FAILED • JOB_CHAIN_STALLED • JOB_BROKEN • JOB_ALL_EVENTS • JOB_COMPLETED • JOB_RUN_COMPLETED • JOB_STOPPED

Example of raising an event:

DBMS_SCHEDULER.SET_ATTRIBUTE('hr.do_backup', 'raise_events', DBMS_SCHEDULER.JOB_FAILED);

Page 16: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-18 Copyright © 2006, Oracle. All rights reserved.

Creating Complex Schedules

INCLUDE EXCLUDE INTERSECT

Page 17: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-19 Copyright © 2006, Oracle. All rights reserved.

Creating Job Chains

1. Create a chain object.

2. Define chain steps.

3. Define chain rules.

4. Starting the chain:– Enable the chain.– Create a job that points to the chain.

Job

Job chain

Key Comp. & StepsSchedules

> Job ChainsAdv.Concepts

Page 18: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-21 Copyright © 2006, Oracle. All rights reserved.

Example of a Chain

BULK_LOAD_CHAIN

Do_bulk_loadJob Load_data_evt

END

Rebuild_indxScheduleStop_when_

disk_full_evt

Run_reports (HR.GEN_REPORTS)

START1 2

5 3

4

Dependency Scheduling

Page 19: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-22 Copyright © 2006, Oracle. All rights reserved.

1. Creating a Chain Object

Create_job_chain_1.jpg

12345

Page 20: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-23 Copyright © 2006, Oracle. All rights reserved.

2. Defining Chain Steps

DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP ( chain_name => 'bulk_load_chain', step_name => 'load_data_evt', event_condition => 'tab.user_data.object_owner = ''HR'' and tab.user_data.object_name = ''DATA.TXT'' and tab.user_data.event_type = ''FILE_ARRIVAL'' ', queue_spec => 'HR.LOAD_JOB_EVENT_Q');DBMS_SCHEDULER.DEFINE_CHAIN_STEP ( chain_name => 'bulk_load_chain', step_name => 'do_bulk_load', program_name => 'hr.load_data_prog); DBMS_SCHEDULER.DEFINE_CHAIN_STEP ( chain_name => 'bulk_load_chain', step_name => 'rebuild_indx', program_name => 'hr.rebuild_indexes');

1

2

3

Page 21: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-24 Copyright © 2006, Oracle. All rights reserved.

3. Defining Chain Rules

Create_job_chain_2.jpg

Page 22: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-25 Copyright © 2006, Oracle. All rights reserved.

4. Starting the Chain

BEGIN DBMS_SCHEDULER.ENABLE ('bulk_load_chain');END;/

BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'bulk_load_chain_job', job_type => 'CHAIN', job_action => 'bulk_load_chain', repeat_interval => 'freq=daily;byhour=7; byminute=5;bysecond=0', enabled => TRUE);END;/

Page 23: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-26 Copyright © 2006, Oracle. All rights reserved.

Monitoring Job Chains

[DBA | ALL | USER]_SCHEDULER_CHAINS

[DBA | ALL | USER]_SCHEDULER_CHAIN_RULES

[DBA | ALL | USER]_SCHEDULER_CHAIN_STEPS

[DBA | ALL | USER]_SCHEDULER_RUNNING_CHAINS

Page 24: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-27 Copyright © 2006, Oracle. All rights reserved.

Advanced Scheduler Concepts

JobProgram

Arguments Arguments

Schedule

EventTime

Job class WindowJob chain

Key Comp. & StepsSchedulesJob Chains

> Adv.Concepts

Resourceconsumer group

Windowgroup

Resourceplan

Page 25: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-28 Copyright © 2006, Oracle. All rights reserved.

Creating a Job Class

EXECUTE DBMS_SCHEDULER.CREATE_JOB_CLASS( - job_class_name => 'ADMIN_JOBS', - resource_consumer_group => 'DAYTIME_JOBS', - logging_level => DBMS_SCHEDULER.LOGGING_OFF);

Page 26: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-29 Copyright © 2006, Oracle. All rights reserved.

Creating a Window

Create a window for the month of December that uses the END_OF_YEAR resource plan and is active every night from 6:00 p.m. to 6:00 a.m. Eastern Standard Time (EST).BEGIN DBMS_SCHEDULER.CREATE_WINDOW( window_name => 'DEC_NIGHTS', resource_plan => 'END_OF_YEAR', start_date => '01-DEC-03 06.00.00 PM EST', repeat_interval => 'FREQ=DAILY; BYHOUR=18', duration => '0 12:00:00', end_date => '31-DEC-03 06.00.00 AM EST', comments => 'Every day at 6:00 PM');END;/

Page 27: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-30 Copyright © 2006, Oracle. All rights reserved.

Prioritizing Jobs Within a Window

Daytime window

APPL_JOBS

Job1 Job2

ADMIN_JOBS

Job4 Job5

OTHER

Job3

2Job5

5Job4

3Job3

2Job2

1Job1

PriorityJob

Page 28: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-31 Copyright © 2006, Oracle. All rights reserved.

Summary

In this lesson, you should have learned how to:

• Simplify management tasks by using the Scheduler

• Create a job, program, and schedule

• Monitor job execution

• Use a time-based or event-based schedule for executing Scheduler jobs

• Use job chains to perform a series of related tasks

• Use advanced Scheduler concepts to prioritize jobs

Page 29: 14 Copyright © 2006, Oracle. All rights reserved. Automating Tasks with the Scheduler

14-32 Copyright © 2006, Oracle. All rights reserved.

Practice Overview:Automating Tasks with the Scheduler

This practice covers the following topics:

• Creating a job that runs a program outside the database

• Creating a program and a schedule

• Creating a job that uses a program and a schedule

• Altering the program and schedule for the job and observing the behavior change of the job

• Monitoring job runs