Migration von dbms_job-Jobs zum Oracle Scheduler mit KeepTool leicht gemacht

Veröffentlicht 21. Mai 2024

Aktualisiert Oktober 2025

Einleitung

Willkommen zurück auf unserem Blog!
In diesem Beitrag zeigen wir, wie KeepTool 16.1 Sie dabei unterstützt, alte dbms_job-Jobs bequem auf den moderneren und leistungsfähigeren Oracle Scheduler zu migrieren.
Der Scheduler bietet erweiterte Funktionen, mehr Kontrolle und langfristig eine bessere Kompatibilität.

Warum von dbms_job auf den Oracle Scheduler umsteigen?

Das klassische dbms_job-System

Viele Oracle-Datenbanken nutzen auch heute noch das ältere Job-System, das über das Paket dbms_job verwaltet wird.
Vor Oracle 10g war dies die einzige Möglichkeit, zeitgesteuerte Jobs zu erstellen.
Obwohl viele Systeme inzwischen aktualisiert wurden, sind in zahlreichen Projekten weiterhin dbms_job-basierte Jobs im Einsatz.

In KeepTool (Hora) können Sie eine Übersicht dieser klassischen Jobs anzeigen. Über Kontextmenüs lassen sich die entsprechenden dbms_job-Aufrufe direkt verwalten.

Jeder Job wird durch eine Jobnummer identifiziert.
Die Spalte What enthält eine Prozedur oder einen PL/SQL-Block, der die Logik definiert, und Interval beschreibt den Zeitpunkt der nächsten Ausführung.

Die moderne Alternative: Oracle Scheduler

Seit Oracle 10g steht mit dbms_scheduler ein neues, leistungsfähigeres System zur Verfügung.
Scheduler-Jobs werden über Owner + Jobname identifiziert (nicht mehr nur über eine Nummer) und enthalten zusätzliche Felder wie Creator, Action (Erweiterung von What) und Repeat Interval.

Ab Oracle 19c wandelt Oracle intern dbms_job-Jobs automatisch in Scheduler-Jobs um.
Solche automatisch erzeugten Jobs erscheinen unter Namen wie DBMS_JOB$_<jobnummer>.
Die Dictionary-View scheduler$_dbmsjob_map zeigt die Zuordnung zwischen alten und neuen Jobs an.

Allerdings kann man sich nicht vollständig auf diese automatische Umwandlung verlassen – insbesondere dann nicht, wenn es um Eigentumsrechte und Ausführungskontexte geht.

Mögliche Stolperfallen

Ein typisches Problem:
Nach einem Import in Oracle 19c (z. B. per impdp als Benutzer SYS) kann es vorkommen, dass im Scheduler der Creator = SYS eingetragen ist, während der Owner ein anderer Benutzer (z. B. TEST) ist.
Dadurch wird der Job effektiv mit SYS-Rechten ausgeführt – mit potenziell unerwartetem Verhalten.

Oracle empfiehlt in diesem Fall, die betroffenen Jobs neu anzulegen, um die Eigentumsverhältnisse zu korrigieren.
(Siehe Oracle Doc ID 2888255.1.)

Daher ist es sinnvoll, bestehende dbms_job-Jobs frühzeitig aktiv auf den Scheduler umzustellen – bevor dbms_job vollständig abgeschafft oder nur noch intern abgebildet wird.

Wie KeepTool die Migration erleichtert

Grundsätzlich gibt es zwei technische Ansätze zur Konvertierung von dbms_job-Jobs in dbms_scheduler-Jobs:

  1. Über dbms_metadata, um aus den intern erzeugten Scheduler-Jobs den PL/SQL-Code zu extrahieren.

  2. Über dba_jobs bzw. andere Job-Views, um die Skripte manuell für dbms_scheduler zu erzeugen.

In KeepTool haben wir uns für Variante 2 entschieden – aus zwei Gründen:

  • Sie funktioniert auch mit älteren Oracle-Versionen (vor 19c).

  • In speziellen Fällen schlägt dbms_metadata fehl (z. B. bei SYS-Ownern).

Neues Kontextmenü in KeepTool 16.1

In der Hora-Oberfläche gibt es jetzt im Kontextmenü der dbms_job-Ansicht den neuen Eintrag:
„Convert to Scheduler Job“ (Mehrfachauswahl möglich).

Diese Funktion generiert ein PL/SQL-Skript, das:

  • Einen neuen Scheduler-Job (zunächst im deaktivierten Zustand) anlegt, der die ursprüngliche Logik übernimmt.

  • Optional einen Aufruf von dbms_job.remove() enthält, um den alten Job zu löschen.

 

Dieser zweistufige Ansatz ermöglicht es, die neuen Jobs zunächst zu prüfen und erst nach Kontrolle zu aktivieren.

Nach der Umwandlung erscheinen die Jobs in der Scheduler-Übersicht.
Automatisch von Oracle erzeugte Jobs werden in der Oberfläche rot, manuell über KeepTool erzeugte grün hervorgehoben.

Abschließend können die alten dbms_job-Jobs entweder per Skript oder bequem über das Kontextmenü gelöscht werden.
Dabei werden auch automatisch erstellte Scheduler-Jobs mit dem Präfix DBMS_JOB$_… entfernt.

Fazit

Mit KeepTool 16.1 lässt sich die Migration von dbms_job zu Oracle Scheduler mit wenigen Klicks erledigen.
Sie erzeugen automatisch die passenden PL/SQL-Skripte, prüfen das Ergebnis und aktivieren die neuen Jobs erst, wenn alles passt.
Auch bei vielen bestehenden Jobs ist der Prozess sicher, effizient und transparent.

Migrieren Sie jetzt – und sind Sie bestens vorbereitet, wenn dbms_job endgültig abgelöst wird.

➡️ KeepTool kostenlos testen

Die Oracle-Tools von KeepTool wurden speziell für Entwickler, DBAs und Support-Teams entwickelt.
Basierend auf über 25 Jahren Erfahrung optimieren wir unsere Software kontinuierlich, um Ihre Datenbankanalyse und -dokumentation schneller, effizienter und übersichtlicher zu gestalten.