{"id":32197,"date":"2024-04-01T13:42:14","date_gmt":"2024-04-01T11:42:14","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=32197"},"modified":"2024-04-06T21:48:54","modified_gmt":"2024-04-06T19:48:54","slug":"zdm-physical-online-migration-a-success-story","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/","title":{"rendered":"ZDM Physical Online Migration &#8211; A success story"},"content":{"rendered":"\n<p>I have been recently blogging about ZDM Physical Online Migration where I was explaining this migration method and preparing customer On-Premises to ExaCC migration. See my blog, <a href=\"https:\/\/www.dbi-services.com\/blog\/physical-online-migration-to-exacc-with-oracle-zero-downtime-migration-zdm\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.dbi-services.com\/blog\/physical-online-migration-to-exacc-with-oracle-zero-downtime-migration-zdm\/<\/a>. I have now had the opportunity to migrate customer database and would like to share, in this blog, this success story.<\/p>\n\n\n<a class=\"wp-block-read-more\" href=\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\" target=\"_self\">Read more<span class=\"screen-reader-text\">: ZDM Physical Online Migration &#8211; A success story<\/span><\/a>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-clarifications\">Clarifications<\/h2>\n\n\n\n<p>First of all, I would encourage you to read the previous mentioned blog to understand the requirements, the preparation steps, the migration steps and the parameters used during ZDM Physical Online Migration. This blog is not intended to reexplain the same information already presented in the previous one, but just to show in detail the success story of the migration, and how the migration has been performed.<\/p>\n\n\n\n<p>Compared to the previous migration preparation, detailed in previous blog, there are 3 parameters that we are not going to finally activate:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SKIP_FALLBACK: In fact, even in this migration method, there is no real fallback possible, and if a real fallback is needed, it will have to be put in place by the user. When I&#8217;m talking about fallback, I think about having customer the possibility after a few days of using the new environment in production to switch back to the previous on-premises environment, in case there is, for example, any performance problem. In our case here, with ZDM migration, it will anyhow not be possible, knowing we are converting the non-cdb on-premises database to a pdb database on the new ExaCC. Building a Data Guard environment between a non-cdb and a cdb environment is in any case not possible. In our case, we did some dry run, giving customer the possibility to test the new ExaCC environment before the migration, to ensure all is ok, performance wise and so on. In our procedure, we will include a fallback, but this fallback will give the possibility to activate again the on-premises database in case the application tests is not successful after the migration and before putting the new PDB on the ExaCC in production.<\/li>\n\n\n\n<li>TGT_RETAIN_DB_UNIQUE_NAME: This is in fact a legacy parameter that was mandatory for the first generation of the ExaCC, because the platform was setting db_unique_name the same as dbname. This parameter is now not needed any more and is deprecated.<\/li>\n\n\n\n<li>TGT_SKIP_DATAPATCH: We faced several bugs having the source database in 19.10 or 19.16. We have then decided to patch the on-premises source database to the same last version as running on the ExaCC, that is to say 19.22. In this case, we do not need this datapatch steps, and we will then set this one to true value, in order to skip it.  <\/li>\n<\/ul>\n\n\n\n<p>Finally, I would like to recall that I have anonymised all outputs to remove customer infrastructure names. So let\u2019s take the same previous convention :<br>ExaCC Cluster 01 node 01 : ExaCC-cl01n1<br>ExaCC Cluster 01 node 02 : ExaCC-cl01n2<br>On premises Source Host : vmonpr<br>Target db_unique_name on the ExaCC : ONPR_RZ2<br>Database Name to migrate : ONPR<br>ZDM Host : zdmhost<br>ZDM user : zdmuser<br>Domain : domain.com<br>ExaCC PDB to migrate to : ONPRZ_APP_001T<\/p>\n\n\n\n<p>The on-premise database is a single-tenant (non-cdb) database running version 19.22.<br>The target database is an Oracle RAC database running on ExaCC with Oracle version 19.22.<br>The Oracle Net port used on the on-premise site is 13000 and the Oracle Net port used on the ExaCC is 1521.<br>We will use ZDM to migrate the on-premise single-tenant database, to a PDB within a CDB. ZDM will then be in charge of migrating the database to the exacc using Data Guard, convert non-cdb database to pdb within a target cdb, upgrade Time Zone. The creation of the standby database will be done through a direct connection. Without any backup.<br>We will then migrate on-premises Single-Tenant database, named ONPR, to a PDB on the ExaCC. The PDB will be named ONPRZ_APP_001T.<\/p>\n\n\n\n<p><strong>It is also mandatory to have a valid backup of the source database, before we start the migration in the maintenance windows, in case we are having any issue during fallback.<\/strong> In any case it is always mandatory for any migration, patch or upgrade to have a valid backup of the production database.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-zdm-patch-version\">ZDM patch version<\/h2>\n\n\n\n<p>We were initially using 21.1.4.0.0 ZDM version:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli -build \nversion: 21.0.0.0.0 \nfull version: 21.4.0.0.0 \npatch version: 21.4.1.0.0 \nlabel date: 221207.25 \nZDM kit build date: Jul 31 2023 14:24:25 UTC \nCPAT build version: 23.7.0\n<\/pre>\n<\/br>\n\n\n\n<p>But we faced a major bug, where ZDM was incorrectly exporting database master key into the new ExaCC wallet. The migration was failing with following error once ZDM was trying to open the new created PDB: <br><code>ALTER PLUGGABLE DATABASE OPEN<br>*<br>ERROR at line 1:<br>ORA-28374: typed master key not found in wallet<\/code><\/p>\n\n\n\n<p>Checking the masterkeyid from v$database_key_info, and the recorded key in the keystore, I could confirm that on the source, the database master key was correctly recorded in the keystore, but not on the target side. This was later confirmed to be a ZDM bug solved in last patch: 21.4.5.0.0 that was just released.<\/p>\n\n\n\n<p>We patched ZDM software on the ZDM host, and are now running following version:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli -build\nversion: 21.0.0.0.0\nfull version: 21.4.0.0.0\npatch version: 21.4.5.0.0\nlabel date: 221207.30\nZDM kit build date: Mar 21 2024 22:07:12 UTC\nCPAT build version: 23.12.0\n<\/pre>\n<\/br>\n\n\n\n<p>As we can see later in the blog, this new version is bringing some new bugs that we can easily workaround.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-prepare-zdm-response-file\">Prepare ZDM response file<\/h2>\n\n\n\n<p>We have been configuring accordingly following parameters in the response file. For any explanation of used parameter, read my previous mentioned article.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3]\">\n[zdmuser@zdmhost migration]$ vi zdm_ONPR_physical_online.rsp\n\n[zdmuser@zdmhost migration]$ diff zdm_ONPR_physical_online.rsp \/u01\/app\/oracle\/product\/zdm\/rhp\/zdm\/template\/zdm_template.rsp\n24c24\n&lt; TGT_DB_UNIQUE_NAME=ONPR_RZ2\n---\n&gt; TGT_DB_UNIQUE_NAME=\n32c32\n&lt; MIGRATION_METHOD=ONLINE_PHYSICAL\n---\n&gt; MIGRATION_METHOD=\n63c63\n&lt; DATA_TRANSFER_MEDIUM=DIRECT\n---\n&gt; DATA_TRANSFER_MEDIUM=\n75c75\n&lt; PLATFORM_TYPE=EXACC\n---\n&gt; PLATFORM_TYPE=\n119c119\n&lt; SRC_DB_LISTENER_PORT=13000\n---\n&gt; SRC_DB_LISTENER_PORT=\n230c230\n&lt; NONCDBTOPDB_CONVERSION=TRUE\n---\n&gt; NONCDBTOPDB_CONVERSION=FALSE\n252c252\n&lt; SKIP_FALLBACK=TRUE\n---\n&gt; SKIP_FALLBACK=\n268c268\n&lt; TGT_RETAIN_DB_UNIQUE_NAME=FALSE\n---\n&gt; TGT_RETAIN_DB_UNIQUE_NAME=\n279c279\n&lt; TGT_SKIP_DATAPATCH=TRUE\n---\n&gt; TGT_SKIP_DATAPATCH=FALSE\n312c312\n&lt; SHUTDOWN_SRC=FALSE\n---\n&gt; SHUTDOWN_SRC=\n333c333\n&lt; SRC_RMAN_CHANNELS=2\n---\n&gt; SRC_RMAN_CHANNELS=\n340c340\n&lt; TGT_RMAN_CHANNELS=2\n---\n&gt; TGT_RMAN_CHANNELS=\n526c526\n&lt; ZDM_USE_DG_BROKER=TRUE\n---\n&gt; ZDM_USE_DG_BROKER=\n574c574\n&lt; ZDM_NONCDBTOPDB_PDB_NAME=ONPRZ_APP_001T\n---\n&gt; ZDM_NONCDBTOPDB_PDB_NAME=\n595c595\n&lt; ZDM_TGT_UPGRADE_TIMEZONE=TRUE\n---\n&gt; ZDM_TGT_UPGRADE_TIMEZONE=FALSE\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-passwordless-login\">Passwordless Login<\/h2>\n\n\n\n<p>See my previous blogs for more information about this subject. It is mandatory for ZDM to have passwordless login configured between ZDM host and the source and target nodes.<\/p>\n\n\n\n<p>For both ExaCC nodes, it was already done:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,5]\">\n[zdmuser@zdmhost migration]$ ssh opc@ExaCC-cl01n1\nLast login: Wed Mar 20 10:44:09 2024 from 10.160.52.122\n[opc@ExaCC-cl01n1 ~]$ \n\n[zdmuser@zdmhost migration]$ ssh opc@ExaCC-cl01n2\nLast login: Wed Mar 20 10:32:33 2024 from 10.160.52.122\n[opc@ExaCC-cl01n2 ~]$ \n<\/pre>\n<\/br>\n\n\n\n<p>For new on-premises database, we configured it with the source node, adding the id_rsa.pub content from the ZDM host to the authorized_keys on the source:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,5]\">\n[zdmuser@zdmhost .ssh]$ cat id_rsa.pub\nssh-rsa AAAAB3**************************3CW20= zdmuser@zdmhost\n[zdmuser@zdmhost .ssh]$\n\noracle@vmonpr:\/home\/oracle\/.ssh\/ [ONPR] echo \"ssh-rsa AAAAB3*******************3CW20= zdmuser@zdmhost\" &gt;&gt; authorized_keys\n<\/pre>\n<\/br>\n\n\n\n<p>Checking, it is working as expected:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost .ssh]$ ssh oracle@vmonpr\nLast login: Wed Mar 20 11:33:46 2024\noracle@vmonpr:\/home\/oracle\/ [RDBMS12201_EE_190716]\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-create-target-database-on-the-exacc\">Create target database on the ExaCC<\/h2>\n\n\n\n<p>As explained in the requirements and my other blog articles, we must create a target CDB on the ExaCC with same DB_NAME as the source database to be migrated but other DB_UNIQUE_NAME. In our case it will be ONPR for the DB_NAME and ONPR_RZ2 for the DB_UNIQUE_NAME. This database must exist before the migration is started with ZDM. ZDM will create another temporary database taking the final PDB name and will use this target CDB as a template.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-convert-exacc-target-database-to-single-instance\">Convert ExaCC target database to single instance<\/h2>\n\n\n\n<p>The target database on the ExaCC is a RAC database with 2 hosts. So we have got 2 instances for the same database. We therefore have 2 UNDO tablespaces. The on-premises database is a single instance one, so having currently only 1 UNDO tablespace. In order to avoid ZDM to create an additional UNDO tablespace on the on-premises single instance database, we will convert the target database from RAC to single instance.<\/p>\n\n\n\n<p>We will first update cluster_database instance parameter to false value.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,8]\">\nSQL&gt; select inst_id, name, value from gv$parameter where lower(name)='cluster_database';\n\n   INST_ID NAME                 VALUE\n---------- -------------------- ---------------\n         2 cluster_database     TRUE\n         1 cluster_database     TRUE\n\nSQL&gt; alter system set cluster_database=FALSE scope=spfile sid='*';\n\nSystem altered.\n<\/pre>\n<\/br>\n\n\n\n<p>We will stop the target database:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,5,7]\">\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_RZ2\nInstance ONPR1 is running on node ExaCC-cl01n1\nInstance ONPR2 is running on node ExaCC-cl01n2\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl stop database -d ONPR_RZ2\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_RZ2\nInstance ONPR1 is not running on node ExaCC-cl01n1\nInstance ONPR2 is not running on node ExaCC-cl01n2\n<\/pre>\n<\/br>\n\n\n\n<p>And remove the second node from the grid infra configuration:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl remove instance -d ONPR_RZ2 -i ONPR2\nRemove instance from the database ONPR_RZ2? (y\/[n]) y\n<\/pre>\n<\/br>\n\n\n\n<p>And restart the database:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3]\">\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl start database -d ONPR_RZ2\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_RZ2\nInstance ONPR1 is running on node ExaCC-cl01n1\n<\/pre>\n<\/br>\n\n\n\n<p>We can also check with gv$parameter and see we only have one running instance:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,13]\">\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] sqh\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Wed Mar 20 10:51:33 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production\nVersion 19.22.0.0.0\n\nSQL&gt; select inst_id, name, value from gv$parameter where lower(name)='cluster_database';\n\n   INST_ID NAME                 VALUE\n---------- -------------------- ---------------\n         1 cluster_database     FALSE\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configure-transparent-data-encyption-tde-on-the-source-database\">Configure Transparent Data Encyption (TDE) on the source database<\/h2>\n\n\n\n<p>See my previous blog for detailed explanation.<\/p>\n\n\n\n<p><strong>In our case, knowing we do not have any Oracle Advanced Security License for our on-premise, we will ensure to set the TABLESPACE_ENCRYPTION instance parameter to DECRYPT_ONLY value and ensure to set the ENCRYPT_NEW_TABLESPACES on either CLOUD_ONLY or DDL value.<\/strong><\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,6,8,12,17,28,34,38,44,48,52,58,62,68,72,77,81,85,91,97,103,107,112,123]\">\nSQL&gt; !ls \/u00\/app\/oracle\/admin\/ONPR\/wallet\nls: cannot access \/u00\/app\/oracle\/admin\/ONPR\/wallet: No such file or directory\n\nSQL&gt; !mkdir \/u00\/app\/oracle\/admin\/ONPR\/wallet\n\nSQL&gt; !ls \/u00\/app\/oracle\/admin\/ONPR\/wallet\n\nSQL&gt; alter system set WALLET_ROOT='\/u00\/app\/oracle\/admin\/ONPR\/wallet' scope=spfile;\n\nSystem altered.\n\nSQL&gt; shutdown immediate\nDatabase closed.\nDatabase dismounted.\nORACLE instance shut down.\n\nSQL&gt; startup\nORACLE instance started.\n\nTotal System Global Area 2147479664 bytes\nFixed Size                  8941680 bytes\nVariable Size            1224736768 bytes\nDatabase Buffers          905969664 bytes\nRedo Buffers                7831552 bytes\nDatabase mounted.\nDatabase opened.\n\nSQL&gt; select WRL_PARAMETER, WRL_TYPE,WALLET_TYPE, status from V$ENCRYPTION_WALLET;\n\nWRL_PARAMETER                  WRL_TYPE             WALLET_TYPE          STATUS\n------------------------------ -------------------- -------------------- ------------------------------\n                               FILE                 UNKNOWN              NOT_AVAILABLE\n\nSQL&gt; alter system set tde_configuration='keystore_configuration=FILE' scope=both;\n\nSystem altered.\n\nSQL&gt; select WRL_PARAMETER, WRL_TYPE,WALLET_TYPE, status from V$ENCRYPTION_WALLET;\n\nWRL_PARAMETER                                      WRL_TYPE             WALLET_TYPE          STATUS\n-------------------------------------------------- -------------------- -------------------- ------------------------------\n\/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\/             FILE                 UNKNOWN              NOT_AVAILABLE\n\nSQL&gt; ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY \"*****************\";\n\nkeystore altered.\n\nSQL&gt; !ls -ltrh \/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\ntotal 4.0K\n-rw-------. 1 oracle dba 2.5K Mar 20 11:11 ewallet.p12\n\nSQL&gt; select WRL_PARAMETER, WRL_TYPE,WALLET_TYPE, status from V$ENCRYPTION_WALLET;\n\nWRL_PARAMETER                                      WRL_TYPE             WALLET_TYPE          STATUS\n-------------------------------------------------- -------------------- -------------------- ------------------------------\n\/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\/             FILE                 UNKNOWN              CLOSED\n\nSQL&gt; ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY \"*****************\";\n\nkeystore altered.\n\nSQL&gt; select WRL_PARAMETER, WRL_TYPE,WALLET_TYPE, status from V$ENCRYPTION_WALLET;\n\nWRL_PARAMETER                                      WRL_TYPE             WALLET_TYPE          STATUS\n-------------------------------------------------- -------------------- -------------------- ------------------------------\n\/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\/             FILE                 PASSWORD             OPEN_NO_MASTER_KEY\n\nSQL&gt; ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY \"***************\" with backup;\n\nkeystore altered.\n\nSQL&gt; !ls -ltrh \/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\ntotal 8.0K\n-rw-------. 1 oracle dba 2.5K Mar 20 11:14 ewallet_2024032010143867.p12\n-rw-------. 1 oracle dba 3.9K Mar 20 11:14 ewallet.p12\n\nSQL&gt; ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '\/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\/' IDENTIFIED BY \"*****************\";\n\nkeystore altered.\n\nSQL&gt; ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY \"****************\";\n\nkeystore altered.\n\nSQL&gt; select WRL_PARAMETER, WRL_TYPE,WALLET_TYPE, status from V$ENCRYPTION_WALLET;\n\nWRL_PARAMETER                                      WRL_TYPE             WALLET_TYPE          STATUS\n-------------------------------------------------- -------------------- -------------------- ------------------------------\n\/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\/             FILE                 AUTOLOGIN            OPEN\n\nSQL&gt; !ls -ltrh \/u00\/app\/oracle\/admin\/ONPR\/wallet\/tde\ntotal 12K\n-rw-------. 1 oracle dba 2.5K Mar 20 11:14 ewallet_2024032010143867.p12\n-rw-------. 1 oracle dba 3.9K Mar 20 11:14 ewallet.p12\n-rw-------. 1 oracle dba 4.0K Mar 20 11:15 cwallet.sso\n\nSQL&gt; show parameter tablespace_encryption\n\nNAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\ntablespace_encryption                string      MANUAL_ENABLE\n\nSQL&gt; alter system set tablespace_encryption='decrypt_only' scope=spfile;\n\nSystem altered.\n\nSQL&gt; shutdown immediate\nDatabase closed.\nDatabase dismounted.\nORACLE instance shut down.\n\nSQL&gt; startup\nORACLE instance started.\n\nTotal System Global Area 2147479664 bytes\nFixed Size                  8941680 bytes\nVariable Size            1224736768 bytes\nDatabase Buffers          905969664 bytes\nRedo Buffers                7831552 bytes\nDatabase mounted.\nDatabase opened.\n\nSQL&gt; show parameter encrypt\n\nNAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\nencrypt_new_tablespaces              string      DDL\ntablespace_encryption                string      DECRYPT_ONLY\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-update-source-database-sys-password\">Update source database SYS password<\/h2>\n\n\n\n<p>Source database SYS password should match target one.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nSQL&gt; alter user sys identified by \"********\";\n\nUser altered.\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-update-listener-configuration-on-the-source\">Update listener configuration on the source<\/h2>\n\n\n\n<p>The source database is not a grid infra one. A static DGMGRL entry is then mandatory for Data Guard to restart old primary during a switchover operation. Unfortunately, ZDM does not configure it on his side.<\/p>\n\n\n\n<p>We will add following entry into the source listener:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SID_LIST_lsr1ONPR =\n  (SID_LIST =\n    (SID_DESC =\n      (GLOBAL_DBNAME = ONPR_DGMGRL.domain.com)\n      (ORACLE_HOME = \/u00\/app\/oracle\/product\/19.22.0.0.240116.EE)\n      (SID_NAME = ONPR)\n    )\n  )<\/code><\/pre>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,8,10,12,25,34]\">\noracle@vmonpr:\/u00\/app\/oracle\/product\/19.22.0.0.240116.EE\/network\/admin\/ [ONPR] ls -l\ntotal 0\nlrwxrwxrwx. 1 oracle dba 38 Mar  8 09:46 ldap.ora -&gt; \/u00\/app\/oracle\/network\/admin\/ldap.ora\nlrwxrwxrwx. 1 oracle dba 45 Mar  8 09:46 listener.ora -&gt; \/u00\/app\/oracle\/network\/admin\/listenerV12.ora\nlrwxrwxrwx. 1 oracle dba 40 Mar  8 10:50 sqlnet.ora -&gt; \/u00\/app\/oracle\/network\/admin\/sqlnet.ora\nlrwxrwxrwx. 1 oracle dba 42 Mar  8 09:46 tnsnames.ora -&gt; \/u00\/app\/oracle\/network\/admin\/tnsnames.ora\n\noracle@vmonpr:\/u00\/app\/oracle\/network\/admin\/ [ONPR] cp -p listenerV12.ora listenerV12.ora.bak.20240320\n\noracle@vmonpr:\/u00\/app\/oracle\/network\/admin\/ [ONPR] vil\n\noracle@vmonpr:\/u00\/app\/oracle\/network\/admin\/ [ONPR] diff listenerV12.ora listenerV12.ora.bak.20240320\n85,94d84\n&lt; # For ZDM Migration\n&lt; SID_LIST_lsr1ONPR =\n&lt;   (SID_LIST =\n&lt;     (SID_DESC =\n&lt;       (GLOBAL_DBNAME = ONPR_DGMGRL.domain.com)\n&lt;       (ORACLE_HOME = \/u00\/app\/oracle\/product\/19.22.0.0.240116.EE)\n&lt;       (SID_NAME = ONPR)\n&lt;     )\n&lt;   )\n&lt;\n\noracle@vmonpr:\/u00\/app\/oracle\/network\/admin\/ [ONPR] lsnrctl reload lsr1ONPR\n\nLSNRCTL for Linux: Version 19.0.0.0.0 - Production on 20-MAR-2024 14:15:41\n\nCopyright (c) 1991, 2023, Oracle.  All rights reserved.\n\nConnecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vmonpr.domain.com)(PORT=13000)))\nThe command completed successfully\n\noracle@vmonpr:\/u00\/app\/oracle\/network\/admin\/ [ONPR] lsnrctl status lsr1ONPR | grep -i dgmgrl\nService &quot;ONPR_DGMGRL.domain.com&quot; has 1 instance(s).\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-archived-log\">Archived log<\/h2>\n\n\n\n<p>Data Guard is using the REDO vector to synchronise the standby database. It is then mandatory to keep available, during the whole migration process, the archived log files that have not been applied on the standby database.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-checking-target-space\">Checking target space<\/h2>\n\n\n\n<p>We need to check that there is enough space in the DATA disk group of the ASM at the ExaCC side.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3]\">\n[grid@ExaCC-cl01n1 ~]$ asmcmd\n\nASMCMD&gt; lsdg\nState    Type  Rebal  Sector  Logical_Sector  Block       AU   Total_MB    Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name\nMOUNTED  HIGH  N         512             512   4096  4194304   43409664   16203032                0         5401010              0             Y  DATAC1\/\nMOUNTED  HIGH  N         512             512   4096  4194304   14469120   13175436                0         4391812              0             N  RECOC1\/\nMOUNTED  HIGH  N         512             512   4096  4194304  144691200  144688128                0        48229376              0             N  SPRC1\/\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-run-an-evaluation-of-the-migration\">Run an evaluation of the migration<\/h2>\n\n\n\n<p>Before running the migration it is mandatory to test it. This is done by using the option -eval.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -eval\nzdmhost.domain.com: Audit ID: 1138\nEnter source database ONPR SYS password:\nEnter source database ONPR TDE keystore password:\nEnter target container database TDE keystore password:\nzdmhost: 2024-03-22T13:04:06.449Z : Processing response file ...\nOperation \"zdmcli migrate database\" scheduled with the job ID \"73\".\n<\/pre>\n<\/br>\n\n\n\n<p>Checking the job we can see that it is in the current status SUCCEEDED and that all precheck phases have been passed successfully.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,9]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli query job -jobid 73\nzdmhost.domain.com: Audit ID: 1146\nJob ID: 73\nUser: zdmuser\nClient: zdmhost\nJob Type: \"EVAL\"\nScheduled job command: \"zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -eval\"\nScheduled job execution start time: 2024-03-22T14:04:06+01. Equivalent local time: 2024-03-22 14:04:06\nCurrent status: SUCCEEDED\nResult file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-73-2024-03-22-14:04:13.log\"\nMetrics file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-73-2024-03-22-14:04:13.json\"\nJob execution start time: 2024-03-22 14:04:13\nJob execution end time: 2024-03-22 14:25:20\nJob execution elapsed time: 9 minutes 13 seconds\nZDM_GET_SRC_INFO ........... PRECHECK_PASSED\nZDM_GET_TGT_INFO ........... PRECHECK_PASSED\nZDM_PRECHECKS_SRC .......... PRECHECK_PASSED\nZDM_PRECHECKS_TGT .......... PRECHECK_PASSED\nZDM_SETUP_SRC .............. PRECHECK_PASSED\nZDM_SETUP_TGT .............. PRECHECK_PASSED\nZDM_PREUSERACTIONS ......... PRECHECK_PASSED\nZDM_PREUSERACTIONS_TGT ..... PRECHECK_PASSED\nZDM_VALIDATE_SRC ........... PRECHECK_PASSED\nZDM_VALIDATE_TGT ........... PRECHECK_PASSED\nZDM_POSTUSERACTIONS ........ PRECHECK_PASSED\nZDM_POSTUSERACTIONS_TGT .... PRECHECK_PASSED\nZDM_CLEANUP_SRC ............ PRECHECK_PASSED\nZDM_CLEANUP_TGT ............ PRECHECK_PASSED\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-run-the-migration-and-pause-after-zdm-configure-dg-src-phase\">Run the migration and pause after ZDM_CONFIGURE_DG_SRC phase<\/h2>\n\n\n\n<p>We will now start the migration until Data Guard is setup. We will then run the migration and pause it after Data Guard is configured, using the option <code>-pauseafter ZDM_CONFIGURE_DG_SRC<\/code>.<\/p>\n\n\n\n<p>This will allow us to prepare the migration, have the standby database created on the ExaCC and Data Guard configured with no downtime. We do not need any maintenance window to perform this part of the migration.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -pauseafter ZDM_CONFIGURE_DG_SRC\nzdmhost.domain.com: Audit ID: 1156\nEnter source database ONPR SYS password:\nEnter source database ONPR TDE keystore password:\nEnter target container database TDE keystore password:\nzdmhost: 2024-03-22T14:29:56.176Z : Processing response file ...\nOperation \"zdmcli migrate database\" scheduled with the job ID \"75\".\n<\/pre>\n<\/br>\n\n\n\n<p>Checking the job we can see it is failing at the restore phase.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,9,29]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli query job -jobid 75\nzdmhost.domain.com: Audit ID: 1160\nJob ID: 75\nUser: zdmuser\nClient: zdmhost\nJob Type: \"MIGRATE\"\nScheduled job command: \"zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -pauseafter ZDM_CONFIGURE_DG_SRC\"\nScheduled job execution start time: 2024-03-22T15:29:56+01. Equivalent local time: 2024-03-22 15:29:56\nCurrent status: FAILED\nResult file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.log\"\nMetrics file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.json\"\nJob execution start time: 2024-03-22 15:30:13\nJob execution end time: 2024-03-22 15:41:05\nJob execution elapsed time: 8 minutes 2 seconds\nZDM_GET_SRC_INFO ................ COMPLETED\nZDM_GET_TGT_INFO ................ COMPLETED\nZDM_PRECHECKS_SRC ............... COMPLETED\nZDM_PRECHECKS_TGT ............... COMPLETED\nZDM_SETUP_SRC ................... COMPLETED\nZDM_SETUP_TGT ................... COMPLETED\nZDM_PREUSERACTIONS .............. COMPLETED\nZDM_PREUSERACTIONS_TGT .......... COMPLETED\nZDM_VALIDATE_SRC ................ COMPLETED\nZDM_VALIDATE_TGT ................ COMPLETED\nZDM_DISCOVER_SRC ................ COMPLETED\nZDM_COPYFILES ................... COMPLETED\nZDM_PREPARE_TGT ................. COMPLETED\nZDM_SETUP_TDE_TGT ............... COMPLETED\nZDM_RESTORE_TGT ................. FAILED\nZDM_RECOVER_TGT ................. PENDING\nZDM_FINALIZE_TGT ................ PENDING\nZDM_CONFIGURE_DG_SRC ............ PENDING\nZDM_SWITCHOVER_SRC .............. PENDING\nZDM_SWITCHOVER_TGT .............. PENDING\nZDM_POST_DATABASE_OPEN_TGT ...... PENDING\nZDM_NONCDBTOPDB_PRECHECK ........ PENDING\nZDM_NONCDBTOPDB_CONVERSION ...... PENDING\nZDM_POST_MIGRATE_TGT ............ PENDING\nTIMEZONE_UPGRADE_PREPARE_TGT .... PENDING\nTIMEZONE_UPGRADE_TGT ............ PENDING\nZDM_POSTUSERACTIONS ............. PENDING\nZDM_POSTUSERACTIONS_TGT ......... PENDING\nZDM_CLEANUP_SRC ................. PENDING\nZDM_CLEANUP_TGT ................. PENDING\n\nPause After Phase: \"ZDM_CONFIGURE_DG_SRC\"\n<\/pre>\n<\/br>\n\n\n\n<p>ZDM logs is showing following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PRGO-4086 : failed to query the \"VERSION\" details from the view \"V$INSTANCE\" for database \"ONPRZ_APP_001T\"\nSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 13:34:55 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\nConnected to an idle instance.\n\nalter session set NLS_LANGUAGE='AMERICAN'\n*\nERROR at line 1:\nORA-01034: ORACLE not available\nProcess ID: 0\nSession ID: 0 Serial number: 0<\/code><\/pre>\n\n\n\n<p>This is due to a new bug on the latest ZDM patch, where ZDM is incorrectly setting audit_trail instance parameter for the temporary instance called ONPRZ_APP_001T (final PDB name). As we can see the parameter is set to EXTENDED, which is absolutely not possible. It is either DB or DB, EXTENDED. EXTENDED alone is not an approrpriate value. This is why the instance can not be started.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nSQL&gt; !strings \/u02\/app\/oracle\/product\/19.0.0.0\/dbhome_1\/dbs\/spfileONPRZ_APP_001T1.ora | grep -i audit_trail\n*.audit_trail='EXTENDED'\n<\/pre>\n<\/br>\n\n\n\n<p>On the source database, the parameter is set as:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nSQL&gt; show parameter audit_trail\n\nNAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\naudit_trail                          string      DB, EXTENDED\n<\/pre>\n<\/br>\n\n\n\n<p>And on the target database, the parameter is set as:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nSQL&gt; show parameter audit_trail\n\nNAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\naudit_trail                          string      DB\n<\/pre>\n<\/br>\n\n\n\n<p>So we just need to create a pfile from spfile, update it accordingly and set back the spfile from updated pfile.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,5,7,10]\">\nSQL&gt; create pfile='\/tmp\/initONPRZ_APP_001T1_prob.ora' from spfile='\/u02\/app\/oracle\/product\/19.0.0.0\/dbhome_1\/dbs\/spfileONPRZ_APP_001T1.ora';\n\nFile created.\n\nSQL&gt; !vi \/tmp\/initONPRZ_APP_001T1_prob.ora\n\nSQL&gt; !grep -i audit_trail \/tmp\/initONPRZ_APP_001T1_prob.ora\n*.audit_trail='DB','EXTENDED'\n\nSQL&gt; create spfile='\/u02\/app\/oracle\/product\/19.0.0.0\/dbhome_1\/dbs\/spfileONPRZ_APP_001T1.ora' from pfile='\/tmp\/initONPRZ_APP_001T1_prob.ora';\n\nFile created.\n<\/pre>\n<\/br>\n\n\n\n<p>And we will resume ZDM job.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli resume job -jobid 75\nzdmhost.domain.com: Audit ID: 1163\n<\/pre>\n<\/br>\n\n\n\n<p>Checking the job, we can see that all phases until switchover have been completed successfully, and the job is in pause status.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,9,33]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli query job -jobid 75\nzdmhost.domain.com: Audit ID: 1164\nJob ID: 75\nUser: zdmuser\nClient: zdmhost\nJob Type: \"MIGRATE\"\nScheduled job command: \"zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -pauseafter ZDM_CONFIGURE_DG_SRC\"\nScheduled job execution start time: 2024-03-22T15:29:56+01. Equivalent local time: 2024-03-22 15:29:56\nCurrent status: PAUSED\nCurrent Phase: \"ZDM_CONFIGURE_DG_SRC\"\nResult file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.log\"\nMetrics file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.json\"\nJob execution start time: 2024-03-22 15:30:13\nJob execution end time: 2024-03-22 16:32:20\nJob execution elapsed time: 19 minutes 44 seconds\nZDM_GET_SRC_INFO ................ COMPLETED\nZDM_GET_TGT_INFO ................ COMPLETED\nZDM_PRECHECKS_SRC ............... COMPLETED\nZDM_PRECHECKS_TGT ............... COMPLETED\nZDM_SETUP_SRC ................... COMPLETED\nZDM_SETUP_TGT ................... COMPLETED\nZDM_PREUSERACTIONS .............. COMPLETED\nZDM_PREUSERACTIONS_TGT .......... COMPLETED\nZDM_VALIDATE_SRC ................ COMPLETED\nZDM_VALIDATE_TGT ................ COMPLETED\nZDM_DISCOVER_SRC ................ COMPLETED\nZDM_COPYFILES ................... COMPLETED\nZDM_PREPARE_TGT ................. COMPLETED\nZDM_SETUP_TDE_TGT ............... COMPLETED\nZDM_RESTORE_TGT ................. COMPLETED\nZDM_RECOVER_TGT ................. COMPLETED\nZDM_FINALIZE_TGT ................ COMPLETED\nZDM_CONFIGURE_DG_SRC ............ COMPLETED\nZDM_SWITCHOVER_SRC .............. PENDING\nZDM_SWITCHOVER_TGT .............. PENDING\nZDM_POST_DATABASE_OPEN_TGT ...... PENDING\nZDM_NONCDBTOPDB_PRECHECK ........ PENDING\nZDM_NONCDBTOPDB_CONVERSION ...... PENDING\nZDM_POST_MIGRATE_TGT ............ PENDING\nTIMEZONE_UPGRADE_PREPARE_TGT .... PENDING\nTIMEZONE_UPGRADE_TGT ............ PENDING\nZDM_POSTUSERACTIONS ............. PENDING\nZDM_POSTUSERACTIONS_TGT ......... PENDING\nZDM_CLEANUP_SRC ................. PENDING\nZDM_CLEANUP_TGT ................. PENDING\n\nPause After Phase: \"ZDM_CONFIGURE_DG_SRC\"\n<\/pre>\n<\/br>\n\n\n\n<p>We can check and confirm that the standby (ExaCC) is configured with the primary (on-premises) with no gap.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,9,13,21,22]\">\noracle@vmonpr:\/home\/oracle\/ [ONPR] dgmgrl\nDGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Mar 22 16:40:23 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2019, Oracle and\/or its affiliates.  All rights reserved.\n\nWelcome to DGMGRL, type \"help\" for information.\n\nDGMGRL&gt; connect \/\nConnected to \"ONPR\"\nConnected as SYSDG.\n\nDGMGRL&gt; show configuration lag\n\nConfiguration - ZDM_onpr\n\n  Protection Mode: MaxPerformance\n  Members:\n  onpr           - Primary database\n    onprz_app_001t - Physical standby database\n                     Transport Lag:      0 seconds (computed 1 second ago)\n                     Apply Lag:          0 seconds (computed 1 second ago)\n\nFast-Start Failover:  Disabled\n\nConfiguration Status:\nSUCCESS   (status updated 22 seconds ago)\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-run-the-migration-and-pause-after-zdm-switchover-tgt-phase-switchover\">Run the migration and pause after ZDM_SWITCHOVER_TGT phase (switchover)<\/h2>\n\n\n\n<p>We now need the maintenance windows. We will now have ZDM run a switchover. For this, we just need to resume the job and pause it after ZDM_SWITCHOVER_TGT phase.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli resume job -jobid 75 -pauseafter ZDM_SWITCHOVER_TGT\nzdmhost.domain.com: Audit ID: 1165\n<\/pre>\n<\/br>\n\n\n\n<p>If we check the job status, we can see that the job is failing on the ZDM_SWITCHOVER_SRC phase.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,9,33]\">\n[zdmuser@zdmhost migration]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli query job -jobid 75\nzdmhost.domain.com: Audit ID: 1166\nJob ID: 75\nUser: zdmuser\nClient: zdmhost\nJob Type: \"MIGRATE\"\nScheduled job command: \"zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -pauseafter ZDM_CONFIGURE_DG_SRC\"\nScheduled job execution start time: 2024-03-22T15:29:56+01. Equivalent local time: 2024-03-22 15:29:56\nCurrent status: FAILED\nResult file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.log\"\nMetrics file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.json\"\nJob execution start time: 2024-03-22 15:30:13\nJob execution end time: 2024-03-22 16:43:34\nJob execution elapsed time: 22 minutes 4 seconds\nZDM_GET_SRC_INFO ................ COMPLETED\nZDM_GET_TGT_INFO ................ COMPLETED\nZDM_PRECHECKS_SRC ............... COMPLETED\nZDM_PRECHECKS_TGT ............... COMPLETED\nZDM_SETUP_SRC ................... COMPLETED\nZDM_SETUP_TGT ................... COMPLETED\nZDM_PREUSERACTIONS .............. COMPLETED\nZDM_PREUSERACTIONS_TGT .......... COMPLETED\nZDM_VALIDATE_SRC ................ COMPLETED\nZDM_VALIDATE_TGT ................ COMPLETED\nZDM_DISCOVER_SRC ................ COMPLETED\nZDM_COPYFILES ................... COMPLETED\nZDM_PREPARE_TGT ................. COMPLETED\nZDM_SETUP_TDE_TGT ............... COMPLETED\nZDM_RESTORE_TGT ................. COMPLETED\nZDM_RECOVER_TGT ................. COMPLETED\nZDM_FINALIZE_TGT ................ COMPLETED\nZDM_CONFIGURE_DG_SRC ............ COMPLETED\nZDM_SWITCHOVER_SRC .............. FAILED\nZDM_SWITCHOVER_TGT .............. PENDING\nZDM_POST_DATABASE_OPEN_TGT ...... PENDING\nZDM_NONCDBTOPDB_PRECHECK ........ PENDING\nZDM_NONCDBTOPDB_CONVERSION ...... PENDING\nZDM_POST_MIGRATE_TGT ............ PENDING\nTIMEZONE_UPGRADE_PREPARE_TGT .... PENDING\nTIMEZONE_UPGRADE_TGT ............ PENDING\nZDM_POSTUSERACTIONS ............. PENDING\nZDM_POSTUSERACTIONS_TGT ......... PENDING\nZDM_CLEANUP_SRC ................. PENDING\nZDM_CLEANUP_TGT ................. PENDING\n\nPause After Phase: \"ZDM_SWITCHOVER_TGT\"\n<\/pre>\n<\/br>\n\n\n\n<p>This is another ZDM bug if configured to use the broker. See my blog here for explanation: <a href=\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-failing-during-zdm_switchover_src-phase\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-failing-during-zdm_switchover_src-phase\/<\/a><\/p>\n\n\n\n<p>ZDM log is showing:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PRGZ-3605 : Oracle Data Guard Broker switchover to database \"ONPRZ_APP_001T\" on database \"ONPR\" failed.\nONPRZ_APP_001T\nDGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Mar 22 15:43:19 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2019, Oracle and\/or its affiliates.  All rights reserved.\n\nWelcome to DGMGRL, type \"help\" for information.\nConnected to \"ONPR\"\nConnected as SYSDG.\nDGMGRL&gt; Performing switchover NOW, please wait...\nOperation requires a connection to database \"onprz_app_001t\"\nConnecting ...\nConnected to \"ONPRZ_APP_001T\"\nConnected as SYSDBA.\nNew primary database \"onprz_app_001t\" is opening...\nOperation requires start up of instance \"ONPR\" on database \"onpr\"\nStarting instance \"ONPR\"...\nORA-01017: invalid username\/password; logon denied\n\n\nPlease complete the following steps to finish switchover:\n        start up and mount instance \"ONPR\" of database \"onpr\"<\/code><\/pre>\n\n\n\n<p>The temporary database on the ExaCC is having PRIMARY role and is opened READ\/WRITE.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,6,18]\">\noracle@ExaCC-cl01n1:\/u02\/app\/oracle\/zdm\/zdm_ONPR_RZ2_75\/zdm\/log\/ [ONPR1 (CDB$ROOT)] ps -ef | grep [p]mon | grep -i sand\noracle    51392      1  0 14:23 ?        00:00:00 ora_pmon_ONPRZ_APP_001T1\n\noracle@ExaCC-cl01n1:\/u02\/app\/oracle\/zdm\/zdm_ONPR_RZ2_75\/zdm\/log\/ [ONPR1 (CDB$ROOT)] export ORACLE_SID=ONPRZ_APP_001T1\n\noracle@ExaCC-cl01n1:\/u02\/app\/oracle\/zdm\/zdm_ONPR_RZ2_75\/zdm\/log\/ [ONPRZ_APP_001T1 (CDB$ROOT)] sqh\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 16:45:32 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production\nVersion 19.22.0.0.0\n\nSQL&gt; select open_mode, database_role from v$database;\n\nOPEN_MODE            DATABASE_ROLE\n-------------------- ----------------\nREAD WRITE           PRIMARY\n<\/pre>\n<\/br>\n\n\n\n<p>The on-premises database is stopped. Let&#8217;s start it in MOUNT status.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,6,15]\">\noracle@vmonpr:\/u00\/app\/oracle\/zdm\/zdm_ONPR_75\/zdm\/log\/ [ONPR] ONPR\n********* dbi services Ltd. *********\nSTATUS          : STOPPED\n*************************************\n\noracle@vmonpr:\/u00\/app\/oracle\/zdm\/zdm_ONPR_75\/zdm\/log\/ [ONPR] sqh\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 16:45:51 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\nConnected to an idle instance.\n\nSQL&gt; startup mount\nORACLE instance started.\n\nTotal System Global Area 2147479664 bytes\nFixed Size                  8941680 bytes\nVariable Size            1224736768 bytes\nDatabase Buffers          905969664 bytes\nRedo Buffers                7831552 bytes\nDatabase mounted.\n<\/pre>\n<\/br>\n\n\n\n<p>And check Data Guard configuration is in sync with no gap.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,8,12,20,21]\">\noracle@vmonpr:\/u00\/app\/oracle\/zdm\/zdm_ONPR_75\/zdm\/log\/ [ONPR] dgmgrl\nDGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Mar 22 16:47:29 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2019, Oracle and\/or its affiliates.  All rights reserved.\n\nWelcome to DGMGRL, type \"help\" for information.\nDGMGRL&gt; connect \/\nConnected to \"ONPR\"\nConnected as SYSDG.\n\nDGMGRL&gt; show configuration lag\n\nConfiguration - ZDM_onpr\n\n  Protection Mode: MaxPerformance\n  Members:\n  onprz_app_001t - Primary database\n    onpr           - Physical standby database\n                     Transport Lag:      0 seconds (computed 1 second ago)\n                     Apply Lag:          0 seconds (computed 1 second ago)\n\nFast-Start Failover:  Disabled\n\nConfiguration Status:\nSUCCESS   (status updated 16 seconds ago)\n<\/pre>\n<\/br>\n\n\n\n<p>As we completed the <strong>whole<\/strong> ZDM_SWITCHOVER_SRC ZDM phase manually, we need to update ZDM metadata to change the phase to SUCCESS.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,8]\">\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ pwd\n\/u01\/app\/oracle\/chkbase\/GHcheckpoints\/vmonpr+ONPR+ExaCC-cl01n1\n\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ cp -p vmonpr+ONPR+ExaCC-cl01n1.xml vmonpr+ONPR+ExaCC-cl01n1.xml.20240322_prob_broker\n\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ vi vmonpr+ONPR+ExaCC-cl01n1.xml\n\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ diff vmonpr+ONPR+ExaCC-cl01n1.xml vmonpr+ONPR+ExaCC-cl01n1.xml.20240322_prob_broker\n106c106\n&lt;    &lt;CHECKPOINT LEVEL=\"MAJOR\" NAME=\"ZDM_SWITCHOVER_SRC\" DESC=\"ZDM_SWITCHOVER_SRC\" STATE=\"SUCCESS\"\/&gt;\n---\n&gt;    &lt;CHECKPOINT LEVEL=\"MAJOR\" NAME=\"ZDM_SWITCHOVER_SRC\" DESC=\"ZDM_SWITCHOVER_SRC\" STATE=\"START\"\/&gt;\n<\/pre>\n<\/br>\n\n\n\n<p>We can resume the ZDM job again.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli resume job -jobid 75 -pauseafter ZDM_SWITCHOVER_TGT\nzdmhost.domain.com: Audit ID: 1167\n<\/pre>\n<\/br>\n\n\n\n<p>And see that all phases including the switchover are now completed successfully.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,9,35]\">\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli query job -jobid 75\nzdmhost.domain.com: Audit ID: 1168\nJob ID: 75\nUser: zdmuser\nClient: zdmhost\nJob Type: \"MIGRATE\"\nScheduled job command: \"zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -pauseafter ZDM_CONFIGURE_DG_SRC\"\nScheduled job execution start time: 2024-03-22T15:29:56+01. Equivalent local time: 2024-03-22 15:29:56\nCurrent status: PAUSED\nCurrent Phase: \"ZDM_SWITCHOVER_TGT\"\nResult file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.log\"\nMetrics file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.json\"\nJob execution start time: 2024-03-22 15:30:13\nJob execution end time: 2024-03-22 16:53:21\nJob execution elapsed time: 24 minutes 42 seconds\nZDM_GET_SRC_INFO ................ COMPLETED\nZDM_GET_TGT_INFO ................ COMPLETED\nZDM_PRECHECKS_SRC ............... COMPLETED\nZDM_PRECHECKS_TGT ............... COMPLETED\nZDM_SETUP_SRC ................... COMPLETED\nZDM_SETUP_TGT ................... COMPLETED\nZDM_PREUSERACTIONS .............. COMPLETED\nZDM_PREUSERACTIONS_TGT .......... COMPLETED\nZDM_VALIDATE_SRC ................ COMPLETED\nZDM_VALIDATE_TGT ................ COMPLETED\nZDM_DISCOVER_SRC ................ COMPLETED\nZDM_COPYFILES ................... COMPLETED\nZDM_PREPARE_TGT ................. COMPLETED\nZDM_SETUP_TDE_TGT ............... COMPLETED\nZDM_RESTORE_TGT ................. COMPLETED\nZDM_RECOVER_TGT ................. COMPLETED\nZDM_FINALIZE_TGT ................ COMPLETED\nZDM_CONFIGURE_DG_SRC ............ COMPLETED\nZDM_SWITCHOVER_SRC .............. COMPLETED\nZDM_SWITCHOVER_TGT .............. COMPLETED\nZDM_POST_DATABASE_OPEN_TGT ...... PENDING\nZDM_NONCDBTOPDB_PRECHECK ........ PENDING\nZDM_NONCDBTOPDB_CONVERSION ...... PENDING\nZDM_POST_MIGRATE_TGT ............ PENDING\nTIMEZONE_UPGRADE_PREPARE_TGT .... PENDING\nTIMEZONE_UPGRADE_TGT ............ PENDING\nZDM_POSTUSERACTIONS ............. PENDING\nZDM_POSTUSERACTIONS_TGT ......... PENDING\nZDM_CLEANUP_SRC ................. PENDING\nZDM_CLEANUP_TGT ................. PENDING\n\nPause After Phase: \"ZDM_SWITCHOVER_TGT\"\n<\/pre>\n<\/br>\n\n\n\n<p>ZDM log is showing some warnings.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>zdmhost: 2024-03-22T15:52:03.091Z : Skipping phase ZDM_SWITCHOVER_SRC on resume\nzdmhost: 2024-03-22T15:52:03.117Z : Executing phase ZDM_SWITCHOVER_TGT\nzdmhost: 2024-03-22T15:52:03.117Z : Switching database ONPR_RZ2 on the target node ExaCC-cl01n1 to primary role ...\nExaCC-cl01n1: 2024-03-22T15:53:21.918Z : WARNING: Post migration, on-premise database will not be in sync with new primary of the database.\nExaCC-cl01n1: 2024-03-22T15:53:21.919Z : Switchover actions in the target environment executed successfully\nzdmhost: 2024-03-22T15:53:21.923Z : Execution of phase ZDM_SWITCHOVER_TGT completed\n####################################################################\nzdmhost: 2024-03-22T15:53:21.936Z : Job execution paused after phase \"ZDM_SWITCHOVER_TGT\".\n<\/code><\/pre>\n\n\n\n<p>We can ignored this warning. Data Guard configuration is in sync and in any case we are not going to use any fallback.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-convert-exacc-target-database-back-to-rac\">Convert ExaCC target database back to RAC<\/h2>\n\n\n\n<p>We will now convert the ExaCC target database that will host the future PDB that ZDM will create to RAC. If we do not do so, the PDB will only have one UNDO tablespace and we will have some problem to relocate it then to the final CDB, which will be RAC anyhow.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,21,33,39,43,46,48,51,53,55,59,71]\">\noracle@ExaCC-cl01n1:~\/ [ONPRZ_APP_001T1 (CDB$ROOT)] ONPR1\n\n **********************************\n INSTANCE_NAME   : ONPR1\n DB_NAME         : ONPR\n DB_UNIQUE_NAME  : ONPR_RZ2\n STATUS          : OPEN READ WRITE\n LOG_MODE        : ARCHIVELOG\n USERS\/SESSIONS  : 2\/7\n DATABASE_ROLE   : PRIMARY\n FLASHBACK_ON    : YES\n FORCE_LOGGING   : YES\n VERSION         : 19.22.0.0.0\n CDB_ENABLED     : YES\n PDBs            : PDB$SEED\n **********************************\n\n PDB color: pdbname=mount, pdbname=open read-write, pdbname=open read-only\n Statustime: 2024-03-21 09:30:32\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] sqh\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 16:56:19 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production\nVersion 19.22.0.0.0\n\nSQL&gt; select inst_id, name, value from gv$parameter where lower(name)='cluster_database';\n\n   INST_ID NAME                 VALUE\n---------- -------------------- --------------------\n         1 cluster_database     FALSE\n\nSQL&gt; alter system set cluster_database=TRUE scope=spfile sid='*';\n\nSystem altered.\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_RZ2\nInstance ONPR1 is running on node ExaCC-cl01n1\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl stop database -d ONPR_RZ2\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_RZ2\nInstance ONPR1 is not running on node ExaCC-cl01n1\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl add instance -d ONPR_RZ2 -i ONPR2 -node ExaCC-cl01n2\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl start database -d ONPR_RZ2\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] srvctl status database -d ONPR_RZ2\nInstance ONPR1 is running on node ExaCC-cl01n1\nInstance ONPR2 is running on node ExaCC-cl01n2\n\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] sqh\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 16:58:36 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production\nVersion 19.22.0.0.0\n\nSQL&gt; select inst_id, name, value from gv$parameter where lower(name)='cluster_database';\n\n   INST_ID NAME                 VALUE\n---------- -------------------- --------------------\n         2 cluster_database     TRUE\n         1 cluster_database     TRUE\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-compatible-parameter\">Compatible parameter<\/h2>\n\n\n\n<p>Compatible parameter for a 19c database should, in main situation, be configured at 19.0.0. There is no real reason to change it to another more specific one. If it is the case, we need to change the target database compatible parameter, to have the source and target matching. This will also have to be taken in account for PDB relocation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-run-the-migration\">Run the migration<\/h2>\n\n\n\n<p>We can now run the ZDM job with no pause, so have it run until the end. This will include the non-cdb to cdb conversion and database timezone update.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli resume job -jobid 75\nzdmhost.domain.com: Audit ID: 1169\n<\/pre>\n<\/br>\n\n\n\n<p>The job has been completed successfully.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,9]\">\n[zdmuser@zdmhost vmonpr+ONPR+ExaCC-cl01n1]$ \/u01\/app\/oracle\/product\/zdm\/bin\/zdmcli query job -jobid 75\nzdmhost.domain.com: Audit ID: 1172\nJob ID: 75\nUser: zdmuser\nClient: zdmhost\nJob Type: \"MIGRATE\"\nScheduled job command: \"zdmcli migrate database -sourcesid ONPR -rsp \/home\/zdmuser\/migration\/zdm_ONPR_physical_online.rsp -sourcenode vmonpr -srcauth zdmauth -srcarg1 user:oracle -srcarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -srcarg3 sudo_location:\/usr\/bin\/sudo -targetnode ExaCC-cl01n1 -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:\/home\/zdmuser\/.ssh\/id_rsa -tgtarg3 sudo_location:\/usr\/bin\/sudo -tdekeystorepasswd -tgttdekeystorepasswd -pauseafter ZDM_CONFIGURE_DG_SRC\"\nScheduled job execution start time: 2024-03-22T15:29:56+01. Equivalent local time: 2024-03-22 15:29:56\nCurrent status: SUCCEEDED\nResult file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.log\"\nMetrics file path: \"\/u01\/app\/oracle\/chkbase\/scheduled\/job-75-2024-03-22-15:30:13.json\"\nJob execution start time: 2024-03-22 15:30:13\nJob execution end time: 2024-03-22 17:08:49\nJob execution elapsed time: 33 minutes 18 seconds\nZDM_GET_SRC_INFO ................ COMPLETED\nZDM_GET_TGT_INFO ................ COMPLETED\nZDM_PRECHECKS_SRC ............... COMPLETED\nZDM_PRECHECKS_TGT ............... COMPLETED\nZDM_SETUP_SRC ................... COMPLETED\nZDM_SETUP_TGT ................... COMPLETED\nZDM_PREUSERACTIONS .............. COMPLETED\nZDM_PREUSERACTIONS_TGT .......... COMPLETED\nZDM_VALIDATE_SRC ................ COMPLETED\nZDM_VALIDATE_TGT ................ COMPLETED\nZDM_DISCOVER_SRC ................ COMPLETED\nZDM_COPYFILES ................... COMPLETED\nZDM_PREPARE_TGT ................. COMPLETED\nZDM_SETUP_TDE_TGT ............... COMPLETED\nZDM_RESTORE_TGT ................. COMPLETED\nZDM_RECOVER_TGT ................. COMPLETED\nZDM_FINALIZE_TGT ................ COMPLETED\nZDM_CONFIGURE_DG_SRC ............ COMPLETED\nZDM_SWITCHOVER_SRC .............. COMPLETED\nZDM_SWITCHOVER_TGT .............. COMPLETED\nZDM_POST_DATABASE_OPEN_TGT ...... COMPLETED\nZDM_NONCDBTOPDB_PRECHECK ........ COMPLETED\nZDM_NONCDBTOPDB_CONVERSION ...... COMPLETED\nZDM_POST_MIGRATE_TGT ............ COMPLETED\nTIMEZONE_UPGRADE_PREPARE_TGT .... COMPLETED\nTIMEZONE_UPGRADE_TGT ............ COMPLETED\nZDM_POSTUSERACTIONS ............. COMPLETED\nZDM_POSTUSERACTIONS_TGT ......... COMPLETED\nZDM_CLEANUP_SRC ................. COMPLETED\nZDM_CLEANUP_TGT ................. COMPLETED\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-checks\">Checks<\/h2>\n\n\n\n<p>If we check the new PDB, we can see that the new PDB is opened READ\/WRITE with no restriction. <\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,13,18]\">\noracle@ExaCC-cl01n1:\/u02\/app\/oracle\/zdm\/zdm_ONPR_RZ2_75\/zdm\/log\/ [ONPR1 (CDB$ROOT)] sqh\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 17:11:34 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production\nVersion 19.22.0.0.0\n\nSQL&gt; show pdbs\n\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n         2 PDB$SEED                       READ ONLY  NO\n         3 ONPRZ_APP_001T                 READ WRITE NO\n<\/pre>\n<\/br>\n\n\n\n<p>The application tablespaces are all encrypted. The SYSTEM, SYSAUX, UNDO and TEMP tablespace are not encrypted. This is expected. We will encrypt them manually.<\/p>\n\n\n\n<p>We can check the pdb violations.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,5]\">\nSQL&gt; alter session set container=ONPRZ_APP_001T;\n\nSession altered.\n\nSQL&gt; select status, message from pdb_plug_in_violations;\n\nSTATUS    MESSAGE\n--------- ------------------------------------------------------------------------------------------------------------------------\nRESOLVED  PDB needs to import keys from source.\nRESOLVED  Database option RAC mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nRESOLVED  PDB plugged in is a non-CDB, requires noncdb_to_pdb.sql be run.\nPENDING   Database option APS mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option CATJAVA mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option CONTEXT mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option DV mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option JAVAVM mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option OLS mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option ORDIM mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option SDO mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option XML mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Database option XOQ mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING   Tablespace SYSTEM is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.\nPENDING   Tablespace SYSAUX is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.\n\n15 rows selected.\n<\/pre>\n<\/br>\n\n\n\n<p>The database option can be ignored. See &#8220;OPTION WARNING Database option mismatch: PDB installed version NULL&#8221; in PDB_PLUG_IN_VIOLATIONS (Doc ID 2020172.1). The encryption one will be resolved once the tablespace will be encrypted manually. There is various method to do this and will not be described here in details.<\/p>\n\n\n\n<p>To check tablespace encryption:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQL&gt; select a.con_id, a.tablespace_name, nvl(b.ENCRYPTIONALG,'NOT ENCRYPTED') from  cdb_tablespaces a, (select x.con_id, y.ENCRYPTIONALG, x.name from V$TABLESPACE x,  V$ENCRYPTED_TABLESPACES y\n  where x.ts#=y.ts# and x.con_id=y.con_id) b where a.con_id=b.con_id(+) and a.tablespace_name=b.name(+) order by 1,2;<\/code><\/pre>\n\n\n\n<p>To encrypt the tablespace, we used following query, ran after having closed all PDB instances:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>set serveroutput on;\n \nDECLARE\n  CURSOR c_cur IS \n    SELECT name FROM V$TABLESPACE;\n  e_already_encrypted EXCEPTION;\n  pragma exception_init( e_already_encrypted, -28431);\n  e_tmp_cant_be_encrypted EXCEPTION;\n  pragma exception_init( e_tmp_cant_be_encrypted, -28370);\n  l_cmd VARCHAR2(200);\nBEGIN\n  FOR r_rec IN c_cur LOOP\n    l_cmd := 'ALTER TABLESPACE '|| r_rec.name || ' ENCRYPTION OFFLINE ENCRYPT';\n    dbms_output.put_line('Command: '|| l_cmd );\n    BEGIN\n      EXECUTE IMMEDIATE l_cmd;\n    EXCEPTION\n      WHEN e_already_encrypted THEN NULL;\n      -- ORA-28431: cannot encrypt an already encrypted data file UNDOTBS1\n      WHEN e_tmp_cant_be_encrypted THEN \n        dbms_output.put_line('CAUTION ! needs further actions for '|| r_rec.name ||' as of ORA-28370: ENCRYPT, DECRYPT or REKEY option not allowed');\n        NULL;\n      -- ORA-28370: ENCRYPT, DECRYPT or REKEY option not allowed\n    END;\n  END LOOP;   \nEND;\n\/\n<\/code><\/pre>\n\n\n\n<p>TEMP tablespace will have to be recreated. This is a normal DBA tasks. Once created again, TEMP tablespace will be also encrypted.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-relocate-pdb\">Relocate PDB<\/h2>\n\n\n\n<p>We can now relocate the migrated PDB to one of the CDB on the ExaCC side.<\/p>\n\n\n\n<p>To do this, we first have to create a new master key for the PDB.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,13,18,20,24]\">\noracle@ExaCC-cl01n1:\/u02\/app\/oracle\/zdm\/zdm_ONPR_RZ2_75\/zdm\/log\/ [ONPR1 (CDB$ROOT)] sqh\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 17:11:34 2024\nVersion 19.22.0.0.0\n\nCopyright (c) 1982, 2023, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production\nVersion 19.22.0.0.0\n\nSQL&gt; show pdbs\n\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n         2 PDB$SEED                       READ ONLY  NO\n         3 ONPRZ_APP_001T                 READ WRITE NO\n         \nSQL&gt; alter session set container=ONPRZ_APP_001T;\n\nSession altered.\n\nSQL&gt; ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE IDENTIFIED BY \"*****************\" WITH BACKUP USING 'pre-relocate-ONPRZ_APP_001T';\n\nkeystore altered.\n<\/pre>\n<\/br>\n\n\n\n<p>And we can relocate the database using dbaascli command.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\noracle@ExaCC-cl01n1:~\/ [ONPR1 (CDB$ROOT)] dbaascli pdb relocate --sourceDBConnectionString ExaCC-cl01-scan:1521\/ONPR_RZ2.domain.com --pdbName ONPRZ_APP_001T --dbName XXXXX100T\n<\/pre>\n<\/br>\n\n\n\n<p>with:<br>&#8211;sourceDBConnectionString = Easyconnect to current target database used for the migration and containing the PDB<br>&#8211;pdbName = the name of the PDB to relocate<br>&#8211;dbName = the final CDB DB_NAME<\/p>\n\n\n\n<p>If we check the PBD violations, we can see that everything is now ok.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nSQL&gt; select status, message from pdb_plug_in_violations;\n\nSTATUS     MESSAGE\n---------- ----------------------------------------------------------------------------------------------------\nPENDING    Database option APS mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option CATJAVA mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option CONTEXT mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option DV mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option JAVAVM mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option OLS mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option ORDIM mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option SDO mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option XML mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\nPENDING    Database option XOQ mismatch: PDB installed version NULL. CDB installed version 19.0.0.0.0.\n\n10 rows selected.\n<\/pre>\n<\/br>\n\n\n\n<p>The database option violations can be ignored. See &#8220;OPTION WARNING Database option mismatch: PDB installed version NULL&#8221; in PDB_PLUG_IN_VIOLATIONS (Doc ID 2020172.1)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-fallback\">Fallback<\/h2>\n\n\n\n<p>In case the test before putting the PDB in production is not satisfying a GO-LIVE, we can revert on-premises database to PRIMARY ROLE.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,6,10,16,22,33,39,44,54,60,64,68]\">\noracle@vmonpr:~\/ [ONPR] sqh\n\nSQL&gt; recover managed standby database cancel;\nORA-16136: Managed Standby Recovery not active\n\nSQL&gt; alter database recover managed standby database finish;\n\nDatabase altered.\n\nSQL&gt; select name,open_mode,database_role from v$database;\n\nNAME      OPEN_MODE            DATABASE_ROLE\n--------- -------------------- ----------------\nONPR      MOUNTED              PHYSICAL STANDBY\n\nSQL&gt; shutdown immediate;\nORA-01109: database not open\n\nDatabase dismounted.\nORACLE instance shut down.\n\nSQL&gt; startup\nORACLE instance started.\n\nTotal System Global Area 2147479664 bytes\nFixed Size                  8941680 bytes\nVariable Size            1224736768 bytes\nDatabase Buffers          905969664 bytes\nRedo Buffers                7831552 bytes\nDatabase mounted.\nDatabase opened.\n\nSQL&gt; select name,open_mode,database_role from v$database;\n\nNAME      OPEN_MODE            DATABASE_ROLE\n--------- -------------------- ----------------\nONPR      READ ONLY            PHYSICAL STANDBY\n\nSQL&gt; shutdown immediate\nDatabase closed.\nDatabase dismounted.\nORACLE instance shut down.\n\nSQL&gt; startup mount\nORACLE instance started.\n\nTotal System Global Area 2147479664 bytes\nFixed Size                  8941680 bytes\nVariable Size            1224736768 bytes\nDatabase Buffers          905969664 bytes\nRedo Buffers                7831552 bytes\nDatabase mounted.\n\nSQL&gt; select name,open_mode,database_role from v$database;\n\nNAME      OPEN_MODE            DATABASE_ROLE\n--------- -------------------- ----------------\nONPR      MOUNTED              PHYSICAL STANDBY\n\nSQL&gt; alter database activate standby database;\n\nDatabase altered.\n\nSQL&gt; alter database open;\n\nDatabase altered.\n\nSQL&gt; select name,open_mode,database_role from v$database;\n\nNAME      OPEN_MODE            DATABASE_ROLE\n--------- -------------------- ----------------\nONPR      READ WRITE           PRIMARY\n<\/pre>\n<\/br>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-to-wrap-up\">To wrap up<\/h2>\n\n\n\n<p>This is a real success story. We have been able to successfully migrate, using ZDM Physical Online, an on-premises database to the new ExaCC. I would like to thank the ZDM product management and development team for their availability and great help to quickly solve ORA-28374 error which was blocking the migration. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have been recently blogging about ZDM Physical Online Migration where I was explaining this migration method and preparing customer On-Premises to ExaCC migration. See my blog, https:\/\/www.dbi-services.com\/blog\/physical-online-migration-to-exacc-with-oracle-zero-downtime-migration-zdm\/. I have now had the opportunity to migrate customer database and would like to share, in this blog, this success story. Clarifications First of all, I would [&hellip;]<\/p>\n","protected":false},"author":48,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[280,2598,2562,96,1574,1575],"type_dbi":[],"class_list":["post-32197","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-database","tag-exacc-3","tag-migration-2","tag-oracle","tag-zdm","tag-zero-downtime-migration"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>ZDM Physical Online Migration - A success story - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ZDM Physical Online Migration - A success story\" \/>\n<meta property=\"og:description\" content=\"I have been recently blogging about ZDM Physical Online Migration where I was explaining this migration method and preparing customer On-Premises to ExaCC migration. See my blog, https:\/\/www.dbi-services.com\/blog\/physical-online-migration-to-exacc-with-oracle-zero-downtime-migration-zdm\/. I have now had the opportunity to migrate customer database and would like to share, in this blog, this success story. Clarifications First of all, I would [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-01T11:42:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-06T19:48:54+00:00\" \/>\n<meta name=\"author\" content=\"Marc Wagner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Wagner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\"},\"author\":{\"name\":\"Marc Wagner\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"headline\":\"ZDM Physical Online Migration &#8211; A success story\",\"datePublished\":\"2024-04-01T11:42:14+00:00\",\"dateModified\":\"2024-04-06T19:48:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\"},\"wordCount\":2318,\"commentCount\":0,\"keywords\":[\"database\",\"exacc\",\"migration\",\"Oracle\",\"zdm\",\"zero downtime migration\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\",\"name\":\"ZDM Physical Online Migration - A success story - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2024-04-01T11:42:14+00:00\",\"dateModified\":\"2024-04-06T19:48:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ZDM Physical Online Migration &#8211; A success story\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\",\"name\":\"Marc Wagner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"caption\":\"Marc Wagner\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ZDM Physical Online Migration - A success story - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/","og_locale":"en_US","og_type":"article","og_title":"ZDM Physical Online Migration - A success story","og_description":"I have been recently blogging about ZDM Physical Online Migration where I was explaining this migration method and preparing customer On-Premises to ExaCC migration. See my blog, https:\/\/www.dbi-services.com\/blog\/physical-online-migration-to-exacc-with-oracle-zero-downtime-migration-zdm\/. I have now had the opportunity to migrate customer database and would like to share, in this blog, this success story. Clarifications First of all, I would [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/","og_site_name":"dbi Blog","article_published_time":"2024-04-01T11:42:14+00:00","article_modified_time":"2024-04-06T19:48:54+00:00","author":"Marc Wagner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Wagner","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/"},"author":{"name":"Marc Wagner","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"headline":"ZDM Physical Online Migration &#8211; A success story","datePublished":"2024-04-01T11:42:14+00:00","dateModified":"2024-04-06T19:48:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/"},"wordCount":2318,"commentCount":0,"keywords":["database","exacc","migration","Oracle","zdm","zero downtime migration"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/","url":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/","name":"ZDM Physical Online Migration - A success story - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2024-04-01T11:42:14+00:00","dateModified":"2024-04-06T19:48:54+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/zdm-physical-online-migration-a-success-story\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ZDM Physical Online Migration &#8211; A success story"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628","name":"Marc Wagner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","caption":"Marc Wagner"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/32197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=32197"}],"version-history":[{"count":56,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/32197\/revisions"}],"predecessor-version":[{"id":32348,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/32197\/revisions\/32348"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=32197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=32197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=32197"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=32197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}