When we decide to migrate a database using the zero-downtime migration method, the first thought that comes to mind is the long list of prerequisites. In this blog, I have a comprehensive list of the necessary checks and the expected results for a seamless migration using Zero Downtime Migration (ZDM).
During the preparation of this article, I kept the following specifications in mind:
-
Source and target database version: 11.2.0.4
-
Source and target OS version: RHEL 7
-
ZDM release used: 21.1
-
The firewall and required ports (443/1521/22) opened from the source and target environments.
ZDM method prechecks
You can migrate the following Oracle Database versions with ZDM:
-
Oracle Database 11g Release 2 (11.2.0.4)
-
Oracle Database 12c Release 1 (12.1.0.2)
-
Oracle Database 12c Release 2 (12.2.0.1)
-
Oracle Database 18c
-
Oracle Database 19c
-
Oracle Database 21c
-
All subsequent Oracle Database releases
-
Install the ZDM software on a Linux host running Oracle Linux 7. Have at least 100 GB of free space. Don’t run grid infrastructure on this server.
-
The ZDM server needs the following RPMs installed: glibc-devel/unzip/libaio/oraclelinux-developer-release-el7/expect.
-
The source database must be running in ARCHIVELOG mode.
-
Ensure that the character set on the source database is the same as the target database.
-
If the source is an Oracle RAC database, and SNAPSHOT CONTROLFILE is not on a shared location, configure SNAPSHOT CONTROLFILE to point to a shared location on all Oracle RAC nodes to avoid the ORA-00245 error during backups to Oracle Cloud Infrastructure Object Storage.
-
If the source database is deployed using OCI and the database isn’t registered using srvctl, register the database before the migration.
-
If the target database is Exadata Cloud service or Exadata Cloud@Customer, the database dbname must be the same as the source database dbname.
-
Specify a SYS password that matches the password of the source database.
-
Provision the target database from the Console without enabling automatic backups.
-
The target database time zone version must match the source database time zone version.
-
The ZDM server must connect to the source and the target database servers through SSH protocol through the SHH key, as shown in the following screenshot:

-
The ZDM server must be able to resolve the source and target database servers. One method is to add them in /etc/hosts on zdm server.

-
Turn off TTY so that zero-downtime migration can run commands on the remote hosts without interacting.

-
Connectivity between the source and target on the 22/1521 ports works like the following example:


-
SQL*Net connectivity using SCAN from the source to target and back works with the following output:


After all the prechecks complete successfully, you can run ZDM migration using the –eval option and do the actual migration.
Conclusion
If you want to read more on this topic, I encourage you to see the following resources that go into more detail:
-
MAA Practices for Cloud Migration Using ZDM (Doc ID 2562063.1)
-
[ZDM]: How to Migrate Database Instance From OCI-Classic to OCI Using Zero Downtime Migration software (Doc ID 2630892.1)