{"id":1005,"date":"2023-12-25T19:56:33","date_gmt":"2023-12-25T22:56:33","guid":{"rendered":"https:\/\/www.fernandosimon.com\/blog\/?p=1005"},"modified":"2023-12-25T20:33:07","modified_gmt":"2023-12-25T23:33:07","slug":"21c-dg-pdb-new-steps","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/","title":{"rendered":"21c, DG PDB, New Steps"},"content":{"rendered":"<p style=\"text-align: justify;\">When the DGPDB was released for 21c (at version 21.7) I wrote a blog post about how to use the feature (<a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb\/\" target=\"_blank\" rel=\"noopener\">you can read it here<\/a>). This was in August of 2022 and since that time, we got small changes and corrections, but with the update 21.12 (patch <a href=\"https:\/\/support.oracle.com\/epmos\/faces\/PatchDetail?patchId=35740258\" target=\"_blank\" rel=\"noopener\">35740258<\/a>) we got new commands like \u201c<strong>EDIT CONFIGURATION PREPARE DGPDB<\/strong>\u201d.<\/p>\n<p style=\"text-align: justify;\">Not just that, but Ludovico Caldara (Data Guard PM) <a href=\"https:\/\/www.ludovicocaldara.net\/dba\/prepare-database-for-data-guard\/\" target=\"_blank\" rel=\"noopener\">recently wrote one blog<\/a> post about new commands for Data Guard preparation that can be used with Broker. Is an evolution of the commands <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-prepare-database-for-data-guard\/\" target=\"_blank\" rel=\"noopener\">I covered in one previous blog post<\/a>.<\/p>\n<p style=\"text-align: justify;\">So, in this post, I will cover the new commands for DG PDB and the changes\/improvements that appeared in the last version. It is a long post, but everything is covered here. No gaps or information are missing, all the steps, logs, and outputs are described and documented.<\/p>\n<p style=\"text-align: justify;\"><!--more Click here to read more...--><\/p>\n<h2 style=\"text-align: justify;\">Previous post<\/h2>\n<p style=\"text-align: justify;\">I will try to cover most of the details and steps that you need to do to properly configure the DG PDB, but I <strong>recommend<\/strong> that you <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb\/\" target=\"_blank\" rel=\"noopener\">read my previous post<\/a> as well. So, you can understand and compare how it was, and what changed with the new update.<\/p>\n<p style=\"text-align: justify;\">Another point is that the steps described here are not documented in the official documentation for 21c. The Broker doc (today at the end of 2023) is <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/dgbkr\/data-guard-broker.pdf\" target=\"_blank\" rel=\"noopener\">dated from April of 2022<\/a>. But the <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/dgbkr\/scenarios-using-dgmgrl-dg-pdb-configuration-23c.html\" target=\"_blank\" rel=\"noopener\">documentation from 23c<\/a> is online and updated, so, it can be used as a partial guide for the process.<\/p>\n<h2 style=\"text-align: justify;\">My environment<\/h2>\n<p style=\"text-align: justify;\">The environment that I am using here is:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Two \u201csites\u201d (S1 and S2).<\/li>\n<li>In each site I have one database running in RAC mode, and each RAC has two nodes.<\/li>\n<li>Storage configuration is the same for each site: DATA and RECO diskgroups.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">The databases are:<\/p>\n<ul style=\"text-align: justify;\">\n<li>O21S1DG1: Database for site 01 (S1), and here I have the pdb S1PDB1 running.<\/li>\n<li>O21S2DG1: Database for site 02 (S2), and here I have the pdb S2PDB1 running.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1006 size-large\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png\" alt=\"\" width=\"625\" height=\"293\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png 1024w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-300x141.png 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-768x360.png 768w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1536x720.png 1536w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-624x293.png 624w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch.png 1988w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">You can see this below for S1:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ $ORACLE_HOME\/OPatch\/opatch lspatches\r\n35638302;JDK BUNDLE PATCH 21.0.0.0.231017\r\n35740265;OCW RELEASE UPDATE 21.12.0.0.0 (35740265)\r\n35740258;Database Release Update : 21.12.0.0.231017 (35740258)\r\n\r\nOPatch succeeded.\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ echo $ORACLE_SID\r\no21s1dg11\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ srvctl status database -d o21s1dg1\r\nInstance o21s1dg11 is running on node o8s1n1-21c\r\nInstance o21s1dg12 is running on node o8s1n2-21c\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:10:42 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 S1PDB1                         READ WRITE NO\r\nSQL&gt; select cdbdbid, connect_identifier, db_unique_name, dump(db_unique_name) from data_guard_site$;\r\n\r\nno rows selected\r\n\r\nSQL&gt; show parameter db_name\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ndb_name                              string      o21s1dg1\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">And for S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ $ORACLE_HOME\/OPatch\/opatch lspatches\r\n35638302;JDK BUNDLE PATCH 21.0.0.0.231017\r\n35740265;OCW RELEASE UPDATE 21.12.0.0.0 (35740265)\r\n35740258;Database Release Update : 21.12.0.0.231017 (35740258)\r\n\r\nOPatch succeeded.\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ echo $ORACLE_SID\r\no21s2dg11\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ srvctl status database -d o21s2dg1\r\nInstance o21s2dg11 is running on node o8s2n1-21c\r\nInstance o21s2dg12 is running on node o8s2n2-21c\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:10:43 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 S2PDB1                         READ WRITE NO\r\nSQL&gt; select cdbdbid, connect_identifier, db_unique_name, dump(db_unique_name) from data_guard_site$;\r\n\r\nno rows selected\r\n\r\nSQL&gt; show parameter db_name\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ndb_name                              string      o21s2dg1\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s2n1-21c ~]$<\/pre>\n<h2 style=\"text-align: justify;\">TNSNAMES<\/h2>\n<p style=\"text-align: justify;\">The first step that I would like to do is adjust the tnsnames.ora file for both nodes to have the entry for each database. &nbsp;Remember that 21c uses the ROOH (Read Only Oracle Home as I described in a <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-rooh\/\" target=\"_blank\" rel=\"noopener\">previous post<\/a>), so, I edited the tnsnames from S1 (node1) and added the entry for the database at site 2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ tnsping o21s1dg1\r\n\r\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 25-DEC-2023 12:13:00\r\n\r\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\r\n\r\nUsed TNSNAMES adapter to resolve the alias\r\nAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = o8s1-21c-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = o21s1dg1)))\r\nOK (0 msec)\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ tnsping o21s2dg1\r\n\r\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 25-DEC-2023 12:13:05\r\n\r\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\r\nTNS-03505: Failed to resolve name\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ cat $ORACLE_BASE\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\n# tnsnames.ora Network Configuration File: \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\n# Generated by Oracle configuration tools.\r\n\r\nO21S1DG1 =\r\n  (DESCRIPTION =\r\n    (ADDRESS = (PROTOCOL = TCP)(HOST = o8s1-21c-scan)(PORT = 1521))\r\n    (CONNECT_DATA =\r\n      (SERVER = DEDICATED)\r\n      (SERVICE_NAME = o21s1dg1)\r\n    )\r\n  )\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ vi $ORACLE_BASE\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ cat $ORACLE_BASE\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\n# tnsnames.ora Network Configuration File: \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\n# Generated by Oracle configuration tools.\r\n\r\nO21S1DG1 =\r\n  (DESCRIPTION =\r\n    (ADDRESS = (PROTOCOL = TCP)(HOST = o8s1-21c-scan)(PORT = 1521))\r\n    (CONNECT_DATA =\r\n      (SERVER = DEDICATED)\r\n      (SERVICE_NAME = o21s1dg1)\r\n    )\r\n  )\r\n\r\nO21S2DG1 =\r\n  (DESCRIPTION =\r\n    (ADDRESS = (PROTOCOL = TCP)(HOST = o8s2-21c-scan)(PORT = 1521))\r\n    (CONNECT_DATA =\r\n      (SERVER = DEDICATED)\r\n      (SERVICE_NAME = o21s2dg1)\r\n    )\r\n  )\r\n\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ tnsping O21S2DG1\r\n\r\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 25-DEC-2023 12:13:34\r\n\r\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\r\n\r\nUsed TNSNAMES adapter to resolve the alias\r\nAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = o8s2-21c-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = o21s2dg1)))\r\nOK (0 msec)\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">You can see above that I edited the file and tested it. So, the next step is to copy the edited file to the second node of S1, and all nodes from S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ scp \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora o8s1n2-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\ntnsnames.ora                                                                                                               100%  521   148.3KB\/s   00:00\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ scp \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora o8s2n1-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\nThe authenticity of host 'o8s2n1-21c (10.160.21.13)' can't be established.\r\nECDSA key fingerprint is SHA256:vSb+vT+UHebpOlYd9OWzysszhSB\/\/uz9fBoknODFNfA.\r\nAre you sure you want to continue connecting (yes\/no\/[fingerprint])? yes\r\nWarning: Permanently added 'o8s2n1-21c,10.160.21.13' (ECDSA) to the list of known hosts.\r\noracle@o8s2n1-21c's password:\r\ntnsnames.ora                                                                                                               100%  521   409.4KB\/s   00:00\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ scp \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora o8s2n2-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/tnsnames.ora\r\nThe authenticity of host 'o8s2n2-21c (10.160.21.15)' can't be established.\r\nECDSA key fingerprint is SHA256:vSb+vT+UHebpOlYd9OWzysszhSB\/\/uz9fBoknODFNfA.\r\nAre you sure you want to continue connecting (yes\/no\/[fingerprint])? yes\r\nWarning: Permanently added 'o8s2n2-21c,10.160.21.15' (ECDSA) to the list of known hosts.\r\noracle@o8s2n2-21c's password:\r\ntnsnames.ora                                                                                                               100%  521   398.6KB\/s   00:00\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">And you can even test ant S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ tnsping O21S1DG1\r\n\r\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 25-DEC-2023 12:14:15\r\n\r\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\r\n\r\nUsed TNSNAMES adapter to resolve the alias\r\nAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = o8s1-21c-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = o21s1dg1)))\r\nOK (10 msec)\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ tnsping O21S2DG1\r\n\r\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 25-DEC-2023 12:14:20\r\n\r\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\r\n\r\nUsed TNSNAMES adapter to resolve the alias\r\nAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = o8s2-21c-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = o21s2dg1)))\r\nOK (10 msec)\r\n[oracle@o8s2n1-21c ~]$<\/pre>\n<h2 style=\"text-align: justify;\">Basic Data Guard and Broker config<\/h2>\n<p style=\"text-align: justify;\">DG PDB is still a Data Guard, so, the basic configs are still needed. So, below you can that I adjusted these parameters and details for all databases:<\/p>\n<ul style=\"text-align: justify;\">\n<li>dg_broker_start and dg_broker_config_file*.<\/li>\n<li>standby_file_management defined as AUTO.<\/li>\n<li>Standby redo log files for CDB level set (check the current RL size and use the same one).<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">For the database at S1:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:14:31 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show parameter broker\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nconnection_brokers                   string      ((TYPE=DEDICATED)(BROKERS=1)),\r\n                                                  ((TYPE=EMON)(BROKERS=1))\r\ndg_broker_config_file1               string      \/u01\/app\/oracle\/homes\/OraDB21H\r\n                                                 ome1\/dbs\/dr1o21s1dg1.dat\r\ndg_broker_config_file2               string      \/u01\/app\/oracle\/homes\/OraDB21H\r\n                                                 ome1\/dbs\/dr2o21s1dg1.dat\r\ndg_broker_start                      boolean     FALSE\r\nuse_dedicated_broker                 boolean     FALSE\r\nSQL&gt; alter system set dg_broker_config_file1='+DATA\/O21S1DG1\/dr1o21s1dg1.dat' scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; alter system set dg_broker_config_file2='+RECO\/O21S1DG1\/dr2o21s1dg1.dat' scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; alter system set dg_broker_start=TRUE  scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; show parameter standby_file_management\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nstandby_file_management              string      MANUAL\r\nSQL&gt; alter system set standby_file_management = AUTO scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; select group#,thread#,bytes from v$standby_log;\r\n\r\nno rows selected\r\n\r\nSQL&gt; select group#,thread#,bytes from v$log;\r\n\r\n    GROUP#    THREAD#      BYTES\r\n---------- ---------- ----------\r\n         1          1  209715200\r\n         2          1  209715200\r\n         3          2  209715200\r\n         4          2  209715200\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; select group#,thread#,bytes from v$standby_log;\r\n\r\n    GROUP#    THREAD#      BYTES\r\n---------- ---------- ----------\r\n         5          1  209715200\r\n         6          1  209715200\r\n         7          1  209715200\r\n         8          2  209715200\r\n         9          2  209715200\r\n        10          2  209715200\r\n\r\n6 rows selected.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">And for the database at S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:16:25 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show parameter broker\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nconnection_brokers                   string      ((TYPE=DEDICATED)(BROKERS=1)),\r\n                                                  ((TYPE=EMON)(BROKERS=1))\r\ndg_broker_config_file1               string      \/u01\/app\/oracle\/homes\/OraDB21H\r\n                                                 ome1\/dbs\/dr1o21s2dg1.dat\r\ndg_broker_config_file2               string      \/u01\/app\/oracle\/homes\/OraDB21H\r\n                                                 ome1\/dbs\/dr2o21s2dg1.dat\r\ndg_broker_start                      boolean     FALSE\r\nuse_dedicated_broker                 boolean     FALSE\r\nSQL&gt; alter system set dg_broker_config_file1='+DATA\/O21S2DG1\/dr1o21s2dg1.dat' scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; alter system set dg_broker_config_file2='+RECO\/O21S2DG1\/dr2o21s2dg1.dat' scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; alter system set dg_broker_start=TRUE  scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; show parameter standby_file_management\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nstandby_file_management              string      MANUAL\r\nSQL&gt; alter system set standby_file_management = AUTO scope = both sid = '*' ;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; select group#,thread#,bytes from v$standby_log;\r\n\r\nno rows selected\r\n\r\nSQL&gt; select group#,thread#,bytes from v$log;\r\n\r\n    GROUP#    THREAD#      BYTES\r\n---------- ---------- ----------\r\n         1          1  209715200\r\n         2          1  209715200\r\n         3          2  209715200\r\n         4          2  209715200\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 ('+RECO', '+DATA') size 209715200;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; select group#,thread#,bytes from v$standby_log;\r\n\r\n    GROUP#    THREAD#      BYTES\r\n---------- ---------- ----------\r\n         5          1  209715200\r\n         6          1  209715200\r\n         7          1  209715200\r\n         8          2  209715200\r\n         9          2  209715200\r\n        10          2  209715200\r\n\r\n6 rows selected.\r\n\r\nSQL&gt;<\/pre>\n<h2 style=\"text-align: justify;\">Wallet and Data Guard connection<\/h2>\n<p style=\"text-align: justify;\">The DG PDB uses a special way to connect the broker configurations. It differs from traditional Data Guard because the SYS password from both sites can be different and they do not share the password file. So, the way to do that is using wallets.<\/p>\n<p style=\"text-align: justify;\">The most important point here is that the credential name inside the wallet <strong>NEEDS TO BE THE SAME<\/strong> as your connections string (TNSNAMES or EZCONNECT).<\/p>\n<p style=\"text-align: justify;\">So, I started for S1, creating autologin wallet and adding the credentials (compare the names and the TNS entries that I made some steps ago):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ mkdir -p $ORACLE_BASE\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ mkstore -wrl $ORACLE_BASE\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1 -createALO\r\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\r\nVersion 21.0.0.0.0\r\nCopyright (c) 2004, 2023, Oracle and\/or its affiliates. All rights reserved.\r\n\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ mkstore -wrl $ORACLE_BASE\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1 -createCredential o21s1dg1 sys oracle\r\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\r\nVersion 21.0.0.0.0\r\nCopyright (c) 2004, 2023, Oracle and\/or its affiliates. All rights reserved.\r\n\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ mkstore -wrl $ORACLE_BASE\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1 -createCredential o21s2dg1 sys oracle\r\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\r\nVersion 21.0.0.0.0\r\nCopyright (c) 2004, 2023, Oracle and\/or its affiliates. All rights reserved.\r\n\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ mkstore -wrl $ORACLE_BASE\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1 -listCredential\r\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\r\nVersion 21.0.0.0.0\r\nCopyright (c) 2004, 2023, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nList credential (index: connect_string username)\r\n2: o21s2dg1 sys\r\n1: o21s1dg1 sys\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">To allow this wallet to be used at the connection level I adjusted the sqlnet.ora file at node 1 from site 1:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ ls -l $ORACLE_BASE\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora\r\nls: cannot access '\/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora': No such file or directory\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ vi $ORACLE_BASE\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ cat $ORACLE_BASE\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora\r\nNAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)\r\n\r\nSQLNET.WALLET_OVERRIDE = true\r\n\r\nWALLET_LOCATION =\r\n(\r\n   SOURCE =\r\n      (METHOD = FILE)\r\n      (METHOD_DATA =\r\n         (DIRECTORY = \/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1)\r\n      )\r\n)\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">After I tested the connections from node1 of site 1 to all databases. You can see that I did not specify the password and I was able to connect to databases:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ sqlplus \/@o21s1dg1 as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:22:04 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ sqlplus \/@o21s2dg1 as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:22:10 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">Everything is working with the wallet, then I copied wallet and sqlnet.ora to the second node of s1, and just the wallet to all nodes of the second site:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ scp -r \/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1 o8s1n2-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1\r\ncwallet.sso.lck                                                                                                            100%    0     0.0KB\/s   00:00\r\ncwallet.sso                                                                                                                100%  941   960.9KB\/s   00:00\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ scp $ORACLE_BASE\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora o8s1n2-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora\r\nsqlnet.ora                                                                                                                 100%  241   258.4KB\/s   00:00\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ scp -r \/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1 o8s2n1-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s2dg1\r\noracle@o8s2n1-21c's password:\r\ncwallet.sso.lck                                                                                                            100%    0     0.0KB\/s   00:00\r\ncwallet.sso                                                                                                                100%  941   785.9KB\/s   00:00\r\n[oracle@o8s1n1-21c ~]$\r\n[oracle@o8s1n1-21c ~]$ scp -r \/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s1dg1 o8s2n2-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s2dg1\r\noracle@o8s2n2-21c's password:\r\ncwallet.sso.lck                                                                                                            100%    0     0.0KB\/s   00:00\r\ncwallet.sso                                                                                                                100%  941   804.0KB\/s   00:00\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">Since the wallet is there for the second site (S2), I could adjust the sqlnet.ora and test it. You can notice that when I copied from S1 to S2 I adjusted the folder name (at destination), so, this needs to be correctly informed in the sqlnet file. Below you see that I adjusted the sqlnet.ora, tested the connections and after copied the file to the second node of S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ ls -l \/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s2dg1\r\ntotal 4\r\n-rw------- 1 oracle oinstall 941 Dec 25 12:23 cwallet.sso\r\n-rw------- 1 oracle oinstall   0 Dec 25 12:23 cwallet.sso.lck\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ vi \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ cat \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora\r\nNAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)\r\n\r\nSQLNET.WALLET_OVERRIDE = true\r\n\r\nWALLET_LOCATION =\r\n(\r\n   SOURCE =\r\n      (METHOD = FILE)\r\n      (METHOD_DATA =\r\n         (DIRECTORY = \/u01\/app\/oracle\/homes\/OraDB21Home1\/dbs\/dgwallet_o21s2dg1)\r\n      )\r\n)\r\n\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ sqlplus \/@o21s1dg1 as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:25:17 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ sqlplus \/@o21s2dg1 as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:25:24 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s2n1-21c ~]$\r\n[oracle@o8s2n1-21c ~]$ scp \/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora o8s2n2-21c:\/u01\/app\/oracle\/homes\/OraDB21Home1\/network\/admin\/sqlnet.ora\r\nsqlnet.ora                                                                                                                 100%  242   211.1KB\/s   00:00\r\n[oracle@o8s2n1-21c ~]$<\/pre>\n<h2 style=\"text-align: justify;\">Database adjust<\/h2>\n<p style=\"text-align: justify;\">Another point that is recommended to be adjusted is the logging properties for the database. They need to be in archive move, but also is recommended to have the flashback enabled and the force logging too. Below you can see that I adjusted the database running in S1:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:26:13 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; select flashback_on from v$database;\r\n\r\nFLASHBACK_ON\r\n------------------\r\nNO\r\n\r\nSQL&gt; alter database flashback on;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; select flashback_on from v$database;\r\n\r\nFLASHBACK_ON\r\n------------------\r\nYES\r\n\r\nSQL&gt; ALTER DATABASE FORCE LOGGING;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; select FORCE_LOGGING from v$database;\r\n\r\nFORCE_LOGGING\r\n---------------------------------------\r\nYES\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">And I made the same for S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:26:56 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; select flashback_on from v$database;\r\n\r\nFLASHBACK_ON\r\n------------------\r\nNO\r\n\r\nSQL&gt; select FORCE_LOGGING from v$database;\r\n\r\nFORCE_LOGGING\r\n---------------------------------------\r\nNO\r\n\r\nSQL&gt; alter database flashback on;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; ALTER DATABASE FORCE LOGGING;\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s2n1-21c ~]$<\/pre>\n<h2 style=\"text-align: justify;\">Broker, DGMGRL, and CONFIG<\/h2>\n<p style=\"text-align: justify;\">The next step is to add the config. Check the details over the steps to <strong>add correctly and in the correct place<\/strong>. You will need to run commands in both databases.<\/p>\n<p style=\"text-align: justify;\">So, at node 1 from the database running at site 1, you connect at dgmgrl and create the config:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ dgmgrl sys\/oracle@o21s1dg1\r\nDGMGRL for Linux: Release 21.0.0.0.0 - Production on Mon Dec 25 12:27:31 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\r\n\r\nWelcome to DGMGRL, type \"help\" for information.\r\nConnected to \"o21s1dg1\"\r\nConnected as SYSDBA.\r\nDGMGRL&gt;\r\nDGMGRL&gt;\r\nDGMGRL&gt; show all\r\ntrace_level         USER\r\necho                OFF\r\ntime                OFF\r\nobserverconfigfile = observer.ora\r\n\r\nDatabase version is 21.12.0.0.0.\r\nOracle SID is o21s1dg12.\r\nConnected as SYSDBA to instance o21s1dg12 of o21s1dg1.\r\nDGMGRL&gt;\r\nDGMGRL&gt;\r\nDGMGRL&gt; show configuration;\r\nORA-16532: Oracle Data Guard broker configuration does not exist\r\n\r\nConfiguration details cannot be determined by DGMGRL\r\nDGMGRL&gt;\r\nDGMGRL&gt; create configuration S1 primary database is o21s1dg1 connect identifier is o21s1dg1;\r\nConnected to \"o21s1dg1\"\r\nConfiguration \"s1\" created with primary database \"o21s1dg1\"\r\nDGMGRL&gt;\r\nDGMGRL&gt;\r\nDGMGRL&gt; show configuration verbose;\r\n\r\nConfiguration - s1\r\n\r\n  Protection Mode: MaxPerformance\r\n  Members:\r\n  o21s1dg1 - Primary database\r\n\r\n  Properties:\r\n    FastStartFailoverThreshold      = '30'\r\n    OperationTimeout                = '30'\r\n    TraceLevel                      = 'USER'\r\n    FastStartFailoverLagLimit       = '30'\r\n    CommunicationTimeout            = '180'\r\n    ObserverReconnect               = '0'\r\n    ObserverPingInterval            = '0'\r\n    ObserverPingRetry               = '0'\r\n    FastStartFailoverAutoReinstate  = 'TRUE'\r\n    FastStartFailoverPmyShutdown    = 'TRUE'\r\n    BystandersFollowRoleChange      = 'ALL'\r\n    ObserverOverride                = 'FALSE'\r\n    ExternalDestination1            = ''\r\n    ExternalDestination2            = ''\r\n    PrimaryLostWriteAction          = 'CONTINUE'\r\n    ConfigurationWideServiceName    = 'o21s1dg1_CFG'\r\n    ConfigurationSimpleName         = 's1'\r\n    DrainTimeout                    = '0'\r\n\r\nFast-Start Failover:  Disabled\r\n\r\nConfiguration Status:\r\nDISABLED\r\n\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">And you do the same to the other database. <strong>But remember that here you are locally connected at one node running the database<\/strong>. So, doing for the S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ dgmgrl sys\/oracle@o21s2dg1\r\nDGMGRL for Linux: Release 21.0.0.0.0 - Production on Mon Dec 25 12:27:56 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\r\n\r\nWelcome to DGMGRL, type \"help\" for information.\r\nConnected to \"o21s2dg1\"\r\nConnected as SYSDBA.\r\nDGMGRL&gt;\r\nDGMGRL&gt;\r\nDGMGRL&gt; show all\r\ntrace_level         USER\r\necho                OFF\r\ntime                OFF\r\nobserverconfigfile = observer.ora\r\n\r\nDatabase version is 21.12.0.0.0.\r\nOracle SID is o21s2dg11.\r\nConnected as SYSDBA to instance o21s2dg11 of o21s2dg1.\r\nDGMGRL&gt;\r\nDGMGRL&gt;\r\nDGMGRL&gt; show configuration;\r\nORA-16532: Oracle Data Guard broker configuration does not exist\r\n\r\nConfiguration details cannot be determined by DGMGRL\r\nDGMGRL&gt;\r\nDGMGRL&gt;\r\nDGMGRL&gt; create configuration S2 primary database is o21s2dg1 connect identifier is o21s2dg1;\r\nConnected to \"o21s2dg1\"\r\nConfiguration \"s2\" created with primary database \"o21s2dg1\"\r\nDGMGRL&gt;\r\nDGMGRL&gt;\r\nDGMGRL&gt; show configuration;\r\n\r\nConfiguration - s2\r\n\r\n  Protection Mode: MaxPerformance\r\n  Members:\r\n  o21s2dg1 - Primary database\r\n\r\nFast-Start Failover:  Disabled\r\n\r\nConfiguration Status:\r\nDISABLED\r\n\r\nDGMGRL&gt; show configuration verbose;\r\n\r\nConfiguration - s2\r\n\r\n  Protection Mode: MaxPerformance\r\n  Members:\r\n  o21s2dg1 - Primary database\r\n\r\n  Properties:\r\n    FastStartFailoverThreshold      = '30'\r\n    OperationTimeout                = '30'\r\n    TraceLevel                      = 'USER'\r\n    FastStartFailoverLagLimit       = '30'\r\n    CommunicationTimeout            = '180'\r\n    ObserverReconnect               = '0'\r\n    ObserverPingInterval            = '0'\r\n    ObserverPingRetry               = '0'\r\n    FastStartFailoverAutoReinstate  = 'TRUE'\r\n    FastStartFailoverPmyShutdown    = 'TRUE'\r\n    BystandersFollowRoleChange      = 'ALL'\r\n    ObserverOverride                = 'FALSE'\r\n    ExternalDestination1            = ''\r\n    ExternalDestination2            = ''\r\n    PrimaryLostWriteAction          = 'CONTINUE'\r\n    ConfigurationWideServiceName    = 'o21s2dg1_CFG'\r\n    ConfigurationSimpleName         = 's2'\r\n    DrainTimeout                    = '0'\r\n\r\nFast-Start Failover:  Disabled\r\n\r\nConfiguration Status:\r\nDISABLED\r\n\r\nDGMGRL&gt;<\/pre>\n<h2 style=\"text-align: justify;\">ADD CONFIGURATION<\/h2>\n<p style=\"text-align: justify;\">The next step is executed only when using DG PDB. Basically, you go to the broker that will be the standby (at the first moment) and you will add the configuration from the other site.<\/p>\n<p style=\"text-align: justify;\">In my environment I went to S1 and added S2:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; add configuration s2 connect identifier is o21s2dg1;\r\nConfiguration s2 added.\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">The base command is:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">ADD CONFIGURATION [&lt;configuration name&gt;]\r\n  CONNECT IDENTIFIER IS &lt;connect identifier&gt;;\r\n<\/pre>\n<p style=\"text-align: justify;\">So, here the broker will use the wallet credential to connect and add the configuration (from a remote site). As you can see above there is no (and not yet) way to pass the password as a parameter, so, some kind of way to collect the password and use it (the wallet is the way) is needed. And it is the official\/documented way to do that. If you read my <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb\/\" target=\"_blank\" rel=\"noopener\">previous blog post<\/a>, you can see that I tested and got the documented ISSUE #1. As I explained before, the \u201c<em>connect identifier<\/em>\u201d links TNS entry or EZXCONNECT. <strong>So, your credential name inside the wallet needs to be the same as your connect identifier<\/strong>.<\/p>\n<p style=\"text-align: justify;\">After that, you can check the configs (remember that you are at the broker for S1):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; show configuration verbose s1;\r\n\r\nConfiguration - s1\r\n\r\n  Protection Mode: MaxPerformance\r\n  Members:\r\n  o21s1dg1 - Primary database\r\n  o21s2dg1 - Primary database in s2 configuration\r\n\r\n  Properties:\r\n    FastStartFailoverThreshold      = '30'\r\n    OperationTimeout                = '30'\r\n    TraceLevel                      = 'USER'\r\n    FastStartFailoverLagLimit       = '30'\r\n    CommunicationTimeout            = '180'\r\n    ObserverReconnect               = '0'\r\n    ObserverPingInterval            = '0'\r\n    ObserverPingRetry               = '0'\r\n    FastStartFailoverAutoReinstate  = 'TRUE'\r\n    FastStartFailoverPmyShutdown    = 'TRUE'\r\n    BystandersFollowRoleChange      = 'ALL'\r\n    ObserverOverride                = 'FALSE'\r\n    ExternalDestination1            = ''\r\n    ExternalDestination2            = ''\r\n    PrimaryLostWriteAction          = 'CONTINUE'\r\n    ConfigurationWideServiceName    = 'o21s1dg1_CFG'\r\n    ConfigurationSimpleName         = 's1'\r\n    DrainTimeout                    = '0'\r\n\r\nFast-Start Failover:  Disabled\r\n\r\nConfiguration Status:\r\nDISABLED\r\n\r\nDGMGRL&gt; show configuration verbose s2;\r\n\r\nConfiguration - s2\r\n\r\nPrimary Database: o21s2dg1\r\n\r\n  Properties:\r\n    DGConnectIdentifier             = ''\r\n    LogShipping                     = 'ON'\r\n    LogXptMode                      = 'ASYNC'\r\n    DelayMins                       = '0'\r\n    Binding                         = 'optional'\r\n    MaxFailure                      = '0'\r\n    ReopenSecs                      = '300'\r\n    NetTimeout                      = '30'\r\n    RedoCompression                 = 'DISABLE'\r\n\r\nConfiguration s2 Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">The next step is to enable the configuration. We do this in the broker where you added the config because this will force it to connect in both configurations and enable it.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; enable configuration all;\r\nSucceeded.\r\nDGMGRL&gt;\r\nDGMGRL&gt; show configuration verbose;\r\n\r\nConfiguration - s1\r\n\r\n  Protection Mode: MaxPerformance\r\n  Members:\r\n  o21s1dg1 - Primary database\r\n  o21s2dg1 - Primary database in s2 configuration\r\n\r\n  Properties:\r\n    FastStartFailoverThreshold      = '30'\r\n    OperationTimeout                = '30'\r\n    TraceLevel                      = 'USER'\r\n    FastStartFailoverLagLimit       = '30'\r\n    CommunicationTimeout            = '180'\r\n    ObserverReconnect               = '0'\r\n    ObserverPingInterval            = '0'\r\n    ObserverPingRetry               = '0'\r\n    FastStartFailoverAutoReinstate  = 'TRUE'\r\n    FastStartFailoverPmyShutdown    = 'TRUE'\r\n    BystandersFollowRoleChange      = 'ALL'\r\n    ObserverOverride                = 'FALSE'\r\n    ExternalDestination1            = ''\r\n    ExternalDestination2            = ''\r\n    PrimaryLostWriteAction          = 'CONTINUE'\r\n    ConfigurationWideServiceName    = 'o21s1dg1_CFG'\r\n    ConfigurationSimpleName         = 's1'\r\n    DrainTimeout                    = '0'\r\n\r\nFast-Start Failover:  Disabled\r\n\r\nConfiguration Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt;<\/pre>\n<h2 style=\"text-align: justify;\">EDIT CONFIGURATION PREPARE DGPDB<\/h2>\n<p style=\"text-align: justify;\">Here we have the new command that will help to prepare and adjust (automatically) the config. In my previous post, you can see that when you add the pluggable database it will ask you for a password (and even the command will fail). &nbsp;But this is not the case now.<\/p>\n<p style=\"text-align: justify;\">The command is exactly this \u201c<strong>EDIT CONFIGURATION PREPARE DGPDB;<\/strong>\u201d and the execution is:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; EDIT CONFIGURATION PREPARE DGPDB;\r\nEnter password for DGPDB_INT account at o21s1dg1:\r\nEnter password for DGPDB_INT account at o21s2dg1:\r\n\r\nPrepared Data Guard for Pluggable Database at o21s2dg1.\r\n\r\nPrepared Data Guard for Pluggable Database at o21s1dg1.\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">So, what\u2019s happened above? The command will prompt you the password for the new DGPDB_INT (for both sites and he can be even different \u2013 I recommend the same). This user (as <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/dgbkr\/managing-oracle-data-guard-broker-configurations.html#GUID-F484095B-7DBA-46AB-8867-EF8A960EB3DF\" target=\"_blank\" rel=\"noopener\">documented<\/a>) is used for \u201c<em>The DGPDB_INT user account is used by the database server when making connections to other sites involved in the DG PDB configuration. Typically this occurs during creation and switchover of a standby PDB.<\/em>\u201d and \u201c<em>Along with the connect identifier for the remote site, the credential and the DGPDB_INT account are used to make connections to the remote site when required.<\/em>\u201d.<\/p>\n<p style=\"text-align: justify;\">The new command will prepare everything for you before you add the pluggable database. Unlock the user and store properly the password.<\/p>\n<h2 style=\"text-align: justify;\">ADD PLUGGABLE DATABASE<\/h2>\n<p style=\"text-align: justify;\">After adjusting the config, the pluggable database can be added (again, remember that you are connected at the broker from the database running at S1, the target\/standby destination from the pluggable database):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; ADD PLUGGABLE DATABASE s2pdb1 AT o21s1dg1 SOURCE IS s2pdb1 AT o21s2dg1 PDBFILENAMECONVERT IS \"'o21s2dg1','o21s1dg1'\";\r\nConnected to \"o21s2dg1\"\r\nConnected to \"o21s1dg1\"\r\n\r\nPluggable Database \"S2PDB1\" added\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">Details from the command above:<\/p>\n<ul style=\"text-align: justify;\">\n<li>The pdb name: I added the S2PDB1 with the same name (you can specify any name). The important here is if you change the name of pdb, and do not use OFA (filesystem by example), remember to properly define the pdbfilenameconvert.<\/li>\n<li>AT: The first \u201cAT\u201d indicates the target (where) the pdb will be added.<\/li>\n<li>SOURCE IS: This means the source of the PDB, here it is the S2PDB1 coming from the S2.<\/li>\n<li>PDBFILENAMECONVER: You can use it to specify the name conversation (think in the future when you add one tablespace). It works the same way as <em>db_file_name_convert<\/em> for traditional Data Guard. In this post, since the storage has the same diskgroup definition, I am just converting the pdb name.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">So, not we can see the pdb was added as part of DG PDB:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; SHOW PLUGGABLE DATABASE ALL at o21s1dg1;\r\n\r\nPluggable database 'S1PDB1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Not Protected\r\n\r\nPluggable database 'S2PDB1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Physical Standby\r\n  Con_ID:              4\r\n  Source:              con_id 3 at o21s2dg1\r\n  Transport Lag:       0 seconds (computed 64 seconds ago)\r\n  Intended State:      APPLY-ON\r\n  Apply State:         Not Running\r\n\r\nPluggable Database Status:\r\nDGM-5103: one or more data files were not found\r\nORA-16766: Redo Apply is stopped\r\n\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">Above you can see that I used all, but you can use the pdb name like this:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s1dg1;\r\n\r\nPluggable database 's2pdb1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Physical Standby\r\n  Con_ID:              4\r\n  Source:              con_id 3 at o21s2dg1\r\n  Transport Lag:       0 seconds (computed 44 seconds ago)\r\n  Intended State:      APPLY-ON\r\n  Apply State:         Not Running\r\n\r\nPluggable Database Status:\r\nORA-16766: Redo Apply is stopped\r\n\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\"><strong>Import details here<\/strong>. You can see that pdb was added but we have an error, and this is the expected behavior. Is designed to be like that. Because it will give you the possibility to copy the datafiles of pdb from source to target using the method that works better for you, which can be rman (imagine a huge pdb), cp, or reading from tape. The other detail is that the command tells you the con_id for each place (primary\/standby).<\/p>\n<p style=\"text-align: justify;\">To fix the error we need to understand what is happening. So, looking at the alertlog of the target database (where we added the pdb) we can see this:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">create pluggable database S2PDB1 as standby from S2PDB1 at o21s2dg1 file_name_convert=('o21s2dg1','o21s1dg1')\r\n2023-12-25T12:38:41.305780+01:00\r\n****************************************************************\r\nPluggable Database S2PDB1 with pdb id - 4 is created as UNUSABLE.\r\nIf any errors are encountered before the pdb is marked as NEW,\r\nthen the pdb must be dropped\r\nlocal undo-1, localundoscn-0x000000000000010a\r\n****************************************************************\r\n2023-12-25T12:38:41.539003+01:00\r\nS2PDB1(4):ALTER SYSTEM SET _dgpdb_file_name_convert='o21s2dg1','o21s1dg1' SCOPE=SPFILE PDB='S2PDB1';\r\n*****************************************\r\nWARNING: The converted filename '+DATA\/o21s1dg1\/0d53b48faa587d52e0630d15a00ad47b\/datafile\/system.264.1156503933'\r\n         is an ASM fully qualified filename.\r\n         Changing the filename to '+DATA\/MUST_RENAME_THIS_DATAFILE_9.4294967295.4294967295'.\r\n         Please rename it accordingly.\r\n*****************************************\r\n*****************************************\r\nWARNING: The converted filename '+DATA\/o21s1dg1\/0d53b48faa587d52e0630d15a00ad47b\/datafile\/sysaux.282.1156503931'\r\n         is an ASM fully qualified filename.\r\n         Changing the filename to '+DATA\/MUST_RENAME_THIS_DATAFILE_10.4294967295.4294967295'.\r\n         Please rename it accordingly.\r\n*****************************************\r\n*****************************************\r\nWARNING: The converted filename '+DATA\/o21s1dg1\/0d53b48faa587d52e0630d15a00ad47b\/datafile\/undotbs1.280.1156503931'\r\n         is an ASM fully qualified filename.\r\n         Changing the filename to '+DATA\/MUST_RENAME_THIS_DATAFILE_11.4294967295.4294967295'.\r\n         Please rename it accordingly.\r\n*****************************************\r\n*****************************************\r\nWARNING: The converted filename '+DATA\/o21s1dg1\/0d53b48faa587d52e0630d15a00ad47b\/datafile\/undo_2.260.1156503991'\r\n         is an ASM fully qualified filename.\r\n         Changing the filename to '+DATA\/MUST_RENAME_THIS_DATAFILE_12.4294967295.4294967295'.\r\n         Please rename it accordingly.\r\n*****************************************\r\n*****************************************\r\nWARNING: The converted filename '+DATA\/o21s1dg1\/0d53b48faa587d52e0630d15a00ad47b\/datafile\/users.278.1156503995'\r\n         is an ASM fully qualified filename.\r\n         Changing the filename to '+DATA\/MUST_RENAME_THIS_DATAFILE_13.4294967295.4294967295'.\r\n         Please rename it accordingly.\r\n*****************************************\r\nCompleted: create pluggable database S2PDB1 as standby from S2PDB1 at o21s2dg1 file_name_convert=('o21s2dg1','o21s1dg1')<\/pre>\n<p style=\"text-align: justify;\">This tells me that was added but datafiles are not there. If I connect at the target CDB I can check all the config and notice that only the pdb itself knows the datafiles:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:46:24 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 S1PDB1                         READ WRITE NO\r\n         4 S2PDB1                         MOUNTED\r\nSQL&gt; set linesize 255\r\nSQL&gt; col FILE_NAME format a120\r\nSQL&gt; select FILE_NAME from cdb_data_files where con_id = 4;\r\n\r\nno rows selected\r\n\r\nSQL&gt;\r\nSQL&gt; col NAME format a50\r\nSQL&gt; col VALUE$ format a50\r\nSQL&gt; select DB_UNIQ_NAME, NAME, VALUE$, PDB_UID from PDB_SPFILE$ ;\r\n\r\nDB_UNIQ_NAME                   NAME                                               VALUE$                                                PDB_UID\r\n------------------------------ -------------------------------------------------- -------------------------------------------------- ----------\r\n*                              _dgpdb_file_name_convert                           'o21s2dg1','o21s1dg1'                              2972777329\r\n\r\nSQL&gt; set linesize 255\r\nSQL&gt; col name format a100\r\nSQL&gt; select file#, name, con_id from v$datafile order by con_id, file#;\r\n\r\n     FILE# NAME                                                                                                     CON_ID\r\n---------- ---------------------------------------------------------------------------------------------------- ----------\r\n         1 +DATA\/O21S1DG1\/DATAFILE\/system.260.1156499949                                                                 1\r\n         3 +DATA\/O21S1DG1\/DATAFILE\/sysaux.264.1156499967                                                                 1\r\n         5 +DATA\/O21S1DG1\/DATAFILE\/undotbs1.269.1156499981                                                               1\r\n         7 +DATA\/O21S1DG1\/DATAFILE\/undotbs2.284.1156500007                                                               1\r\n         8 +DATA\/O21S1DG1\/DATAFILE\/users.257.1156500009                                                                  1\r\n         2 +DATA\/O21S1DG1\/0D52C644598FD5D4E0630315A00A0DC5\/DATAFILE\/system.262.1156499959                                2\r\n         4 +DATA\/O21S1DG1\/0D52C644598FD5D4E0630315A00A0DC5\/DATAFILE\/sysaux.266.1156499973                                2\r\n         6 +DATA\/O21S1DG1\/0D52C644598FD5D4E0630315A00A0DC5\/DATAFILE\/undotbs1.271.1156499983                              2\r\n         9 +DATA\/O21S1DG1\/0D53AFBB3DE67E64E0630315A00ADFE0\/DATAFILE\/system.289.1156503851                                3\r\n        10 +DATA\/O21S1DG1\/0D53AFBB3DE67E64E0630315A00ADFE0\/DATAFILE\/sysaux.280.1156503851                                3\r\n        11 +DATA\/O21S1DG1\/0D53AFBB3DE67E64E0630315A00ADFE0\/DATAFILE\/undotbs1.279.1156503851                              3\r\n\r\n     FILE# NAME                                                                                                     CON_ID\r\n---------- ---------------------------------------------------------------------------------------------------- ----------\r\n        12 +DATA\/O21S1DG1\/0D53AFBB3DE67E64E0630315A00ADFE0\/DATAFILE\/undo_2.270.1156503895                                3\r\n        13 +DATA\/O21S1DG1\/0D53AFBB3DE67E64E0630315A00ADFE0\/DATAFILE\/users.281.1156503897                                 3\r\n\r\n13 rows selected.\r\n\r\nSQL&gt;\r\nSQL&gt; alter session set container = S2PDB1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; select file#, name, con_id from v$datafile order by con_id, file#;\r\n\r\n     FILE# NAME                                                                                                     CON_ID\r\n---------- ---------------------------------------------------------------------------------------------------- ----------\r\n        14 +DATA\/MUST_RENAME_THIS_DATAFILE_9.4294967295.4294967295                                                       4\r\n        15 +DATA\/MUST_RENAME_THIS_DATAFILE_10.4294967295.4294967295                                                      4\r\n        16 +DATA\/MUST_RENAME_THIS_DATAFILE_11.4294967295.4294967295                                                      4\r\n        17 +DATA\/MUST_RENAME_THIS_DATAFILE_12.4294967295.4294967295                                                      4\r\n        18 +DATA\/MUST_RENAME_THIS_DATAFILE_13.4294967295.4294967295                                                      4\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">Above you can see that the v$database from cdb doesn\u2019t know the datafiles from the new pdb. It is important to connect at the source and check the files that we need to copy:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">[oracle@o8s2n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:48:34 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 S2PDB1                         READ WRITE NO\r\nSQL&gt; set linesize 255\r\nSQL&gt; col file_name format a100\r\nSQL&gt; select file_id, file_name from cdb_data_files where con_id = 3;\r\n\r\n   FILE_ID FILE_NAME\r\n---------- ----------------------------------------------------------------------------------------------------\r\n         9 +DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/system.264.1156503933\r\n        10 +DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/sysaux.282.1156503931\r\n        11 +DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undotbs1.280.1156503931\r\n        12 +DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undo_2.260.1156503991\r\n        13 +DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/users.278.1156503995\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">Here, look at the CON_ID, they are different in each database (and the numbers are the ones shown in the broker too). So, we need to do what documentation tells us to do (<a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/dgbkr\/examples-using-data-guard-broker-dgpdb-DGMGRL-utility.html#GUID-B8C509B1-C56C-4623-BF47-E2DDCEBD5BAB\" target=\"_blank\" rel=\"noopener\">directly from the documentation<\/a>): \u201c<em>After you add the source PDB, and before you start recovery on the target PDB, ensure that the database files that correspond to the source PDB are copied to the target database. Use RMAN or operating system copy commands to instantiate source PDB files.<\/em>\u201d<\/p>\n<h2 style=\"text-align: justify;\">Copying Datafiles<\/h2>\n<p style=\"text-align: justify;\">Personally, I prefer to use RMAN because this allows me to use different ways and do some tuning. With rman, I can specify the number of channels, the section size, and parallelization. Things that I can\u2019t do easily copying with cp by example. &nbsp;And to do the copy is not needed (as in the past) disable the config from the broker side.<\/p>\n<p style=\"text-align: justify;\">So, as we saw before I need to copy datafiles from 9 to 13 from the source. To do that with rman I used:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ rman target sys\/oracle@O21S2DG1 auxiliary sys\/oracle@O21S1DG1\r\n\r\nRecovery Manager: Release 21.0.0.0.0 - Production on Mon Dec 25 12:56:31 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\r\n\r\nconnected to target database: O21S2DG1 (DBID=1247569180)\r\nconnected to auxiliary database: O21S1DG1 (DBID=2394073882)\r\n\r\nRMAN&gt; run{\r\n2&gt; allocate channel d1 type disk ;\r\n3&gt; backup as copy reuse  datafile 9,10,11,12,13 auxiliary format '+DATA';\r\n4&gt; }\r\n\r\nusing target database control file instead of recovery catalog\r\nallocated channel: d1\r\nchannel d1: SID=316 instance=o21s2dg12 device type=DISK\r\n\r\nStarting backup at 25\/12\/2023 12:56:59\r\nchannel d1: starting datafile copy\r\ninput datafile file number=00009 name=+DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/system.264.1156503933\r\noutput file name=+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/system.276.1156510623 tag=TAG20231225T125700\r\nchannel d1: datafile copy complete, elapsed time: 00:00:07\r\nchannel d1: starting datafile copy\r\ninput datafile file number=00010 name=+DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/sysaux.282.1156503931\r\noutput file name=+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/sysaux.265.1156510629 tag=TAG20231225T125700\r\nchannel d1: datafile copy complete, elapsed time: 00:00:07\r\nchannel d1: starting datafile copy\r\ninput datafile file number=00011 name=+DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undotbs1.280.1156503931\r\noutput file name=+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undotbs1.263.1156510635 tag=TAG20231225T125700\r\nchannel d1: datafile copy complete, elapsed time: 00:00:07\r\nchannel d1: starting datafile copy\r\ninput datafile file number=00012 name=+DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undo_2.260.1156503991\r\noutput file name=+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undo_2.261.1156510643 tag=TAG20231225T125700\r\nchannel d1: datafile copy complete, elapsed time: 00:00:07\r\nchannel d1: starting datafile copy\r\ninput datafile file number=00013 name=+DATA\/O21S2DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/users.278.1156503995\r\noutput file name=+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/users.267.1156510649 tag=TAG20231225T125700\r\nchannel d1: datafile copy complete, elapsed time: 00:00:01\r\nFinished backup at 25\/12\/2023 12:57:30\r\nreleased channel: d1\r\n\r\nRMAN&gt; exit\r\n\r\n\r\nRecovery Manager complete.\r\n[oracle@o8s1n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">The details here:<\/p>\n<ul style=\"text-align: justify;\">\n<li>My target is the O21S2DG1at S2 because is where I need to connect to read the files.<\/li>\n<li>Auxiliary is the O21S1DG1 at S1 because it is the destination of my backups.<\/li>\n<li>BACKUP AS COPY, so, the datafiles specified will be copied AS IS.<\/li>\n<li>AUXILIARY FORMAT defined the destination (so I don\u2019t need to specify newnames since is done automatically).<\/li>\n<li>From the output, you can see source and target datafilenames (and the conversion as well).<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Now to fix the names for the pdb we need to rename and this is done using the rename command and specifying the source and target files. <strong>Please take attention to rename correctly the datafile names to the correspondent ones:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 12:58:15 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; alter session set container = S2PDB1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; set linesize 255\r\nSQL&gt; col name format a100\r\nSQL&gt; select file#, name, con_id from v$datafile order by con_id, file#;\r\n\r\n     FILE# NAME                                                                                                     CON_ID\r\n---------- ---------------------------------------------------------------------------------------------------- ----------\r\n        14 +DATA\/MUST_RENAME_THIS_DATAFILE_9.4294967295.4294967295                                                       4\r\n        15 +DATA\/MUST_RENAME_THIS_DATAFILE_10.4294967295.4294967295                                                      4\r\n        16 +DATA\/MUST_RENAME_THIS_DATAFILE_11.4294967295.4294967295                                                      4\r\n        17 +DATA\/MUST_RENAME_THIS_DATAFILE_12.4294967295.4294967295                                                      4\r\n        18 +DATA\/MUST_RENAME_THIS_DATAFILE_13.4294967295.4294967295                                                      4\r\n\r\nSQL&gt;\r\nSQL&gt; alter database rename file '+DATA\/MUST_RENAME_THIS_DATAFILE_9.4294967295.4294967295' to '+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/system.276.1156510623';\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; alter database rename file '+DATA\/MUST_RENAME_THIS_DATAFILE_10.4294967295.4294967295' to '+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/sysaux.265.1156510629';\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; alter database rename file '+DATA\/MUST_RENAME_THIS_DATAFILE_11.4294967295.4294967295' to '+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undotbs1.263.1156510635';\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; alter database rename file '+DATA\/MUST_RENAME_THIS_DATAFILE_12.4294967295.4294967295' to '+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undo_2.261.1156510643';\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; alter database rename file '+DATA\/MUST_RENAME_THIS_DATAFILE_13.4294967295.4294967295' to '+DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/users.267.1156510649';\r\n\r\nDatabase altered.\r\n\r\nSQL&gt; select file#, name, con_id from v$datafile order by con_id, file#;\r\n\r\n     FILE# NAME                                                                                                     CON_ID\r\n---------- ---------------------------------------------------------------------------------------------------- ----------\r\n        14 +DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/system.276.1156510623                                4\r\n        15 +DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/sysaux.265.1156510629                                4\r\n        16 +DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undotbs1.263.1156510635                              4\r\n        17 +DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/undo_2.261.1156510643                                4\r\n        18 +DATA\/O21S1DG1\/0D53B48FAA587D52E0630D15A00AD47B\/DATAFILE\/users.267.1156510649                                 4\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">The new names you pick up from the rman output and use it. <strong>Again, just check and do the correct link between the \u201cfile number\u201d from rman and the \u201cfile#\u201d that you need to rename<\/strong>. Don\u2019t make mistakes here.<\/p>\n<h2 style=\"text-align: justify;\">Check and adjust the state<\/h2>\n<p style=\"text-align: justify;\">After fixing the datafile we can check the state of the pdb and fix in case:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s1dg1;\r\n\r\nPluggable database 's2pdb1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Physical Standby\r\n  Con_ID:              4\r\n  Source:              con_id 3 at o21s2dg1\r\n  Transport Lag:       0 seconds (computed 44 seconds ago)\r\n  Intended State:      APPLY-ON\r\n  Apply State:         Not Running\r\n\r\nPluggable Database Status:\r\nORA-16766: Redo Apply is stopped\r\n\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">So, you can see that the error is still there, but you can see the \u201cApply State\u201d is not running. So, we can enable it:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; EDIT PLUGGABLE DATABASE S2PDB1 at o21s1dg1 SET STATE = 'APPLY-ON';\r\nSucceeded.\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">After doing this we can see at alertlog that the recovery process for the pdb started:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">2023-12-25T13:02:22.746586+01:00\r\nalter pluggable database S2PDB1 recover managed standby database disconnect\r\nalter pluggable database \"S2PDB1\" close instances=all\r\nCompleted: alter pluggable database \"S2PDB1\" close instances=all\r\n2023-12-25T13:02:22.839128+01:00\r\n.... (PID:149783): Requesting Managed Recovery process for PDBID:4 [krsm.c:1352]\r\n2023-12-25T13:02:22.853832+01:00\r\nTT04 (PID:162320): Background Managed Recovery process started [krsm.c:1697]\r\n2023-12-25T13:02:22.866247+01:00\r\nS2PDB1(4):Serial Media Recovery started\r\n2023-12-25T13:02:22.890291+01:00\r\n.... (PID:97424): PDBID:4 Managed Recovery starting Real Time Apply [krsm.c:15931]\r\n2023-12-25T13:02:22.944580+01:00\r\nS2PDB1(4):max_pdb is 4\r\n2023-12-25T13:02:23.079897+01:00\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Log +RECO\/O21S1DG1\/ARCHIVELOG\/2023_12_25\/thread_1_seq_14.270.1156509523 [krd.c:9452]\r\n2023-12-25T13:02:23.392274+01:00\r\nALTER SYSTEM SET remote_listener=' o8s1-21c-scan:1521' SCOPE=MEMORY SID='o21s1dg11';\r\n2023-12-25T13:02:23.397050+01:00\r\nALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='o21s1dg11';\r\n2023-12-25T13:02:23.513048+01:00\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Log +RECO\/O21S1DG1\/ARCHIVELOG\/2023_12_25\/thread_2_seq_3.271.1156509523 [krd.c:9452]\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Waiting for T-2.S-4 (in transit) [krsm.c:6205]\r\n2023-12-25T13:02:23.841935+01:00\r\nCompleted: alter pluggable database S2PDB1 recover managed standby database disconnect<\/pre>\n<p style=\"text-align: justify;\">And since the DG PDB does not operate in SYNC mode, I recommend that you connect to the source\/primary database and archivelog to check the shipping is working and there is no issue.<\/p>\n<p style=\"text-align: justify;\">So, going to the primary database (O21S2DG1 at S2):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 13:02:51 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt;\r\nSQL&gt; alter system archive log current;\r\n\r\nSystem altered.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">We can see in the standby alertlog that shipping is working and it is receiving the archivelogs:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">2023-12-25T13:02:58.953468+01:00\r\n rfs (PID:149958): Archived Log entry 4 added for B-1156499932.T-2.S-4 ID 0x4a5c671c LAD:1 [krsp.c:1256]\r\n rfs (PID:149958): No SRLs created [krsk.c:4671]\r\n2023-12-25T13:02:59.067986+01:00\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Log +RECO\/O21S1DG1\/ARCHIVELOG\/2023_12_25\/thread_2_seq_4.269.1156509525 [krd.c:9452]\r\n2023-12-25T13:02:59.094785+01:00\r\n rfs (PID:149958): Opened log for DBID:1247569180 B-1156499932.T-2.S-5 [krsr.c:18251]\r\n2023-12-25T13:02:59.126353+01:00\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Log +RECO\/O21S1DG1\/ARCHIVELOG\/2023_12_25\/thread_1_seq_15.268.1156509527 [krd.c:9452]\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Waiting for T-1.S-16 (in transit) [krsm.c:6205]<\/pre>\n<p style=\"text-align: justify;\">To validate, the show command reports to us no error:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s1dg1;\r\n\r\nPluggable database 's2pdb1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Physical Standby\r\n  Con_ID:              4\r\n  Source:              con_id 3 at o21s2dg1\r\n  Transport Lag:       0 seconds (computed 51 seconds ago)\r\n  Intended State:      APPLY-ON\r\n  Apply State:         Running\r\n  Apply Instance:      o21s1dg11\r\n  Average Apply Rate:  16 KByte\/s\r\n  Real Time Query:     OFF\r\n\r\nPluggable Database Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt;<\/pre>\n<h2 style=\"text-align: justify;\">Switchover PDB<\/h2>\n<p style=\"text-align: justify;\">Now that everything is properly configured, and the apply is running we can play and switchover the pdb between sites. And just to show that it is working I went to the primary and created one table with one record and sent the arhcivelolgs:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; alter session set container = S2PDB1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; create table t1(c1 date);\r\n\r\nTable created.\r\n\r\nSQL&gt; insert into t1(c1) values(sysdate);\r\n\r\n1 row created.\r\n\r\nSQL&gt; commit;\r\n\r\nCommit complete.\r\n\r\nSQL&gt;\r\nSQL&gt; alter session set container = cdb$root;\r\n\r\nSession altered.\r\n\r\nSQL&gt; alter system archive log current;\r\n\r\nSystem altered.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1007 size-large\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover-1024x514.png\" alt=\"\" width=\"625\" height=\"314\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover-1024x514.png 1024w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover-300x151.png 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover-768x385.png 768w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover-1536x771.png 1536w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover-624x313.png 624w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-DGPDB-Swicthover.png 1989w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Calling the switchover connect at the standby (look that my first command was to check the status and verify if the apply was ok):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s1dg1;\r\n\r\nPluggable database 's2pdb1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Physical Standby\r\n  Con_ID:              4\r\n  Source:              con_id 3 at o21s2dg1\r\n  Transport Lag:       0 seconds (computed 51 seconds ago)\r\n  Intended State:      APPLY-ON\r\n  Apply State:         Running\r\n  Apply Instance:      o21s1dg11\r\n  Average Apply Rate:  16 KByte\/s\r\n  Real Time Query:     OFF\r\n\r\nPluggable Database Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt;\r\nDGMGRL&gt; switchover to pluggable database s2pdb1 at o21s1dg1;\r\nVerifying conditions for Switchover...\r\n\r\nConnected to \"o21s2dg1\"\r\n  Source pluggable database is 'S2PDB1' at database 'o21s2dg1'\r\n\r\nPerforming switchover NOW, please wait...\r\n\r\n  Closing pluggable database 'S2PDB1'...\r\n  Switching 'S2PDB1' to standby role...\r\nConnected to \"o21s1dg1\"\r\n  Waiting for 'S2PDB1' to recover all redo data...\r\n  Stopping recovery at 'S2PDB1'...\r\n  Converting 'S2PDB1' to primary role...\r\n  Opening new primary 'S2PDB1'...\r\nConnected to \"o21s2dg1\"\r\n  Waiting for redo data from new primary 'S2PDB1'...\r\n  Starting recovery at new standby 'S2PDB1'...\r\n\r\nSwitchover succeeded, new primary is \"S2PDB1\"\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">Here is one important detail. I passed the <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb\/\" target=\"_blank\" rel=\"noopener\">same issue that my previous post<\/a> (ISSUE#4), the target\/standby was waiting for the source\/primary to send the last archivelog. When you call the command, it will wait at \u201c<strong><em>Waiting for &#8216;S2PDB1&#8217; to recover all redo data&#8230;<\/em><\/strong>\u201d.<\/p>\n<p style=\"text-align: justify;\">So, to avoid the known issue I connected at the primary and executed \u201c<em>alter system archive log current<\/em>\u201d. This will send the required data and the switchover can happen. At the alerlog from the standby we can see this:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">2023-12-25T14:32:41.897557+01:00\r\n rfs (PID:149958): Archived Log entry 13 added for B-1156499932.T-2.S-9 ID 0x4a5c671c LAD:1 [krsp.c:1256]\r\n rfs (PID:149958): No SRLs created [krsk.c:4671]\r\n2023-12-25T14:32:42.011118+01:00\r\n rfs (PID:149958): Opened log for DBID:1247569180 B-1156499932.T-2.S-10 [krsr.c:18251]\r\n2023-12-25T14:33:01.394899+01:00\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Log +RECO\/O21S1DG1\/ARCHIVELOG\/2023_12_25\/thread_1_seq_20.294.1156516283 [krd.c:9452]\r\n2023-12-25T14:33:01.482329+01:00\r\nS2PDB1(4):TT04 (PID:162320): Media Recovery Log +RECO\/O21S1DG1\/ARCHIVELOG\/2023_12_25\/thread_2_seq_9.293.1156516285 [krd.c:9452]\r\nS2PDB1(4):End of lifespan for PDB at SCN 0x000000000014cb16 due to SWITCHOVER\r\n2023-12-25T14:33:01.657716+01:00\r\nS2PDB1(4):Incomplete recovery applied all redo ever generated.\r\nS2PDB1(4):Recovery completed through change 1362710 time 12\/25\/2023 14:32:38\r\n2023-12-25T14:33:03.066609+01:00\r\n rfs (PID:149958): Archived Log entry 15 added for B-1156499932.T-2.S-10 ID 0x4a5c671c LAD:1 [krsp.c:1256]\r\n rfs (PID:149958): No SRLs created [krsk.c:4671]\r\n2023-12-25T14:33:03.149081+01:00\r\n rfs (PID:149958): Opened log for DBID:1247569180 B-1156499932.T-2.S-11 [krsr.c:18251]\r\n2023-12-25T14:33:04.438359+01:00\r\nfreeing rdom 4\r\n2023-12-25T14:33:08.027191+01:00\r\nThread 1 advanced to log sequence 15 (LGWR switch),  current SCN: 1363189\r\n  Current log# 1 seq# 15 mem# 0: +DATA\/O21S1DG1\/ONLINELOG\/group_1.286.1156499935\r\n  Current log# 1 seq# 15 mem# 1: +RECO\/O21S1DG1\/ONLINELOG\/group_1.282.1156499937\r\n2023-12-25T14:33:09.153056+01:00\r\nARC1 (PID:97602): Archived Log entry 5 added for B-1156499930.T-1.S-14 ID 0x7f9d8eb2371a LAD:1 [krse.c:4934]\r\n2023-12-25T14:33:22.003784+01:00\r\nClearing standby activation ID 2394044186 (0x8eb2371a)\r\nThe primary database controlfile was created using the\r\n'MAXLOGFILES 192' clause.\r\nThere is space for up to 188 standby redo logfiles\r\nUse the following SQL commands on the standby database to create\r\nstandby redo logfiles that match the primary database:\r\nALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 209715200;\r\nALTER DATABASE ADD STANDBY LOGFILE 'srl2.f' SIZE 209715200;\r\nALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 209715200;\r\nALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 209715200;\r\nALTER DATABASE ADD STANDBY LOGFILE 'srl5.f' SIZE 209715200;\r\n2023-12-25T14:33:27.451257+01:00\r\nWARNING: Disk space leak. Failed to remove control file copy\r\n+DATA\/O21S1DG1\/CONTROLFILE\/backup.291.1156516401 due to the following errors;\r\n2023-12-25T14:33:27.451403+01:00\r\nORA-15028: ASM file '+DATA\/O21S1DG1\/CONTROLFILE\/backup.291.1156516401' not dropped; currently being accessed<\/pre>\n<p style=\"text-align: justify;\">We can see that now the broker recognizes the new primary and the new standby for this pdb:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s1dg1;\r\n\r\nPluggable database 's2pdb1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Primary\r\n  Con_ID:              4\r\n  Active Target:       con_id 3 at o21s2dg1\r\n\r\nPluggable Database Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s2dg1;\r\nConnected to \"o21s2dg1\"\r\n\r\nPluggable database 's2pdb1' at database 'o21s2dg1'\r\n\r\n  Data Guard Role:     Physical Standby\r\n  Con_ID:              3\r\n  Source:              con_id 4 at o21s1dg1\r\n  Transport Lag:       0 seconds (computed 58 seconds ago)\r\n  Intended State:      APPLY-ON\r\n  Apply State:         Running\r\n  Apply Instance:      o21s2dg12\r\n  Average Apply Rate:  (unknown)\r\n  Real Time Query:     OFF\r\n\r\nPluggable Database Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">To check if everything was fine I connected at the primary and checked the T1 table there:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 14:35:14 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 S1PDB1                         READ WRITE NO\r\n         4 S2PDB1                         MOUNTED\r\nSQL&gt; alter pluggable database S2PDB1 open instances = all;\r\n\r\nPluggable database altered.\r\n\r\nSQL&gt;\r\nSQL&gt; alter session set container = S2PDB1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; select * from t1;\r\n\r\nC1\r\n---------\r\n25-DEC-23\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">And is even possible to do a direct switchover again. So, I added a new record over the T1 table and made the switchover:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s1n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 14:39:33 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; alter session set container = S2PDB1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; select * from t1;\r\n\r\nC1\r\n---------\r\n25-DEC-23\r\n\r\nSQL&gt; insert into t1(c1) values(sysdate);\r\n\r\n1 row created.\r\n\r\nSQL&gt; commit;\r\n\r\nCommit complete.\r\n\r\nSQL&gt; select * from t1;\r\n\r\nC1\r\n---------\r\n25-DEC-23\r\n25-DEC-23\r\n\r\nSQL&gt; alter session set container = cdb$root;\r\n\r\nSession altered.\r\n\r\nSQL&gt; alter system archive log current;\r\n\r\nSystem altered.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">At broker (remember to connect at the primary and call the archivelolg to send it to the standby and avoid errors):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s1dg1;\r\n\r\nPluggable database 's2pdb1' at database 'o21s1dg1'\r\n\r\n  Data Guard Role:     Primary\r\n  Con_ID:              4\r\n  Active Target:       con_id 3 at o21s2dg1\r\n\r\nPluggable Database Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt; SHOW PLUGGABLE DATABASE S2PDB1 at o21s2dg1;\r\nConnected to \"o21s2dg1\"\r\n\r\nPluggable database 's2pdb1' at database 'o21s2dg1'\r\n\r\n  Data Guard Role:     Physical Standby\r\n  Con_ID:              3\r\n  Source:              con_id 4 at o21s1dg1\r\n  Transport Lag:       0 seconds (computed 51 seconds ago)\r\n  Intended State:      APPLY-ON\r\n  Apply State:         Running\r\n  Apply Instance:      o21s2dg12\r\n  Average Apply Rate:  111 KByte\/s\r\n  Real Time Query:     OFF\r\n\r\nPluggable Database Status:\r\nSUCCESS\r\n\r\nDGMGRL&gt;\r\nDGMGRL&gt; switchover to pluggable database s2pdb1 at o21s2dg1;\r\nVerifying conditions for Switchover...\r\n\r\nConnected to \"o21s2dg1\"\r\nConnected to \"o21s1dg1\"\r\n  Source pluggable database is 'S2PDB1' at database 'o21s1dg1'\r\n\r\nPerforming switchover NOW, please wait...\r\n\r\n  Closing pluggable database 'S2PDB1'...\r\n  Switching 'S2PDB1' to standby role...\r\nConnected to \"o21s2dg1\"\r\n  Waiting for 'S2PDB1' to recover all redo data...\r\n  Stopping recovery at 'S2PDB1'...\r\n  Converting 'S2PDB1' to primary role...\r\n  Opening new primary 'S2PDB1'...\r\nConnected to \"o21s1dg1\"\r\n  Waiting for redo data from new primary 'S2PDB1'...\r\n  Starting recovery at new standby 'S2PDB1'...\r\n\r\nSwitchover succeeded, new primary is \"S2PDB1\"\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">And checking if the data was there:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o8s2n1-21c ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 21.0.0.0.0 - Production on Mon Dec 25 14:49:30 2023\r\nVersion 21.12.0.0.0\r\n\r\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 S2PDB1                         MOUNTED\r\nSQL&gt; alter pluggable database S2PDB1 open instances = all;\r\n\r\nPluggable database altered.\r\n\r\nSQL&gt; alter session set container = S2PDB1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; select * from t1;\r\n\r\nC1\r\n---------\r\n25-DEC-23\r\n25-DEC-23\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\r\nVersion 21.12.0.0.0\r\n[oracle@o8s2n1-21c ~]$<\/pre>\n<p style=\"text-align: justify;\">If you want to remove you can do this (in the example below remember to go to ASM and delete the datafiles):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; REMOVE PLUGGABLE DATABASE s2pdb1 AT o21s1dg1;\r\n\r\nPluggable Database 'S2PDB1' removed.\r\n\r\nNo more standby pluggable databases; stopping redo transport services at source database o21s2dg1...\r\nConnected to \"o21s2dg1\"\r\n\r\nSucceeded.\r\nDGMGRL&gt;<\/pre>\n<p style=\"text-align: justify;\">Or include the \u201c[REMOVE DATAFILES]\u201d:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">DGMGRL&gt; help remove\r\n\r\nRemoves a configuration or a member\r\n\r\nSyntax:\r\n\r\n  REMOVE CONFIGURATION [PRESERVE DESTINATIONS];\r\n\r\n  REMOVE CONFIGURATION &lt;configuration name&gt;;\r\n\r\n  REMOVE { RECOVERY_APPLIANCE | DATABASE | FAR_SYNC | MEMBER }\r\n    &lt;object name&gt; [PRESERVE DESTINATIONS];\r\n\r\n  REMOVE PLUGGABLE DATABASE &lt;pluggable database name&gt;\r\n    AT &lt;target CDB&gt; [REMOVE DATAFILES];\r\n\r\n  REMOVE INSTANCE &lt;instance name&gt; [ON { DATABASE | FAR_SYNC } &lt;object name&gt;];\r\n\r\nDGMGRL&gt;<\/pre>\n<h2 style=\"text-align: justify;\">DG PDB with 21.12<\/h2>\n<p style=\"text-align: justify;\">Resuming after this long post. <strong>The process was flawless, was perfect from beginning to end<\/strong>. The new command to prepare the config helped a lot and the errors disappeared. Just compare <a href=\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb\/\" target=\"_blank\" rel=\"noopener\">my previous post<\/a> with the process that I described here. I got no ORA-XXXX errors, just the simple (and now) documented needed to use the wallets, copy datafiles, and the archivelog (this is still one issue, but it is possible to understand what\/why happens).<\/p>\n<p style=\"text-align: justify;\">If you look at the online docs from 23c you can compare both. The commands that were added from 21c come directly from 23c, and this was nice. The process is not the same between 21c and 23c (look at the docs where the standby redo logs are now), but I liked to document the new command for 21c and how it helps the process. <strong>Well done Oracle, well done<\/strong>.<\/p>\n<p style=\"text-align: justify;\">&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong>Disclaimer<\/strong>: \u201c<em>The postings on this site are my own and don\u2019t necessarily represent my actual employer positions, strategies or opinions. The information here was edited to be useful for general purposes, and specific data and identifications were removed to allow reach the generic audience and to be useful for the community. Post protected by copyright.<\/em><\/p>\n<p style=\"text-align: justify;\">&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When the DGPDB was released for 21c (at version 21.7) I wrote a blog post about how to use the feature (you can read it here). This was in August of 2022 and since that time, we got small changes and corrections, but with the update 21.12 (patch 35740258) we got new commands like \u201cEDIT [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[164,50,41,29,5],"tags":[166,67,66,170,65,171],"class_list":["post-1005","post","type-post","status-publish","format-standard","hentry","category-21c","category-broker","category-data-guard","category-database","category-oracle","tag-21c","tag-data-guard","tag-database","tag-dg-pdb","tag-oracle","tag-troubleshoot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>21c, DG PDB, New Steps - Fernando Simon<\/title>\n<meta name=\"description\" content=\"DG PDB for 21c changed and new commands were added to PREPARE DGBPD. All the steps, logs, outputs, and errors are described. MAA with Data Guard, RAC, and ASM.\" \/>\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.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"21c, DG PDB, New Steps - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"DG PDB for 21c changed and new commands were added to PREPARE DGBPD. All the steps, logs, outputs, and errors are described. MAA with Data Guard, RAC, and ASM.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-25T22:56:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-25T23:33:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png\" \/>\n<meta name=\"author\" content=\"Simon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"21c, DG PDB, New Steps\",\"datePublished\":\"2023-12-25T22:56:33+00:00\",\"dateModified\":\"2023-12-25T23:33:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/\"},\"wordCount\":2629,\"commentCount\":2,\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png\",\"keywords\":[\"21c\",\"Data Guard\",\"Database\",\"DG PDB\",\"Oracle\",\"Troubleshoot\"],\"articleSection\":[\"21c\",\"Broker\",\"Data Guard\",\"Database\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/\",\"name\":\"21c, DG PDB, New Steps - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png\",\"datePublished\":\"2023-12-25T22:56:33+00:00\",\"dateModified\":\"2023-12-25T23:33:07+00:00\",\"author\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"DG PDB for 21c changed and new commands were added to PREPARE DGBPD. All the steps, logs, outputs, and errors are described. MAA with Data Guard, RAC, and ASM.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch.png\",\"contentUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch.png\",\"width\":1988,\"height\":932},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fernandosimon.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"21c, DG PDB, New Steps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/\",\"name\":\"Fernando Simon\",\"description\":\"Have you hugged your backup today?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\",\"name\":\"Simon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"caption\":\"Simon\"},\"sameAs\":[\"http:\/\/www.fernandosimon.com\"],\"url\":\"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"21c, DG PDB, New Steps - Fernando Simon","description":"DG PDB for 21c changed and new commands were added to PREPARE DGBPD. All the steps, logs, outputs, and errors are described. MAA with Data Guard, RAC, and ASM.","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.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/","og_locale":"en_US","og_type":"article","og_title":"21c, DG PDB, New Steps - Fernando Simon","og_description":"DG PDB for 21c changed and new commands were added to PREPARE DGBPD. All the steps, logs, outputs, and errors are described. MAA with Data Guard, RAC, and ASM.","og_url":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/","og_site_name":"Fernando Simon","article_published_time":"2023-12-25T22:56:33+00:00","article_modified_time":"2023-12-25T23:33:07+00:00","og_image":[{"url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png","type":"","width":"","height":""}],"author":"Simon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"21c, DG PDB, New Steps","datePublished":"2023-12-25T22:56:33+00:00","dateModified":"2023-12-25T23:33:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/"},"wordCount":2629,"commentCount":2,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png","keywords":["21c","Data Guard","Database","DG PDB","Oracle","Troubleshoot"],"articleSection":["21c","Broker","Data Guard","Database","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/","url":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/","name":"21c, DG PDB, New Steps - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch-1024x480.png","datePublished":"2023-12-25T22:56:33+00:00","dateModified":"2023-12-25T23:33:07+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"DG PDB for 21c changed and new commands were added to PREPARE DGBPD. All the steps, logs, outputs, and errors are described. MAA with Data Guard, RAC, and ASM.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#primaryimage","url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch.png","contentUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2023\/12\/DGDPDB-2112-Arch.png","width":1988,"height":932},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/21c-dg-pdb-new-steps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"21c, DG PDB, New Steps"}]},{"@type":"WebSite","@id":"https:\/\/www.fernandosimon.com\/blog\/#website","url":"https:\/\/www.fernandosimon.com\/blog\/","name":"Fernando Simon","description":"Have you hugged your backup today?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9","name":"Simon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","caption":"Simon"},"sameAs":["http:\/\/www.fernandosimon.com"],"url":"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5ofTp-gd","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/1005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/comments?post=1005"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/1005\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=1005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=1005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=1005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}