Comment créer une tâche du planificateur dans Oracle 12c

L'exemple Oracle 12c Scheduler crée ici un travail simple qui exécute une procédure stockée langage de programmation / Structured Query Language (PL / SQL). La procédure sélectionne un comptage du nombre d'utilisateurs sur le système et insère ce nombre dans une table avec un horodatage. Il exécute toutes les cinq minutes.

Suivez ces étapes pour planifier un travail pour la première fois:

  1. Connectez-vous à SQL * Plus en tant qu'utilisateur SYS.

  2. Donnez le créateur d'emploi destinée la capacité de créer des emplois:

    Vous devriez voir ceci:

    Grant a réussi.

    Cet exemple tâche est créée et gérée par RH.

  3. Laissez HR voir le tableau V $ SESSION:

    Vous devriez voir ceci:

    Grant a réussi.

    Le _ dans V_ $ SESSION est pas une faute de frappe! V $ SESSION est un synonyme de V_ $ SESSION. Pour l'octroi de travailler, vous devez donner le nom de la vue.

  4. Connectez-vous à SQL * Plus en tant que créateur d'emplois et de faire un tableau pour contenir les données:

    lt; create table USER_COUNT (number_of_users NOMBRE (4), TIME_OF_DAY timestamp) TABLESPACE utilisateurs->

    Vous voyez ceci:

    Tableau créé.



  5. Créer une procédure stockée:

    lt; CREATE OR REPLACE PROCEDURE insert_user_count ASv_user_count NOMBRE (4) de comptage -BEGINSELECT (*) EN v_user_countFROM v $ sessionWHERE nom d'utilisateur IS NOT NULL-INSERT INTO (user_countVALUES de v_user_count, SYSTIMESTAMP) -commit-END insert_user_count- />

    La procédure stockée rassemble le nombre d'utilisateurs et les insère dans la table avec un horodatage. Vous devriez voir ceci:

    Procédure créé.
  6. Créer un programme pour l'emploi:

    lt; BEGINDBMS_SCHEDULER.CREATE_PROGRAM (program_name => 'PROG_INSERT_USER_COUNT', program_action => 'INSERT_USER_COUNT', program_type => 'STORED_PROCEDURE') - FIN - />

    Vous voyez ceci:

    Procédure PL / SQL terminée avec succès.
  7. Activer le programme:

    Vous voyez ceci:

    Procédure PL / SQL terminée avec succès.
  8. Créer un calendrier pour la tâche à exécuter:

    lt; BEGINDBMS_SCHEDULER.CREATE_SCHEDULE (schedule_name => 'my_weekend_5min_schedule', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ = MINUTELY- INTERVALLE = 5- BYDAY = SAT, SUN', end_date => '30' jour SYSTIMESTAMP + INTERVALLE, commentaires => ' Toutes les 5 minutes de) - FIN - />

    Cet exemple travail est exécuté toutes les cinq minutes. Vous voyez ceci:

    Procédure PL / SQL terminée avec succès.
  9. Créer votre travail avec le programme et le calendrier que vous avez défini:

    lt; BEGINDBMS_SCHEDULER.CREATE_JOB (job_name => 'my_user_count_job', program_name => 'prog_insert_user_count', schedule_name => 'my_weekend_5min_schedule') - FIN - />

    Vous voyez ceci:

    Procédure PL / SQL terminée avec succès.
  10. Activer votre travail pour qu'il fonctionne dans le calendrier défini:

    lt; dbms_scheduler.enable exec ('my_user_count_job')>

    Vous voyez ceci:

    Procédure PL / SQL terminée avec succès.

    Le travail est exécuté à l'heure de début spécifiée (au SYSTIMESTAMP). Si vous choisissez une date du calendrier à l'avenir, il ne démarre pas jusque-là.

  11. Après le travail a été exécuté pendant 17 minutes, tapez la commande suivante pour voir votre table de USER_COUNT:

    lt; select * from user_count->

    Vous voyez ceci:

    NUMBER_OF_USERS TIME_OF_DAY --------------- --------------------------------- 14 09-Août-13 02.15.14.118495 PM14 09-Aug-13 02.00.14.137300 PM13 09-Aug-13 02.05.14.120116 PM13 09-Aug-13 02.10.14.120680 PM

Lorsque vous avez la tâche en cours d'exécution, vous pouvez obtenir des détails sur le succès ou l'échec en interrogeant les vues suivantes:

USER_SCHEDULER_JOB_RUN_DETAILSUSER_SCHEDULER_JOB_LOG

Ces vues montrent uniquement des informations sur vos emplois. Pour obtenir des informations sur les dernières courses de notre travail, connectez-vous comme créateur d'emplois et le type

lt; job_name sélectionnez, le statut, run_duration, cpu_usedfrom USER_SCHEDULER_JOB_RUN_DETAILSwhere job_name = 'MY_USER_COUNT_JOB' ->

Vous voyez ceci:

JOB_NAME STATUT RUN_DURATION CPU_USED -------------------- ---------- --------------- - ----------------- MY_USER_COUNT_JOB RÉUSSI 000 00:00:00 +000 00: 00: 00.01MY_USER_COUNT_JOB RÉUSSI 000 00:00:00 +000 00: 00: 00.01MY_USER_COUNT_JOB 00:00:00 RÉUSSI 000 000 00: 00: 00.00MY_USER_COUNT_JOB RÉUSSI 000 00:00:00 +000 00: 00: 00.01

» » » Comment créer une tâche du planificateur dans Oracle 12c