ORA-31634: job already exists

Erhalten Sie den Fehler “ORA-31634: job already exists”? Wir erklären was dieser Fehler bedeutet und wie dieser behoben werden kann.

Ursache

Zu beginn jedes DATAPUMP Exports wird eine Tabelle mit allen notwendigen Informationen für die Datenbank angelegt . Wird der DATAPUMP Export während der Ausführung unterbrochen z.B. durch einen Neustart, Speicherplatzmangel oder durch den Befehl “kill”, so kann die Tabelle nicht gelöscht werden. Wird nun ein weiteres mal der selbe Job ausgeführt, kann die Oracle Datenbank die Tabelle nicht erneut anlegen und die Fehlermeldung “ORA-31634: job already exists” wird angezeigt.

Dieser Fehler wird auch verursacht, wenn zu viele verschiedene (unique) oder abgebrochene Jobs registriert sind. Oracle kann nur 99 verschiedene DATAPUMP Export Tabellen erstellen, sind diese erreicht, kann kein neuer DATAPUMP Export gestartet werden und die Fehlermeldung “ORA-31634” wird angezeigt.

Überprüfung

Ob und wie viele DATAPUMP Jobs in der Oracle Datenbank registriert sind kann durch folgenden Befehl kontrolliert werden:

SELECT owner_name,
       job_name,
       operation,
       job_mode,
       state
FROM dba_datapump_jobs;

Behebung

Um den Fehler “ORA-31634” zu beheben, müssen die in der Datenbank erstellten Job-Tabellen gelöscht werden. Das nachfolgende “Select”-Statement kann genutzt werden, um für jede Job-Tabelle passende Delete Statements zu erstellen, welche anschließend ausgeführt werden kann.

SELECT 'DROP table ' || owner_name || '.' || job_name || ';'
FROM DBA_DATAPUMP_JOBS
WHERE STATE = 'NOT RUNNING';

Vorsicht!!!
Bitte überprüfen Sie die Drop”-Statements vor der Ausführung auf Richtigkeit.