Maison >base de données >Oracle >Comment exécuter régulièrement des procédures stockées dans Oracle

Comment exécuter régulièrement des procédures stockées dans Oracle

PHPz
PHPzoriginal
2023-04-18 14:09:074215parcourir

Dans les applications de niveau entreprise, nous ne pouvons pas simplement compter sur les utilisateurs pour effectuer des opérations manuelles afin d'obtenir les fonctionnalités requises. Par conséquent, les tâches planifiées sont essentielles, particulièrement utiles pour effectuer le traitement en arrière-plan et le chargement des données. La base de données Oracle fournit des procédures stockées et des tâches planifiées pour simplifier le travail des développeurs et des administrateurs. Dans cet article, nous nous concentrerons sur la méthode d'utilisation des tâches planifiées Oracle pour exécuter régulièrement des procédures stockées.

Tâches planifiées Oracle

Les tâches planifiées dans la base de données Oracle peuvent être créées à l'aide du package DBMS_SCHEDULER. Ce package nous permet de créer des emplois avec des exigences de planification complexes. Il peut prendre en charge diverses fréquences telles que horaires, quotidiennes, hebdomadaires, mensuelles, annuelles, etc. Les tâches planifiées peuvent également être exécutées à une date et une heure spécifiques, ou même dans des fuseaux horaires différents. Les types d'objets suivants peuvent être créés à l'aide du package DBMS_SCHEDULER.

  • Job : Une unité de tâche créée lors de l'exécution de la fonction DBMS_SCHEDULER.CREATE_JOB, planifiée par le planificateur régulièrement ou sur demande.
  • Classe de travail : un groupe de tâches connexes qui partagent la même règle de limite de consommation de ressources.
  • Limite de consommation de ressources : règles de consommation de ressources utilisées pour contrôler les emplois et les catégories d'emplois.
  • Chaîne : une séquence de tâches dans laquelle l'achèvement d'une tâche déclenche l'exécution d'une autre tâche.
  • Session : Le processus associé à l'exécution d'un travail. Les sessions peuvent être enregistrées et surveillées pour comprendre l'exécution des tâches.

Dans cet article, nous nous concentrerons sur la façon d'utiliser DBMS_SCHEDULER pour créer un travail et le lier à la procédure stockée que nous souhaitons exécuter.

Créer une procédure stockée

Nous devons d'abord créer une procédure stockée pour effectuer l'opération de tâche que nous souhaitons effectuer. Vous trouverez ci-dessous un exemple simple de procédure stockée qui insérera l'heure actuelle dans une table.

CREATE OR REPLACE PROCEDURE INSERT_TIME
AS 
BEGIN
  INSERT INTO TIME_LOG (LOG_TIME) VALUES (SYSDATE);
  COMMIT;
END INSERT_TIME;

Créer un travail

Avec la procédure stockée en main, nous devons ensuite créer un travail pour planifier son exécution. Le travail que nous allons créer insérera l'heure actuelle chaque matin à 6 heures. Vous trouverez ci-dessous un exemple d'utilisation de la fonction DBMS_SCHEDULER.CREATE_JOB pour créer ce travail.

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
          job_name        => 'INSERT_TIME_JOB',
          job_type        => 'STORED_PROCEDURE',
          job_action      => 'INSERT_TIME',
          start_date      => SYSTIMESTAMP,
          repeat_interval => 'FREQ=DAILY; BYHOUR=6;',
          enabled         => TRUE,
          comments        => 'Insert current time every day at 6 AM');
END;

Lorsque nous utilisons la fonction CREATE_JOB pour créer un travail, nous devons suivre les descriptions des paramètres suivants :

  • job_name : Le nom du travail, qui doit être unique.
  • job_type : Le type de travail, généralement "STORED_PROCEDURE".
  • job_action : Le nom de la procédure stockée, du package ou du fichier exécutable à exécuter par le travail.
  • start_date : L'heure de début du travail, qui peut être une date ou un horodatage. S’il n’est pas spécifié, la valeur par défaut est l’heure actuelle.
  • repeat_interval : Spécifiez la fréquence d'exécution et l'intervalle de temps du travail. Dans cet exemple, "FREQ=DAILY; BYHOUR=6;" signifie qu'il est exécuté tous les jours à 6 heures du matin. D'autres options incluent horaire, hebdomadaire, mensuel, annuel, etc. Nous pouvons également utiliser ce paramètre pour spécifier les jours où le travail doit être exécuté, par exemple tous les lundis, mardis et jeudis.
  • enabled : indique si la tâche est activée.
  • commentaires : Une brève description de la mission.

Lier le travail à la procédure stockée

Dans l'exemple ci-dessus, nous avons créé un travail et spécifié la procédure stockée pour son exécution. Maintenant, nous devons lier ce travail à notre procédure stockée afin qu'elle exécute l'opération à l'heure spécifiée. Nous pouvons utiliser la fonction DBMS_SCHEDULER.SET_ATTRIBUTE pour accomplir cette tâche.

BEGIN
  DBMS_SCHEDULER.SET_ATTRIBUTE (
          name => 'INSERT_TIME_JOB',
          attribute => 'program_action',
          value => 'INSERT_TIME;');
END;

Dans cet exemple, nous utilisons la fonction SET_ATTRIBUTE pour définir l'attribut "program_action" du travail "INSERT_TIME_JOB" sur "INSERT_TIME". Cela indiquera à DBMS_SCHEDULER d'appeler la procédure stockée INSERT_TIME à une heure précise.

Nous avons appris à utiliser le package DBMS_SCHEDULER pour créer des tâches planifiées et lier des tâches dans des procédures stockées. Maintenant, nous pouvons attendre que la tâche planifiée s'exécute et afficher les enregistrements dans la table TIME_LOG.

Conclusion

L'utilisation de la fonction de tâche planifiée de la base de données Oracle peut nous aider à effectuer facilement des tâches de traitement en arrière-plan. Le package DBMS_SCHEDULER offre de nombreuses options pour répondre aux besoins spécifiques de nos applications, telles que l'exécution répétée, l'exécution parallèle, la reprise après échec, etc. De plus, il a la capacité d'exécuter des tâches sur différents fuseaux horaires, dates, semaines, mois, etc., ce qui rend les tâches planifiées très flexibles. Dans cet article, nous nous concentrons sur la façon d'utiliser les tâches planifiées d'Oracle pour exécuter régulièrement des procédures stockées. Nous espérons que cet article pourra vous fournir des conseils utiles et vous aider à mieux comprendre les principes d'utilisation et de fonctionnement des tâches planifiées basées sur la base de données Oracle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn