News zu Oracle

Lokales Dumpfile mit DataPump via Database Link erzeugen

Ein wesent­liches Unterscheidungsmerkmal des längst abgekün­digten exp-Tools gegenüber DataPump ist, dass es Dumpfiles lokal auf dem Host ablegt, von dem aus des exp-Tool gestartet wurde. Für DataPump kann man dieses Feature mittels einer separaten Datenbank und DatabaseLink nachbilden. Im folgenden Artikel wird das in Zusammenhang mit einem Kompatibilitätsproblem bei einem Upgrade von 10gR2 nach 19c genutzt.

DataPump via Database Link

Grundsätzlich ist ein DataPump-Export sowohl hinsichtlich Quell-/Zielversionen als auch Endianformaten keinen Einschränkungen unter­worfen. Ein „Upgrade“ via Export/Import wird also technisch immer möglich sein. Problematisch kann das im konkreten Fall aber z.B. werden, wenn

  • auf dem Altsystem nicht mehr ausrei­chend Platz für die Exportfiles verfügbar ist,
  • das Neusystem keinen Zugriff auf die Filesysteme des Altsystems hat oder
  • kein adminis­tra­tiver Zugriff auf das Altsystem möglich ist, um dort Shares zu mounten, auf die auch das Neusystem Zugriff hätte

Für diesen Zweck könnte man geneigt sein, auf DataPump via Database Link (Parameter network_link) zurück­zu­greifen. An dieser Stelle kann man aber sehr wohl in Kompatibilitätsprobleme laufen. Grund hierfür sind aller­dings nicht Einschränkungen des DataPump selbst, sondern die Tatsache, dass die Kommunikation über Database Link den Restriktionen der Client/Server Interoperability (Doc ID 207303.1) unter­worfen ist.

So auch im vorlie­genden Fall:

  • Das Altsystem läuft auf Oracle 10.2.0.3 (HP-UX, big endian)
  • Das Neusystem läuft auf Oracle 19c (Linux, little endian)
  • Es ist ausschließlich Net*8‑Zugriff auf einen Account im Altsystem mit EXP_FULL_DATABASE-Privileg möglich
  • 19c-Clients sind nicht für den Zugriff auf 10gR2-Server zertifiziert

Der ursprüng­liche Versuch, die Daten per Database Link direkt zu impor­tieren, schei­terte folglich auch aufgrund der Inkompatibilität des 19c-Clients zum 10gR2-Server:

$ impdp userid=system/oracle network_link=altsystem nologfile=y full=y

Import: Release 19.0.0.0.0 - Production on Thu Jan 6 10:38:56 2022
Version 19.13.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
ORA-39001: invalid argument value
ORA-39169: Local version of 19.13.0.0.0 cannot work with remote version of 10.2.0.3.0.

Eine mögliche Lösung für das Problem besteht darin, auf dem Neusystem zusätzlich eine Client-/Server-kompa­tible Datenbank zu instal­lieren und darüber einen Export in ein auf dem Neusystem abgelegtes Dumpfile durch­zu­führen. Im konkreten Fall fiel die Wahl auf eine Version 12.1.0, da das

  • lt Doc ID 207303.1 die höchste noch zu 10.2.0 Client-/Server-kompa­tible Version und
  • von den 10gR2-kompa­tiblen auch die einzige für das Neusystem-OS (Oracle Enterprise Linux 8) freige­gebene ist.
    Innerhalb dieser zusätz­lichen Datenbank (hier mig genannt) wird ein public database link auf den Benutzer im Altsystem angelegt, der über das EXP_FULL_DATABASE-Privileg verfügt:
SQL> create database link altsystem connect to system identified by „password“ using 'altsystem-ip:port/service';

Über diese 12.1‑Datenbank und den angelegten Database Link kann nun das 10gR2-Altsystem in ein Dumpfile auf dem Neusystem expor­tiert werden:

$ expdp userid=system/oracle@mig dumpfile=altsystem.dmp logfile=altsystem.exp.log network_link=altsystem full=y flashback_time=sysdate

Export: Release 12.1.0.2.0 - Production on Thu Jan 6 10:57:51 2022

Copyright (c) 1982, 2015, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
Starting "SYSTEM"."SYS_EXPORT_FULL_01": userid=system/******** dumpfile=altsystem.dmp logfile=altsystem.exp.log network_link=altsystem full=y flashback_time=sysdate
Estimate in progress using BLOCKS method...
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 4.705 GB
Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/SYS_USER/USER
Processing object type DATABASE_EXPORT/SCHEMA/USER

******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:
/u01/app/oracle/admin/migrate/dpdump/altsystem.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Jan 6 11:08:25 2022 elapsed 0 00:00:18

Das Dumpfile /u01/app/oracle/admin/migrate/dpdump/altsystem.dmp kann nun mit dem 19c impdp in die Zieldatenbank impor­tiert werden.

Fazit

Wenngleich etwas aufwän­diger als mit dem abgekün­digten exp-Tool ist das Erstellen eines lokalen Exportfiles auch mit DataPump weiterhin möglich. Der Aufwand ist aller­dings nur gerecht­fertigt, wenn keine Möglichkeit besteht, auf die Filesysteme des Quellsystems zuzugreifen.

Hier findest du weitere Posts zu den Themen Oracle Datenbank bzw. Migrationen aus unserem News und Insights Bereich. 
icon-arrow_right_medium-violet-blue.svg

Share this article

Share on facebook
Facebook 
Share on twitter
Twitter 
Share on linkedin
LinkedIn 
Share on xing
XING 
Share on whatsapp
WhatsApp 
Share on email
Email