Scheduler

Rédacteur: Fenoll Vincent Oracle DBA Montreal & Oracle Doc.

Créer un programme

.CREATE_PROGRAM

C’est une fonction optionnelle. Elle permet de modifier la planification d’un travail sans avoir à recréer le bloc PL*SQL. On peut également utiliser des arguments.

Grant : CREATE [ANY] JOB

Par défaut un prog est désactivé sauf si enabled => TRUE.

L’action associée peut être : une procédure, un exécutable, un bloc PL*SQL

Créer une planification

.CREATE_SCHEDULE

Planifier des exécutions répétées : repeat_interval => « expression de planification »

e.g ‘FREQ=HOURLY ; INTERVAL=4’

Une « expression de planification » comporte 3 parties :

–         Fréquence (obligatoire)

–         Intervalle (facultatif)

–         Spécificateurs

e.g FREQ=MONTHLY ; BYDAY=MON, TU3E, TUE ; BYSETPOS=-1

Doc: 11.2 pour plus d’exemples

Créer un travail

.CREATE_JOB

(job_name, job_type, job_action)

Les paramètres de planif peuvent également être définis lors de la création d’un travail (start_date, repeat_interval)

Par défaut un job est créé dans le schéma actuel sauf si son nom utilise un préfixe de schéma.

Le propriétaire est l’utilisateur (le schéma) alors que le créateur peut être différent.

Job_type => PLSQL_BLOCK  |  STORED_PROCEDURE  |  EXECUTABLE

Si aucun intervalle de répétition n’est indique, le job s’exécute une seule fois.

Privilèges

CREATE JOB : créer un travail, une planification ou un programme dans son schéma

CREATE EXTERNAL JOB : créer un travail qui exécute un programme externe

MANAGE SCHEDULER : Créer des fenêtres, des classes ou des groupes de fenêtres. Démarrer et arrêter des fenêtres prématurément.

SCHEDULER_ADMIN : il a reçu tous les privilèges systèmes, il fait partie du rôle DBA

Pour accorder à Scott le droit d’utiliser mon programme CALC_STATS dans son travail :

GRANT           EXECUTE ON CALC_STATS TO SCOTT [WITH GRANT OPTION]

EXECUTE ANY PROGRAM (Utiliser tous les programmes)

ALTER            “           “           (modifier..)

Cependant ces derniers privilèges ne permettent pas de modifier les attributs (name, type, action, arguments).

Les classes de travail, les fenêtres et les groupes de fenêtres sont créées dans le schéma SYS.

Pour affecter un travail à une classe de travail spécifique, il faut disposer du privilège EXECUTE pour la classe de travail ou du privilège système EXECUTE ANY CLASS.

Gérer les composants du planificateur

.ENABLE (HR.CALC_STATS)

Ne peut pas être utilisé pour les classes de travail ou les planifications

.DISABLE

.RUN_JOB

.STOP_JOB

.DROP_JOB

Pour une planification:

.SET_ATTRIBUTE

.SET_ATTRIBUTE_NULL (pour affecter la valeur NULL à un attribut)

Lors de la définition de l’attribut, si le composant est activé, il est désactivé avant sa modification, puis réactivé.

.DROP_SCHEDULE (‘schedule1’, ‘schedule2’)

Afficher les attributs d’un composant

*_SCHEDULER_JOBS

*_SCHEDULER_PROGRAMS

[ALL | DBA] _SCHEDULER_SCHEDULES

[ALL | DBA] _SCHEDULER_WINDOWS

Afficher les détails de l’exécution d’un travail

DBA_SCHEDULER_JOB_RUN_DETAILS

Elle comporte une ligne pour chaque instance d’un travail

Afficher les journaux des travaux

DBA_SCHEDULER_JOB_LOG

Elle comporte une ligne pour chaque opération ou modification d’un travail.

Des entrées sont créées dans cette vue si la valeur LOGGING_FULL ou LOGGINS_RUNS a été affectée au paramètre logging_level

Le créateur d’un travail peut uniquement activer une journalisation plus étendue pour un travail, mais pas moins étendue.

Gestion des fenêtres

.CREATE_WINDOW

Une seule fenêtre peut être active à un instant donné

e.g 11.59

Pour une fenêtre particulière, plusieurs classes de travail peuvent être en cours d’exécution, chacune avec sa propre priorité.

Deux niveaux d’affectation de priorité pour les travaux :

–         Le niveau CLASSE ; à l’aide de plans d’allocation de ressources (effectué sur la base de l’allocation des ressources)

–         Le niveau TRAVAIL ; avec l’attribut de priorité du travail

Les niveaux de priorité ne sont importants que lorsque 2 travaux de la même classe ont supposés démarrer en même temps. Le travail avec la priorité la plus élevée démarre en premier.

.SET_ATTRIBUTE (‘job2’, attribute =>’job_priority’, value => 2)

Pour visualiser les priorités:

Select job_name, job_priority from DBA_SCHEDULER_JOBS;

Créer une classe de travail

.CREATE_JOB_CLASS

Requiert MANAGE_SCHEDULER.

Dans DB Control, page JOBCLASS pour affecter une classe et un groupe de consommateur de ressources à un travail.

Classe de travail par défaut : DEFAULT_JOB_CLASS

Groupe de consommateur de ressources par défaut : DEFAULT_CONSUMER_GROUP

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.