Maison  >  Article  >  base de données  >  Comment configurer des tâches planifiées Oracle à exécuter régulièrement sur une certaine période de temps

Comment configurer des tâches planifiées Oracle à exécuter régulièrement sur une certaine période de temps

下次还敢
下次还敢original
2024-04-18 15:54:181004parcourir

Pour configurer des tâches à exécuter régulièrement dans une période de temps spécifiée dans Oracle, vous devez créer des déclencheurs et des tâches : 1. Utilisez des déclencheurs pour spécifier la période d'exécution (dates de début et de fin) et les tâches à exécuter ; Utilisez des tâches pour spécifier les déclencheurs. Le nom du serveur, la date de début d'exécution et la fréquence de récurrence.

Comment configurer des tâches planifiées Oracle à exécuter régulièrement sur une certaine période de temps

Comment configurer des tâches à exécuter régulièrement dans une période de temps spécifiée dans Oracle

Dans la base de données Oracle, vous pouvez utiliser le package DBMS_JOB pour créer et gérer des tâches planifiées. Pour définir une tâche à exécuter régulièrement dans une certaine période de temps, veuillez suivre les étapes ci-dessous :

1 Créer un déclencheur

Utilisez l'instruction suivante pour créer un déclencheur qui exécutera la tâche spécifiée dans la période spécifiée. du temps. Bloc PL/SQL :

<code class="sql">CREATE OR REPLACE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN
  IF (SYSDATE BETWEEN start_date AND end_date) THEN
    -- 在此执行要执行的任务
  END IF;
END;</code>

où :

  • trigger_name est le nom du déclencheur. trigger_name 是触发器的名称。
  • start_date 是任务开始执行的日期和时间。
  • end_date 是任务结束执行的日期和时间。

2. 创建作业

使用以下语句创建一个作业,该作业将调用触发器:

<code class="sql">BEGIN
  DBMS_JOB.SUBMIT(
    job => job_name,
    next_date => start_date,
    interval => 'freq=(seconds=60, minutes=0, hours=0, days=0, weeks=0, months=0, years=0)',
    what => 'BEGIN ' || trigger_name || '; END;'
  );
END;</code>

其中:

  • job_name 是作业的名称。
  • start_date 是作业开始执行的日期和时间。
  • interval 指定作业执行的频率,在本例中,每 60 秒执行一次。
  • what
  • start_date est la date et l'heure auxquelles l'exécution de la tâche commence.

end_date est la date et l'heure auxquelles la tâche termine son exécution.

2. Créez un travail

🎜🎜Créez un travail qui appellera le déclencheur en utilisant l'instruction suivante : 🎜
<code class="sql">CREATE OR REPLACE TRIGGER my_trigger
BEFORE INSERT/UPDATE/DELETE ON my_table
FOR EACH ROW
BEGIN
  IF (SYSDATE BETWEEN TO_DATE('2023-03-08 09:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('2023-03-08 17:00:00', 'YYYY-MM-DD HH24:MI:SS')) THEN
    -- 在此执行要执行的任务
  END IF;
END;

BEGIN
  DBMS_JOB.SUBMIT(
    job => my_job,
    next_date => TO_DATE('2023-03-08 09:00:00', 'YYYY-MM-DD HH24:MI:SS'),
    interval => 'freq=(seconds=0, minutes=60, hours=0, days=0, weeks=0, months=0, years=0)',
    what => 'BEGIN my_trigger; END;'
  );
END;</code>
🎜où : 🎜🎜🎜job_name est le nom du travail. 🎜🎜start_date est la date et l'heure auxquelles l'exécution du travail commence. 🎜🎜interval spécifie la fréquence à laquelle la tâche doit être exécutée, dans ce cas, toutes les 60 secondes. 🎜🎜what spécifie le bloc PL/SQL à exécuter. 🎜🎜🎜🎜Exemple🎜🎜🎜Pour créer une tâche qui s'exécute toutes les heures entre 9h et 17h tous les jours, vous pouvez utiliser le code suivant : 🎜rrreee

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