Veröffentlicht von & unter Datenbank.

Heute wäre ich fast verzweifelt. Ich bin von der Oracle 11XE zur Oracle 18 XE umgestiegen. Nun, da gibt es jetzt bei der Authentifizierung eine Änderung. Es gibt nun „Local Benutzer“ und „Common Benutzer“. Hintergrund der ganzen Sache ist die „Multitenant Option“ in Oracle 18. Es gibt nun „Container Datenbanken“ (CBD) und „Pluggable Datenbanken“ (PDB). Es gibt eine ganze Reihe von Dingen die sich geändert haben und zu beachten und einzurichten sind. Hier geht es erstmal um den Export einen lokalen Benutzers bzw. der ganzen Datenbank.

Hat man einen „Local User“ eingerichtet (zu erkennen, dass er kein Prefix wie C## trägt), dann kann der User nicht einfach mit expdp exportiert werden. Wie der Name schon sagt, gilt der User nur lokal – meist für XEPDB1 – wenn man keine neuen Datenbanken eingerichtet hat. Versucht man es doch, dann kommt folgende Meldung:

expdp www DUMPFILE=expdat5.dmp
UDE-01017: operation generated ORACLE error 1017
ORA-01017: Benutzername/Kennwort ungultig; Anmeldung abgelehnt

Der Trick besteht nun darin, der Exportfunktion zu sagen, dass er den Local USER WWW benutzen soll. Das geht mit folgender Anweisung:

expdp www DIRECTORY=dpump_dir1 DUMPFILE=expdat7.dmp NETWORK_LINK=xepdb1

Nun, das klappt aber auch nicht! Das System erkennt WWW nicht an. Auf der Suche nach einer Lösung bin ich über die Anweisung WWW@XEPDB1 als Usernamen gestoßen. Leider funktioniert dies bei mir auch nicht.

Full / Schema Export über System mit XEPDB1

Zum Erfolg führte dann folgende Anweisung.

expdp system DIRECTORY=dpump_dir1 DUMPFILE=expdat8.dmp NETWORK_LINK=xepdb1 FULL=Y

Es wird die komplette Datenbank über „SYSTEM“ gedump mit dem Service-Namen „xepdb1“. Der Befehl NETWORK_LINK ist für den richtigen Service-Namen wichtig. Es gibt bei EXPDP auch die Option „SERVICE-NAME“ aber die funktioniert nicht in meinem Fall.

Wer nur ein Schema exportieren will, kann die Option „SCHEMAS“ benutzen.

expdp system DIRECTORY=dpump_dir1 DUMPFILE=expdat8.dmp NETWORK_LINK=xepdb1 SCHEMAS=WWW

Wer kein Datapump Directory angelegt hat, kann die Anweisung „DIRECTORY=dpump_dir1“ weglassen. Es wird dann in den Oracle Ordner gespeichert (/var/oracle/..). Nach dem Export wird das genaue Verzeichnis ausgegeben.

Problem gelöst.