Oracle Database · · 3 Min.

Batch-Abläufe mit Oracle Scheduler Job Chains steuern

Wenn ein Schritt erst nach dem vorherigen starten darf, bilden Job Chains Abhängigkeiten und Fehlerpfade direkt im Oracle Scheduler ab.

Ein nächtlicher Datenlauf besteht oft aus mehreren voneinander abhängigen Aufgaben: Quelldaten übernehmen, transformieren, laden und anschließend einen Bericht versenden. Werden diese Schritte als unabhängige Scheduler-Jobs angelegt, muss die Anwendung Reihenfolge, Fehler und Wiederanlauf selbst koordinieren. Mit DBMS_SCHEDULER Job Chains lassen sich Schritte und Übergangsregeln als Datenbank-Workflow modellieren.

Schritte über Regeln verbinden

Die Schritte verweisen auf Scheduler-Programme. Regeln starten die Kette, leiten bei Erfolg weiter und bestimmen einen Fehlerpfad. Der folgende Ausschnitt zeigt die Übergänge einer bereits angelegten Kette mit den Schritten extract_step, transform_step und alert_step:

BEGIN
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE(
    'NIGHTLY_LOAD', 'TRUE', 'START extract_step');
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE(
    'NIGHTLY_LOAD', 'extract_step SUCCEEDED',
    'START transform_step');
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE(
    'NIGHTLY_LOAD', 'extract_step FAILED',
    'START alert_step');
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE(
    'NIGHTLY_LOAD', 'transform_step SUCCEEDED', 'END');
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE(
    'NIGHTLY_LOAD', 'transform_step FAILED',
    'START alert_step');
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE(
    'NIGHTLY_LOAD', 'alert_step COMPLETED', 'END 1');
END;
/

Jede Chain braucht mindestens eine Startregel und eine Regel mit END. Eine Kette, deren Regeln keinen nächsten Schritt starten und sie auch nicht beenden, kann im Status CHAIN_STALLED hängen bleiben. Deshalb müssen auch Fehler- und Abbruchfälle bewusst modelliert werden, statt nur den Happy Path zu definieren.

Aktivieren und zeitlich starten

Nach dem Anlegen der Regeln wird die Chain selbst mit DBMS_SCHEDULER.ENABLE aktiviert. Erst anschließend wird ein Job vom Typ CHAIN erstellt, der auf den Chain-Namen verweist und einen Zeitplan erhält. Chain und Job sind getrennte Scheduler-Objekte; eine aktivierte Job-Definition ersetzt nicht die Aktivierung der referenzierten Chain. Programme für die Schritte müssen ebenfalls zum Laufzeitpunkt vorhanden und aktiviert sein.

Fehler untersuchen und Wiederanlauf planen

Die Views USER_SCHEDULER_JOB_RUN_DETAILS und USER_SCHEDULER_RUNNING_CHAINS helfen, Laufstatus und einzelne Schritte zu untersuchen. Prüfen Sie zusätzlich USER_SCHEDULER_CHAIN_RULES, wenn eine Kette nicht wie erwartet fortschreitet. Für einen sicheren Wiederanlauf sollten Schritte idempotent sein: Ein erneut gestarteter Ladevorgang darf keine doppelten Zeilen oder Benachrichtigungen erzeugen. Speichern Sie fachliche Lauf-IDs und verarbeitete Quellstände, statt nur auf den Scheduler-Status zu vertrauen.

Planen Sie außerdem Zuständigkeiten und Berechtigungen vorab. Chain-Erstellung benötigt Scheduler- und Rule-Privilegien; geben Sie diese nicht pauschal an Laufzeitkonten. Testen Sie Erfolgs-, Fehler- und Stalled-Szenarien in einer nicht produktiven Umgebung.

Fazit

Job Chains machen Abhängigkeiten, parallele Schritte und Fehlerpfade in Oracle sichtbar und wartbar. Der wichtigste Qualitätscheck ist, dass jede mögliche Ausführung entweder sauber weiterläuft oder explizit endet – und dass ein Wiederanlauf fachlich sicher ist.

Weiterführend: Oracles Anleitung zum Verwalten des Oracle Schedulers und die Referenz zu DBMS_SCHEDULER.