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: 126.96.36.199
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.
You can migrate the following Oracle Database versions with ZDM:
Oracle Database 11g Release 2 (188.8.131.52)
Oracle Database 12c Release 1 (184.108.40.206)
Oracle Database 12c Release 2 (220.127.116.11)
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.
If you want to read more on this topic, I encourage you to see the following resources that go into more detail:
Arpit Aggarwal is a Senior Cloud Engineer, part of Cloud Engineering under Custom Apps and Database pillar with career spanning of 10+ years in Oracle technology.
Focus is on architecting cloud solution & migrating the workload from on premise to OCI for different customers.
Database Migrations to OCI.
HA/DR and Solution Architecture with ZDM and ZDLRA.
Oracle Enterprise Manager.
Hybrid DR, dataguard.