1) ZDM Svr Details
-- Requires one Server per tenancy
-- Provision a New Server
-- Create the pub and pvt keys for login
-- Provision a New Server
-- Create the pub and pvt keys for login
-- Create home and base directories.
The home directory is where the Zero Downtime Migration software will be installed.
-- if ZDM is already installed , stop current version & continue new version in a separate directory
-- This is required to prevent the MySQL port (8897) conflict between the old and current versions
-- Download the Zero Downtime Migration software kit from
The home directory is where the Zero Downtime Migration software will be installed.
The base directory is where all of the ZDMconfiguration files, logs, and other artifacts are stored.
-- Install the ZDM software -- if ZDM is already installed , stop current version & continue new version in a separate directory
-- This is required to prevent the MySQL port (8897) conflict between the old and current versions
-- Download the Zero Downtime Migration software kit from
ZDM Software Download
-- Switch the logs from primary and verify that they are getting synced at target.
To check status of a particular job : <ZDM_HOME>/bin/zdmcli query job -jobid <no#>
To resume particular job : <ZDM_HOME>/bin/zdmcli resume job -jobid <no#>
To stop a particular job : <ZDM_HOME>/bin/zdmcli abort job -jobid <no#>
To run in final mode :
2) Establish the connectivity
-- Setup the firewall rules for port 22 (ingress & egress) on ZDM,Target and Source DB -- Edit host file on zdm host/source db & target db to have each others entry
-- Configure ssh
from ZDM server -- password less login to source opc user
from ZDM server -- password less login to target opc user
SQL> show parameter fal
SQL> show parameter spfile
SQL> show parameter pfile
Verify sys password on source
Verify TDE
-- Configure ssh
from ZDM server -- password less login to source opc user
from ZDM server -- password less login to target opc user
3)Check connection to DB Port
-- Setup up firewall rules between source and target DB for port 1521
4)Ensure that Obj storage buckets are created and connections workconnectivity check
-- Curl version on source need to be updated when OS is 5.115) Ensure to stop any RMAN backup jobs and other jobs that clear archive logs.
6) Parameter checks
SQL> show parameter log_archSQL> show parameter fal
SQL> show parameter spfile
SQL> show parameter pfile
Verify sys password on source
Verify TDE
7) ZDM Response File creation.
vi /home/zdmuser/zdm_inst1/inst1.rsp change parameters
TGT_DB_UNIQUE_NAME= -- > chg accordingly
TGT_DATADG=+DATAC1 -- > verify
TGT_REDODG=+RECOC1 -- > verify
TGT_RECODG=+RECOC1 -- > verify
HOST= https://<swiftobjectstorage-url>/v1/<namespace>
OPC_CONTAINER= <bucketname> ---> chg accordingly
SKIP_FALLBACK=TRUE
SKIP_SRC_SERVICE_RETENTION=TRUE
SRC_RMAN_CHANNELS=x ( you can update the no.of channels based on CPUs and Load on server)
TGT_RMAN_CHANNELS=x ( you can update the no.of channels based on CPUs and Load on server)
<zdm_home>/bin/zdmcli migrate database -sourcedb <DBNAME> -sourcenode <Node1> -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:<ssh key location> -srcarg3 sudo_location:/usr/bin/sudo -targetnode <TargetN1> -backupuser <oss user> -rsp <responsefilepath> -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:<ssh key location> -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL -eval
to resume a job: <ZDM_HOME>/bin/zdmcli resume job -jobid <no#>
to stop a job: <ZDM_HOME>/bin/zdmcli abort job -jobid <no#>
TGT_DB_UNIQUE_NAME= -- > chg accordingly
TGT_DATADG=+DATAC1 -- > verify
TGT_REDODG=+RECOC1 -- > verify
TGT_RECODG=+RECOC1 -- > verify
HOST= https://<swiftobjectstorage-url>/v1/<namespace>
OPC_CONTAINER= <bucketname> ---> chg accordingly
SKIP_FALLBACK=TRUE
SKIP_SRC_SERVICE_RETENTION=TRUE
SRC_RMAN_CHANNELS=x ( you can update the no.of channels based on CPUs and Load on server)
TGT_RMAN_CHANNELS=x ( you can update the no.of channels based on CPUs and Load on server)
9 Data Migration -- Run in Eval and Final Modes
Eval Mode<zdm_home>/bin/zdmcli migrate database -sourcedb <DBNAME> -sourcenode <Node1> -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:<ssh key location> -srcarg3 sudo_location:/usr/bin/sudo -targetnode <TargetN1> -backupuser <oss user> -rsp <responsefilepath> -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:<ssh key location> -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL -eval
to resume a job: <ZDM_HOME>/bin/zdmcli resume job -jobid <no#>
to stop a job: <ZDM_HOME>/bin/zdmcli abort job -jobid <no#>
Final Mode
<zdm_home>/bin/zdmcli migrate database -sourcedb <DBNAME> -sourcenode <Node1> -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:<ssh key location> -srcarg3 sudo_location:/usr/bin/sudo -targetnode <TargetN1> -backupuser <oss user> -rsp <responsefilepath> -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:<ssh key location> -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL
<zdm_home>/bin/zdmcli migrate database -sourcedb <DBNAME> -sourcenode <Node1> -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:<ssh key location> -srcarg3 sudo_location:/usr/bin/sudo -targetnode <TargetN1> -backupuser <oss user> -rsp <responsefilepath> -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:<ssh key location> -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL
35 GB ZDM took -- 2 hrs
10 Verify
-- Check the gap of the archive log shipped and archived-- Switch the logs from primary and verify that they are getting synced at target.
ZDM Commands
To check the exact build info : <ZDM_HOME>/bin/zdmcli -build
To check the version : <ZDM_HOME>/bin/zdmcli -v
To start ZDM service : <ZDM_HOME>/bin/zdmservice startTo check status of a particular job : <ZDM_HOME>/bin/zdmcli query job -jobid <no#>
To resume particular job : <ZDM_HOME>/bin/zdmcli resume job -jobid <no#>
To stop a particular job : <ZDM_HOME>/bin/zdmcli abort job -jobid <no#>
To Install zdm :
zdminstall.sh setup oraclehome=<zdmhomepath> oraclebase=<zdmbasepath>/zdmbase_21_3 ziploc=<ZDM KIT HOME>/zdm_home.zip -zdm
To run in eval mode :
<zdm_home>/bin/zdmcli migrate database -sourcedb <DBNAME> -sourcenode <Node1> -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:<ssh key location> -srcarg3 sudo_location:/usr/bin/sudo -targetnode <TargetN1> -backupuser <oss user> -rsp <responsefilepath> -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:<ssh key location> -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL -eval
To run in final mode :
<zdm_home>/bin/zdmcli migrate database -sourcedb <DBNAME> -sourcenode <Node1> -srcauth zdmauth -srcarg1 user:opc -srcarg2 identity_file:<ssh key location> -srcarg3 sudo_location:/usr/bin/sudo -targetnode <TargetN1> -backupuser <oss user> -rsp <responsefilepath> -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:<ssh key location> -tgtarg3 sudo_location:/usr/bin/sudo -ignore ALL
ZDM_PRECHECKS_SRC
ZDM_PRECHECKS_TGT
ZDM_SETUP_SRC
ZDM_SETUP_TGT
ZDM_PREUSERACTIONS
ZDM_PREUSERACTIONS_TGT
ZDM_OBC_INST_SRC
ZDM_OBC_INST_TGT
ZDM_VALIDATE_SRC
ZDM_VALIDATE_TGT
ZDM_BACKUP_FULL_SRC
ZDM_BACKUP_INCREMENTAL_SRC
ZDM_DISCOVER_SRC
ZDM_COPYFILES
ZDM_PREPARE_TGT
ZDM_SETUP_TDE_TGT
ZDM_CLONE_TGT
ZDM_FINALIZE_TGT
ZDM_CONFIGURE_DG_SRC
ZDM_SWITCHOVER_SRC
ZDM_SWITCHOVER_TGT
ZDM_POST_DATABASE_OPEN_TGT
ZDM_DATAPATCH_TGT
ZDM_POST_MIGRATE_TGT
ZDM_POSTUSERACTIONS
ZDM_POSTUSERACTIONS_TGT
ZDM_CLEANUP_SRC
ZDM_CLEANUP_TGT
ZDM Phases
ZDM_GET_SRC_INFO
ZDM_GET_TGT_INFOZDM_PRECHECKS_SRC
ZDM_PRECHECKS_TGT
ZDM_SETUP_SRC
ZDM_SETUP_TGT
ZDM_PREUSERACTIONS
ZDM_PREUSERACTIONS_TGT
ZDM_OBC_INST_SRC
ZDM_OBC_INST_TGT
ZDM_VALIDATE_SRC
ZDM_VALIDATE_TGT
ZDM_BACKUP_FULL_SRC
ZDM_BACKUP_INCREMENTAL_SRC
ZDM_DISCOVER_SRC
ZDM_COPYFILES
ZDM_PREPARE_TGT
ZDM_SETUP_TDE_TGT
ZDM_CLONE_TGT
ZDM_FINALIZE_TGT
ZDM_CONFIGURE_DG_SRC
ZDM_SWITCHOVER_SRC
ZDM_SWITCHOVER_TGT
ZDM_POST_DATABASE_OPEN_TGT
ZDM_DATAPATCH_TGT
ZDM_POST_MIGRATE_TGT
ZDM_POSTUSERACTIONS
ZDM_POSTUSERACTIONS_TGT
ZDM_CLEANUP_SRC
ZDM_CLEANUP_TGT