Ein wesentliches Unterscheidungsmerkmal des längst abgekündigten 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.
Grundsätzlich ist ein DataPump-Export sowohl hinsichtlich Quell-/Zielversionen als auch Endianformaten keinen Einschränkungen unterworfen. Ein „Upgrade“ via Export/Import wird also technisch immer möglich sein. Problematisch kann das im konkreten Fall aber z.B. werden, wenn
Für diesen Zweck könnte man geneigt sein, auf DataPump via Database Link (Parameter network_link) zurückzugreifen. An dieser Stelle kann man aber sehr wohl in Kompatibilitätsprobleme laufen. Grund hierfür sind allerdings 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) unterworfen ist.
So auch im vorliegenden Fall:
Der ursprüngliche Versuch, die Daten per Database Link direkt zu importieren, scheiterte 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-kompatible Datenbank zu installieren und darüber einen Export in ein auf dem Neusystem abgelegtes Dumpfile durchzuführen. Im konkreten Fall fiel die Wahl auf eine Version 12.1.0, da das
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 exportiert 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 importiert werden.
Wenngleich etwas aufwändiger als mit dem abgekündigten exp-Tool ist das Erstellen eines lokalen Exportfiles auch mit DataPump weiterhin möglich. Der Aufwand ist allerdings nur gerechtfertigt, wenn keine Möglichkeit besteht, auf die Filesysteme des Quellsystems zuzugreifen.
Share this article