Maison  >  Article  >  base de données  >  procédure stockée planifiée par Oracle

procédure stockée planifiée par Oracle

WBOY
WBOYoriginal
2023-05-07 22:33:382953parcourir

Oracle est une base de données relationnelle très populaire. En entreprise, nous devons souvent exécuter régulièrement certaines procédures stockées pour effectuer certaines opérations automatisées et réduire les coûts d'exploitation. Cet article explique comment utiliser Oracle pour exécuter régulièrement des procédures stockées.

1. Le concept de base de l'exécution planifiée des procédures stockées dans Oracle
L'exécution planifiée des procédures stockées dans Oracle signifie que le système exécute automatiquement certaines procédures stockées pré-écrites dans un certain intervalle de temps . Cette méthode est souvent utilisée pour l’archivage, la sauvegarde, le nettoyage et d’autres tâches régulières de données.

2. Comment implémenter l'exécution planifiée des procédures stockées par Oracle
L'exécution planifiée des procédures stockées par Oracle peut être réalisée via le planificateur d'Oracle. Le planificateur permet de démarrer facilement une tâche à un moment ou à un intervalle spécifié et de la terminer lorsque le temps est écoulé.

  1. Créer un emploi
    Dans Oracle, vous pouvez créer un emploi via PL/SQL, PL/SQL Developer, Toad et d'autres outils.
    Par exemple, créez un travail appelé "myjob", notamment en exécutant la procédure stockée "mystoredprocedure":

begin
dbms_scheduler.create_job
(job_name => ;'mon travail',
job_type=>'STORED_PROCEDURE',
job_action=>'mystoredprocedure'); Exécution planifiée
Après la création d'un job, quand doit-il être exécuté ? Le planificateur Oracle peut contrôler le temps d'exécution des tâches des deux manières suivantes :

  1. (1) Exécution basée sur le temps
    Dans Oracle, vous pouvez utiliser le package dbms_scheduler pour créer un calendrier:
BEGIN

DBMS_SCHEDULER.CREATE_SCHEDULE (

      schedule_name          => 'weekends',  
      start_date             => SYSTIMESTAMP,  
      repeat_interval        => 'FREQ=WEEKLY;BYDAY=SAT,SUN;BYHOUR=0;BYMINUTE=0',  
      end_date               => NULL,  
      comments               => 'Weekend schedule - Saturday and Sunday every week at midnight.'  
);

END;

Cet extrait de code peut créer un Programme exécuté à minuit tous les jours le week-end. Bien entendu, différents plannings peuvent être créés en fonction des besoins spécifiques de l’entreprise.


Pour que mon travail soit exécuté à l'heure suivante, la logique de planification des week-ends doit être appliquée à mon travail :

BEGIN

DBMS_SCHEDULER.SET_ATTRIBUTE#🎜🎜 #
(  
  name                      => 'myjob',  
  attribute                 => 'repeat_interval',  
  value                     => 'weekends'  
);  

END;

Grâce à cette méthode de planification basée sur le temps, le cycle d'exécution du travail sera très fixe et défini par le développeur en fonction des besoins de l'entreprise.

(2) Exécution basée sur les événements

Une autre façon d'implémenter l'exécution planifiée de procédures stockées est pilotée par les événements. Par exemple, un champ dans une table de données a été transformé à ce moment-là. il est nécessaire de piloter l'exécution des procédures stockées. Dans Oracle, vous pouvez créer une planification planifiée basée sur des événements via le code suivant :

BEGIN

DBMS_SCHEDULER.CREATE_JOB

(  
  job_name             => 'job_name',  
  job_type             => 'PLSQL_BLOCK',  
  job_action           => 'BEGIN my_procedure(:my_param); END;',  
  start_date           => SYSTIMESTAMP,  
  event_condition      => 'tab.col3 = ''Y''',  --这里可以选择需要监控的事件类型和字段  
  queue_spec           => 'queue_specification',  
  auto_drop            => FALSE,  
  enabled              => TRUE  
);  

END;#🎜 🎜#

Exécuter la procédure stockée
Dans l'exemple ci-dessus, la fonction du travail "myjob" est d'exécuter la procédure stockée "mystoredprocedure". Ici, nous pouvons voir que le planificateur lui-même n'exécute pas la procédure stockée, il est uniquement responsable de la gestion de l'exécution du travail.

Pour réussir à planifier une procédure stockée, vous devez créer une procédure stockée et l'associer à une tâche. Ici, je crée une procédure stockée nommée "mystoredprocedure" à titre d'exemple :
  1. CREATE OR REPLACE PROCEDURE "mystoredprocedure"
    IS
  2. BEGIN
INSERT INTO employees_audit  
  (employee_id,  
   salary,  
   entry_date)  
SELECT employee_id,  
       salary,  
       SYSDATE  
  FROM employees
  WHERE hire_date > SYSDATE - 1;  
       

END mystoredprocedure ;

Cet exemple stocke simplement les nouvelles informations sur les données dans la table employés_audit de la base de données. Les développeurs peuvent écrire leurs propres procédures stockées en fonction de besoins spécifiques.

Les programmes qui exécutent régulièrement des procédures stockées s'exécutent en arrière-plan. Selon la politique de planification temporelle définie par le développeur, le travail sera démarré à l'heure spécifiée, puis la procédure stockée mystoredprocedure sera exécutée.

3. Résumé

L'exécution planifiée par Oracle des procédures stockées est une solution efficace pour traiter les tâches périodiques. Ce processus peut être très facilement implémenté à l'aide du planificateur d'Oracle. Grâce à la méthode d'implémentation présentée dans cet article, les développeurs peuvent configurer de manière flexible la durée d'exécution, la fréquence et les procédures stockées qui doivent être exécutées. Cela peut réduire considérablement le temps de traitement des affaires et améliorer l’efficacité du traitement.

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