Im Laufe der letzten Jahre habe ich schon eingie Migrationen für Kunden in die Oracle Cloud Infrastructure (inkl. ExaCC, Oracle@Azure) mit Oracle ZDM durchführen können und dabei manche Fehler getroffen. Die Fehler mit entsprechenden Workarounds oder Lösung möchte ich hier dokumentieren.
Wichtig: Die aufgeführten Fehlermeldung sind nicht alle aus der aktuellen Version und können bereits in der neusten Version gefixt sein bzw. sich anders verhalten. Es sollte immer die neuste ZDM Version genutzt werden.
Übersicht über die Fehlermeldungen in diesem Artikel:
PRGZ-3605: Oracle Data Guard Broker switchover to database <> on database <> failed.
PRCZ-4002 : failed to execute command
Failed to apply datapatch for database
ORA-16532: Oracle Data Guard broker configuration does not exist
PRGO-2445 : timed out after „30“ minutes of inactivity
PRGZ-3605 : Oracle Data Guard Broker switchover to database „dbdev3_oci“ on database „dbdev3“ failed.
Phase: ZDM_SWITCHOVER_SRC
Fehlermeldung:
dbserverA_oci2: 2025-07-22T05:38:52.388Z : target database is ready for switching role...
dbserverA_onPr2: 2025-07-22T05:39:04.148Z : Executing Oracle Data Guard Broker switchover to database "dbdev3_oci" on database "dbdev3" ...
####################################################################
PRGZ-3605 : Oracle Data Guard Broker switchover to database "dbdev3_oci" on database "dbdev3" failed.
…
Welcome to DGMGRL, type "help" for information.
Connected to "dbdev3„Connected as SYSDG.
DGMGRL> Performing switchover NOW, please wait...
Operation requires a connection to database "dbdev3_oci"
Connecting ...
Connected to "dbdev3_oci"
Connected as SYSDBA.
New primary database "dbdev3_oci" is opening...
Oracle Clusterware is restarting database "dbdev3" ...
Unable to connect to database using dbserverA-scan:1521/dbdev3
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor Failed.
[W000 2025-07-22T07:50:23.633+02:00] Failed to attach to dbserverA-scan:1521/dbdev3.
Ensure Oracle Clusterware successfully restarted database "dbdev3" before proceeding.
Der Start der neuen Standby (onPrуm) mittels ZDM über srvctl start database ist fehlgeschlagen. Der Switchover hat allerdings funktioniert und die neue Primary ist online.
Workaround: Prüfen, ob die neue Primary online ist und manuelles starten der neuen Standby in mounted Status.
Da ZDM die Phase bei einem -resume wieder versuchen würde, kann der Status manuell auf erledigt gesetzt werden. Dafür die Datei zdmbase/chkbase/GHcheckpoints/<sub>/<job>.xml editieren und die Phase auf „SUCCESS“ setzen:
<CHECKPOINT LEVEL="MAJOR" NAME="ZDM_SWITCHOVER_SRC" DESC="ZDM_SWITCHOVER_SRC" STATE="STARTED"/>
Ändern in:
<CHECKPOINT LEVEL="MAJOR" NAME="ZDM_SWITCHOVER_SRC" DESC="ZDM_SWITCHOVER_SRC" STATE="SUCCESS"/>
Dann kann der ZDM Job wieder angestartet werden, die Phase wird als erledigt übersprungen und mit der nächsten weiter gemacht.
zdmcli resume job -jobId <jobid>
Warning: Updating primary database dbdev3 with standby parameters failed, archive logs will not be shipped to standby of database dbdev3
Phase: ZDM_SWITCHOVER_TGT
Warnung:
zdmhost: … : Switching database dbdev3_oci on the target node dbserverA_oci2 to primary role ...
dbserverA_oci2: … : Updating dbdev3_oci startup option
dbserverA_oci2: … : Configuring Oracle Data Guard Broker on "dbdev3_oci" ...
dbserverA_oci2: … : Warning: Updating primary database dbdev3 with standby parameters failed, archive logs will not be shipped to standby of database dbdev3
dbserverA_oci2: … : Switchover actions in the target environment executed successfully
zdmhost: … : Execution of phase ZDM_SWITCHOVER_TGT completed
Die ist kein Fehler, der zum Abbruch des Jobs führt, allerdings hat diese Warnung folgen nach dem Switchover. Es gibt keine Standbylogs auf der Source. Dies ist kein Problem, wenn der Dataguard sofort nach der Migration abgebaut wird (z.B. durch ZDM). Soll allerdings die Dataguard Verbindung für den Fallback vorerst bestehen bleiben, sollte dies beachtet werden, da sonst die Änderungen von der neuen Primary nicht auf die Source Datenbanke, die neue Standby, übertragen werden.
Lösung: Anlegen von Standby Logs auf der Source Datenbank. Z.B.:
alter database add standby logfile thread 1 group 10 size 4G;
alter database add standby logfile thread 2 group 20 size 4G;
PRCZ-4002 : failed to execute command
Phase: ZDM_SETUP_SRC, ZDM_SETUP_TGT, ZDM_VALIDATE_SRC, ZDM_VALIDATE_TGT
Fehlermeldung:
PRCZ-4002 : failed to execute command "/u01/app/19.0.0.0/grid/perl/bin/perl" using the privileged execution plugin "dbuser" on nodes "dbserverA_onPr2"
PRCZ-2103 : Failed to execute command "/u01/app/19.0.0.0/grid/perl/bin/perl" on node "dbserverA_onPr2" as user "oracle". Detailed error:
Ursache: mehrere parallele ZDM Jobs auf dem gleichen Quell/Ziel-Server.
Workaround: Neuen paralellen Job mit demselben Quell Server erst starten, wenn die Phasen ZDM_VALIDATE_SRC und ZDM_VALIDATE_TGT für vorherige Jobs auf denselben Quell-/Zielservern abgeschlossen sind.
Failed to apply datapatch for database <db> on node : <node>
Phase: ZDM_DATAPATCH_TGT
Fehlermeldung:
zdmhost: 2025-04-07T12:39:09.292Z : Executing phase ZDM_DATAPATCH_TGT
zdmhost: 2025-04-07T12:39:09.292Z : Executing datapatch for database dbdev8_oci on the target node dbserverA_oci2 ...
dbserverA_oci2: /u02/app/oracle/product/19.0.0.0/dbhome_1
dbserverA_oci2:
dbserverA_oci2: dbdev82
dbserverA_oci2:
dbserverA_oci2: trying datapatch run for dbdev82, attempt### 1 ###
dbserverA_oci2: datapatch completed successfully for database : dbdev8_oci
dbserverA_oci1: /u02/app/oracle/product/19.0.0.0/dbhome_1
dbserverA_oci1:
dbserverA_oci1: dbdev81
dbserverA_oci1:
Failed to apply datapatch for database dbdev8_oci on node : dbserverA_oci1
Ursache: In diesem Kundenszenario war eine Zielinstanz gestoppt. ZDM versucht den Datapatch auf beiden Instanzen auszuführen und schlägt auf der gestoppten Instanz fehl.
Lösung: Im Responsefile kann mit folgendem Parameter die Phase übersprungen werden:
TGT_SKIP_DATAPATCH=TRUE
Datapatch sollte dann im Anschluss manuell ausgeführt werden.
ORA-16532: Oracle Data Guard broker configuration does not exist
Phase: ZDM_POST_DATABASE_OPEN_TGT
Fehlermeldung:
DGMGRL>
Configuration - ZDM_dbdev9_op
Protection Mode: MaxPerformance
Members:
dbdev9_op - Primary database
dbdev9_oci - Physical standby database
Warning: ORA-16532: Oracle Data Guard broker configuration does not exist
Ursache: In diesem Fall wurde auf einem Knoten der Dataguard richtig angezeigt, alle Memeber waren verfügbar und im Sync. Auf dem zweiten Knoten gab es keine Broker-Config. Die dg_broker_config_file Parameter waren auf lokale Filesysteme konfiguriert.
Lösung: Setzen des Parameters dg_broker_config_file1 und dg_broker_config_file2 auf ein +ASM Verzeichnis:
alter system set dg_broker_config_file1='+DATA1/DBDEV9_OP/dr1dbdev9_op.dat' scope=both sid='*';
alter system set dg_broker_config_file2='+DATA1/DBDEV9_OP/dr2dbdev9_op.dat' scope=both sid='*';
Anschließend dann der Job wieder gestartet werden:
zdmcli resume job -jobid <id>
PRGZ-3136 : SQL statement to open pdb „“PDB1PROD“,“PDB2PROD“,“PDB3PROD““ with „READ WRITE“ mode for database „dbprod9_oci“ failed
Phase: ZDM_POST_DATABASE_OPEN_TGT
Fehlermeldung:
PRGZ-3136 : SQL statement to open pdb ""PDB1PROD","PDB2PROD","PDB3PROD"" with "READ WRITE" mode for database "dbprod9_oci" failed
<EXCEPTION>
<…>
ALTER PLUGGABLE DATABASE "PDB1PROD","PDB2PROD","PDB3PROD" OPEN READ WRITE INSTANCES=ALL
*
ERROR at line 1:
ORA-65107: Error encountered when processing the current task on instance:1
ORA-65011: Pluggable database PDB3PROD does not exist.
Ursache: Während der Job nach der Phase ZDM_CONFIGURE_DG_SRC pausiert war, wurde eine PDB aus dieser CDB verschoben. ZDM versucht diese allerdings am Ende der Migration online zu bringen, und schlägt fehl.
Lösung: Prüfen, ob alle vorhandenen PDBs geöffnet sind.
Da ZDM die Phase bei einem -resume wieder versuchen würde, kann der Status manuell auf erledigt gesetzt werden. Dafür die Datei zdmbase/chkbase/GHcheckpoints/<sub>/<job>.xml editieren und die Phase auf „SUCCESS“ setzen:
<CHECKPOINT LEVEL="MAJOR" NAME="ZDM_POST_DATABASE_OPEN_TGT" DESC="ZDM_POST_DATABASE_OPEN_TGT" STATE="STARTED"/>
Ändern in:
<CHECKPOINT LEVEL="MAJOR" NAME="ZDM_POST_DATABASE_OPEN_TGT" DESC="ZDM_POST_DATABASE_OPEN_TGT" STATE="SUCCESS"/>
Dann kann der ZDM Job wieder angestartet werden, die Phase wird als erledigt übersprungen und mit der nächsten weiter gemacht.
zdmcli resume job -jobid <id>
PRGO-2445 : timed out after „30“ minutes of inactivity
Phase: ZDM_SWITCHOVER_TGT
Fehlermeldung:
dbserverA_onPr2: 2025-07-22T06:20:07.668Z : Waiting for dbdev7 to catch up, this could take a few minutes...
####################################################################
PRGO-2445 : timed out after "30" minutes of inactivity
Nach mehreren Anläufen hatte sich die Datenbank immer noch nicht entschieden, den Switchover durchführen zu lassen.
Lösung: Manueller Switchover im Dataguard Broker funktionierte auf Anhieb ohne Fehler.
Wird allerdings im Anschluss der ZDM Job wieder gestartet, kommt es wieder zu einem Fehler. ZDM erwartet, dass der Switchover noch nicht erfolgt ist:
zdmhost: ... : checking if source database is ready for switching role...dbserverA_onPr2: ... : Validating database dbdev7 role is PRIMARY...dbserverA_onPr2: ... : Validating database dbdev7 is in open mode...dbserverA_onPr2: ... : Waiting for dbdev7 to catch up, this could take a few minutes...####################################################################PRGO-4086 : failed to query the "SWITCHOVER_STATUS" details from the view "V$DATABASE" for database "dbdev7"
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 22 08:58:44 2025
Version 19.22.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected.
alter session set NLS_LANGUAGE='AMERICAN'
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0
Serial number: 0
…
ZDM versucht den Status der Source-Datenbank abzufragen, scheitert jedoch, weil diese nach dem manuellen Switchover bereits im Mounted State ist.
Lösung: Resume des ZDM Jobs mit -skip Parameter
zdmcli resume job -jobid <id> -skip SWITCHOVER
Anschließend läuft der Job normal zu Ende:
zdmhost: ... : Executing phase ZDM_SWITCHOVER_TGT
zdmhost: ... : Switching database dbdev7_oci on the target node dbserverA_oci2 to primary role ...
dbserverA_oci2: ... : Updating dbdev7_oci startup option
dbserverA_oci2: ... : Configuring Oracle Data Guard Broker on "dbdev7_oci" ...
dbserverA_oci2: ... : Oracle Data Guard Broker configured successfully on "dbdev7_oci"
dbserverA_oci2: ... : Switchover actions in the target environment executed successfully
zdmhost: ... : Execution of phase ZDM_SWITCHOVER_TGT complete
PRCZ-2123 : SFTP failure to copy file „/u01/app/home/rhp/zdm//mZDM_backup“ from local node to „/u01/app/oracle/zdm/zdm_AGZDM_EXA_22/zdm//mZDM_backup“ on node „sorucenode
ZDM Version: 26.1
Migrationsmethode: Online_Physical
Phase: ZDM_SETUP_SRC
Nachdem der Job in einer späteren Phase abgebrochen war und der Fehler korrigiert wurde, brach der „zdmcli resume job“ mit folgendem Fehler ab:
vm-zdm-host-ag: 2026-05-12T09:49:29.302Z : Oracle ZDM (Zero Downtime Migration) Version "26.1.0"
vm-zdm-host-ag: 2026-05-12T09:49:29.302Z : Build date: Apr 11 2026 17:13:53 UTC
####################################################################
vm-zdm-host-ag: 2026-05-12T09:49:31.357Z : Resuming zero downtime migrate operation ...
vm-zdm-host-ag: 2026-05-12T09:49:35.030Z : Skipping phase ZDM_PRECHECKS_SRC on resume
vm-zdm-host-ag: 2026-05-12T09:49:35.280Z : Skipping phase ZDM_PRECHECKS_TGT on resume
vm-zdm-host-ag: 2026-05-12T09:49:35.340Z : Executing phase ZDM_SETUP_SRC
vm-zdm-host-ag: 2026-05-12T09:49:35.341Z : Setting up ZDM on the source node exa02dbadm01 ...
vm-zdm-host-ag: 2026-05-12T09:49:37.590Z : Oracle ZDM ONLINE PHYSICAL migration failed
vm-zdm-host-ag: 2026-05-12T09:49:37.591Z : Failed at phase: ZDM_SETUP_SRC
vm-zdm-host-ag: 2026-05-12T09:49:37.591Z : Job duration: 0 minutes and 8 seconds
PRCF-2056 : The copy operation failed on node: "exa02dbadm01". Details:
{1}
PRCZ-4002 : failed to execute command "/bin/cp" using the privileged execution plugin "dbuser" on nodes "exa02dbadm01"
PRCZ-2123 : SFTP failure to copy file "/u01/app/home/rhp/zdm//lib/opc_install.jar" from local node to "/u01/app/oracle/zdm/zdm_AGZDM_EXA_22/zdm//lib/opc_install.jar" on node "exa02dbadm01"
Permission denied
Prüfen der Berechtigung auf dem Sourcenode. Es fehlen write Berechtigungen auf vielen Dateien:
[oracle@exa02dbadm01 lib]$ ls -l
total 103172
-rwxr-xr-x 1 oracle oinstall 7016621 Apr 11 19:13 autoupgrade.jar
drwxr-xr-x 5 oracle oinstall 4096 May 8 11:32 cpat
drwxrwxr-x 2 oracle oinstall 4096 May 8 11:32 cpatfixups
-rwxrwxrwx 1 oracle oinstall 18 Nov 28 2023 java.security
-rw------- 1 oracle oinstall 107191 Apr 11 19:11 jaxb-api.jar
-rw------- 1 oracle oinstall 255502 Apr 11 19:11 jaxb-core.jar
-rw------- 1 oracle oinstall 963660 Apr 11 19:11 jaxb-impl.jar
-rwxrwxr-x 1 oracle oinstall 93414592 Sep 22 2020 libopc.so
-r-xr-x--- 1 oracle oinstall 3453 Apr 20 2021 mZDM_AcfsUtils.pm
-r-xr-x--- 1 oracle oinstall 18712 Sep 9 2025 mZDM_DBConvert.pm
-r-xr-x--- 1 oracle oinstall 47298 Jan 26 2024 mZDM_DB_Patch.pm
-r-xr-x--- 1 oracle oinstall 24390 Feb 16 20:35 mZDM_DB_Upgrade.pm
-r-xr-x--- 1 oracle oinstall 5914 Nov 4 2019 mZDM_DV_Utils.pm
-r-xr-x--- 1 oracle oinstall 16010 May 17 2018 mZDM_DbSizingValues.pm
-r-xr-x--- 1 oracle oinstall 9599 Mar 5 2025 mZDM_LoggingAndTracing.pm
-r-xr-x--- 1 oracle oinstall 16124 Nov 21 2024 mZDM_Monitor.pm
-r-xr-x--- 1 oracle oinstall 21774 Mar 5 2020 mZDM_OCI_Utils.pm
-r-xr-x--- 1 oracle oinstall 16958 Dec 16 03:39 mZDM_PFile.pm
-r-xr-x--- 1 oracle oinstall 408654 Apr 8 17:28 mZDM_Queries.pm
-r-xr-x--- 1 oracle oinstall 14402 Apr 1 2024 mZDM_RMAN_Utils.pm
-r-xr-x--- 1 oracle oinstall 7785 May 20 2025 mZDM_Transfer_Files.pm
-r-xr-x--- 1 oracle oinstall 346827 Apr 8 17:28 mZDM_Utils.pm
-r-x------ 1 oracle oinstall 2819134 Apr 11 19:11 opc_install.jar
-r-x------ 1 oracle oinstall 11619 Apr 11 19:11 zdm_reload_query_11204.sql
-r-x------ 1 oracle oinstall 11789 Apr 11 19:11 zdm_reload_query_121.sql
-r-x------ 1 oracle oinstall 11980 Apr 11 19:11 zdm_reload_query_12202.sql
-r-x------ 1 oracle oinstall 12480 Apr 11 19:11 zdm_reload_query_19.sql
[oracle@exa02dbadm01 lib]$ ls -ld .
drwxrwxr-x 4 oracle oinstall 4096 May 8 11:32 .
Nachdem für die angezeigte die Berechtigung erhöht wurde, kommen für andere Dateien die Meldungen. Daher auf das ganze Verzeichnis rekursiv erhöhte Berechtigungen auf der Quelle vergeben:
chmod -R 770 /u01/app/oracle/zdm/zdm_AGZDM_EXA_22/zdm/
Fortsetzen des Jobs:
zdmcli resume job -jobid 22 -pauseafter ZDM_CONFIGURE_DG_SRC
Der Job läuft fehlerlos weiter.