ORA-31638 bei Datapump

Gestern konnte der nächtliche Export einer Oracle-19c-Datenbank plötzlich nicht mehr ausgeführt werden.  Logfile des expdp:
Angemeldet bei: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
ORA-31626: Job ist nicht vorhanden
ORA-31638: Job SYS_EXPORT_FULL_01 für Benutzer SYS kann nicht zugeordnet werden
ORA-06512: in „SYS.KUPV$FT“, Zeile 1142
ORA-06512: in „SYS.KUPV$FT“, Zeile 1744
ORA-06512: in „SYS.DBMS_SYS_ERROR“, Zeile 95
ORA-06512: in „SYS.KUPV$FT_INT“, Zeile 498
ORA-39077: Zuordnung von Agent KUPC$A_1_170745828000000 an Queue „KUPC$C_1_20221213170745_0“ nicht möglich
ORA-06512: in „SYS.DBMS_SYS_ERROR“, Zeile 95
ORA-06512: in „SYS.KUPC$QUE_INT“, Zeile 294
ORA-00972: ID ist zu lang
ORA-06512: in „SYS.DBMS_AQADM_SYS“, Zeile 9006
ORA-06512: in „SYS.DBMS_PRVTAQIS“, Zeile 1558
ORA-06512: in „SYS.DBMS_PRVTAQIS“, Zeile 3431
ORA-06512: in „SYS.DBMS_RULE_ADM“, Zeile 296
ORA-06512: in „SYS.DBMS_RULEADM_INTERNAL“, Zeile 106
ORA-24000: Ung³ltiger Wert „SYS“.“KUPC$C_1_20221213170745_0$10061″, RULE SET sollte die Form [SCHEMA.]NAME haben
ORA-00972: ID ist zu lang
usw.

 

Der expdp-Aufruf erfolgt ohne spezielle Parameter, lediglich der Dump- und Logfile sind angegeben.

„select * from DBA_DATAPUMP_JOBS“ liefert keine Ergebnisse, es ist also kein Job  „hängengeblieben“, den man killen könnte. “

„select comp_id, comp_name,version, status from dba_registry“ liefert keinen Status invalid, so dass man eine einzelne Komponente als schuldig identifizieren könnte.

Obwohl folgender Weg in einer Produktionsumgebung nicht empfohlen wird, habe ich mangels Alternative das Data Dictionary neu erstellt. Das dauert natürlich etwas, auf der betroffenen Maschine bei geringer Userzahl ca. 20 Minuten. Im Zweifel auf der Konsole arbeiten und den Listener fürs Netzwerk sperren.

Vorher ist auf jeden Fall zu prüfen, ob noch genug Speicherplatz für den System-Tablespace vorhanden ist. Ein paar MB werden durch die Aktion dazukommen. Im Zweifel also das zugrunde liegende Datafile etwas erweitern (geht online):

ALTER DATABASE DATAFILE ‚C:\U01\DB_XXX\DATA\SYSTEMXXX01.DBF‘ RESIZE yyyyyy;

Vor dem Neu-Erstellen die Datenbank per rman und/oder hotbackup sichern. Logswitch durchführen, damit die aktuellen arc-Files geschrieben werden.

ACHTUNG: Ich bin nicht sicher, ob die Datenbank unbedingt im Upgrade-Modus sein muss, oder ob es auch im normalen Open-Modus funktioniert. Kenne das Ausführen der Schritte aber nur im Upgrade-Modus.

ACHTUNG: Auf jeden Fall „as sysdba“ ausführen und nicht abbrechen!

c:\sqlplus „/as sysdba“
SQL> shutdown immediate
SQL> startup upgrade
SQL > @?/rdbms/admin/catalog.sql
SQL > @?/rdbms/admin/catproc.sql
SQL > @?/rdbms/admin/utlrp.sql
SQL> shutdown immediate
SQL> startup
use at your own risk, aber danach hat der Export wieder funktioniert. Probleme sind im weiteren Verlauf nicht aufgetreten oder gemeldet worden.