Heim  >  Artikel  >  Datenbank  >  So führen Sie gespeicherte Prozeduren in Oracle regelmäßig aus

So führen Sie gespeicherte Prozeduren in Oracle regelmäßig aus

PHPz
PHPzOriginal
2023-04-18 14:09:074195Durchsuche

Bei Anwendungen auf Unternehmensebene können wir uns nicht einfach darauf verlassen, dass Benutzer manuelle Vorgänge ausführen, um die erforderliche Funktionalität zu erreichen. Daher sind geplante Aufgaben unerlässlich, die besonders für die Hintergrundverarbeitung und das Laden von Daten nützlich sind. Die Oracle-Datenbank bietet gespeicherte Prozeduren und geplante Aufgaben, um die Arbeit von Entwicklern und Administratoren zu vereinfachen. In diesem Artikel konzentrieren wir uns auf die Methode, mit der von Oracle geplanten Aufgaben regelmäßig gespeicherte Prozeduren auszuführen.

Geplante Oracle-Aufgaben

Geplante Aufgaben in der Oracle-Datenbank können mit dem DBMS_SCHEDULER-Paket erstellt werden. Mit diesem Paket können wir Jobs mit komplexen Planungsanforderungen erstellen. Es kann verschiedene Frequenzen unterstützen, z. B. stündlich, täglich, wöchentlich, monatlich, jährlich usw. Geplante Aufgaben können auch an einem bestimmten Datum und einer bestimmten Uhrzeit oder sogar in verschiedenen Zeitzonen ausgeführt werden. Die folgenden Objekttypen können mit dem DBMS_SCHEDULER-Paket erstellt werden.

  • Job: Eine Aufgabeneinheit, die beim Ausführen der Funktion DBMS_SCHEDULER.CREATE_JOB erstellt und vom Scheduler regelmäßig oder auf Anfrage geplant wird.
  • Job-Klasse: Eine Gruppe verwandter Aufgaben, für die dieselbe Regel zur Begrenzung des Ressourcenverbrauchs gilt.
  • Ressourcenverbrauchsgrenze (Ressourcenverbrauch): Wird zur Steuerung der Ressourcenverbrauchsregeln von Jobs und Jobklassen verwendet.
  • Kette: Eine Folge von Jobs, bei der der Abschluss eines Jobs die Ausführung eines anderen Jobs auslöst.
  • Sitzung: Der mit einer Jobausführung verbundene Prozess. Sitzungen können protokolliert und überwacht werden, um die Auftragsausführung zu verstehen.

In diesem Artikel konzentrieren wir uns darauf, wie Sie mit DBMS_SCHEDULER einen Job erstellen und ihn an die gespeicherte Prozedur binden, die wir ausführen möchten.

Erstellen Sie eine gespeicherte Prozedur

Wir müssen zunächst eine gespeicherte Prozedur erstellen, um den Aufgabenvorgang auszuführen, den wir abschließen möchten. Unten sehen Sie ein einfaches Beispiel einer gespeicherten Prozedur, die die aktuelle Uhrzeit in eine Tabelle einfügt.

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

Job erstellen

Mit der gespeicherten Prozedur müssen wir als Nächstes einen Job erstellen, um dessen Ausführung zu planen. Der Job, den wir erstellen werden, fügt jeden Morgen um 6 Uhr die aktuelle Uhrzeit ein. Nachfolgend finden Sie ein Beispiel für die Verwendung der Funktion DBMS_SCHEDULER.CREATE_JOB zum Erstellen dieses Jobs.

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;

Wenn wir die Funktion CREATE_JOB zum Erstellen eines Jobs verwenden, müssen wir die folgenden Parameterbeschreibungen befolgen:

  • job_name: Der Name des Jobs, der eindeutig sein muss.
  • job_type: Die Art des Jobs, normalerweise „STORED_PROCEDURE“.
  • job_action: Der Name der gespeicherten Prozedur, des Pakets oder der ausführbaren Datei, die vom Job ausgeführt werden soll.
  • start_date: Die Startzeit des Jobs, die ein Datum oder ein Zeitstempel sein kann. Wenn nicht angegeben, wird standardmäßig die aktuelle Zeit verwendet.
  • repeat_interval: Geben Sie die Ausführungshäufigkeit und das Zeitintervall des Jobs an. In diesem Beispiel bedeutet „FREQ=DAILY; BYHOUR=6;“, dass es jeden Tag um 6 Uhr morgens ausgeführt wird. Weitere Optionen sind stündlich, wöchentlich, monatlich, jährlich usw. Wir können diesen Parameter auch verwenden, um die Tage anzugeben, an denen der Job ausgeführt werden soll, beispielsweise jeden Montag, Dienstag und Donnerstag.
  • enabled: Gibt an, ob der Job aktiviert ist.
  • Kommentare: Eine kurze Beschreibung der Aufgabe.

Job an gespeicherte Prozedur binden

Im obigen Beispiel haben wir einen Job erstellt und die gespeicherte Prozedur für seine Ausführung angegeben. Jetzt müssen wir diesen Job an unsere gespeicherte Prozedur binden, damit er den Vorgang zu einem bestimmten Zeitpunkt ausführt. Wir können die Funktion DBMS_SCHEDULER.SET_ATTRIBUTE verwenden, um diese Aufgabe zu erfüllen.

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

In diesem Beispiel verwenden wir die Funktion SET_ATTRIBUTE, um das Attribut „program_action“ des Jobs „INSERT_TIME_JOB“ auf „INSERT_TIME“ zu setzen. Dadurch wird DBMS_SCHEDULER angewiesen, die gespeicherte Prozedur INSERT_TIME zu einem bestimmten Zeitpunkt aufzurufen.

Wir haben gelernt, wie man das DBMS_SCHEDULER-Paket verwendet, um geplante Jobs zu erstellen und Aufgaben in gespeicherten Prozeduren zu binden. Jetzt können wir auf die Ausführung der geplanten Aufgabe warten und die Datensätze in der Tabelle TIME_LOG anzeigen.

Fazit

Die Verwendung der Funktion für geplante Aufgaben der Oracle-Datenbank kann uns dabei helfen, Hintergrundverarbeitungsaufgaben einfach auszuführen. Das DBMS_SCHEDULER-Paket bietet viele Optionen, um unsere spezifischen Anwendungsanforderungen zu erfüllen, wie z. B. wiederholte Ausführung, parallele Ausführung, Wiederherstellung nach Fehlern usw. Darüber hinaus besteht die Möglichkeit, Aufträge über verschiedene Zeitzonen, Daten, Wochen, Monate usw. hinweg auszuführen, was geplante Aufgaben sehr flexibel macht. In diesem Artikel konzentrieren wir uns darauf, wie Sie die geplanten Aufgaben von Oracle nutzen können, um gespeicherte Prozeduren regelmäßig auszuführen. Wir hoffen, dass dieser Artikel Ihnen nützliche Hinweise geben und Ihnen helfen kann, die Verwendungs- und Betriebsprinzipien geplanter Aufgaben auf Basis der Oracle-Datenbank besser zu verstehen.

Das obige ist der detaillierte Inhalt vonSo führen Sie gespeicherte Prozeduren in Oracle regelmäßig aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn