{"id":773,"date":"2020-07-20T17:57:18","date_gmt":"2020-07-20T20:57:18","guid":{"rendered":"https:\/\/www.fernandosimon.com\/blog\/?p=773"},"modified":"2020-07-20T17:57:18","modified_gmt":"2020-07-20T20:57:18","slug":"zdlra-creating-the-replication-config","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/","title":{"rendered":"ZDLRA, Creating the Replication Config"},"content":{"rendered":"<p style=\"text-align: justify;\">The replication from ZDLRA is easy to configure and operate. Most of complex part resides for policy management and define correctly what will be replicated. I already wrote about the basics for ZDLRA Replication <a href=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-replication\/\" target=\"_blank\" rel=\"noopener noreferrer\">in this post<\/a>, and how to <a href=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/\" target=\"_blank\" rel=\"noopener noreferrer\">configure the dedicated network for replication in another post<\/a>.<\/p>\n<p style=\"text-align: justify;\">But also wrote how to startup and configure the replication server <a href=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-server\/\" target=\"_blank\" rel=\"noopener noreferrer\">in another post.<\/a> This is the first step and needs to be done before what I will describe in this post, they are the &#8220;physical&#8221; configuration. Here I will show the \u201clogical\u201d&nbsp; configuration for native ZDLRA replication and how correctly define it to avoid problems.<\/p>\n<p style=\"text-align: justify;\"><!--more Click here to read more...--><\/p>\n<h2 style=\"text-align: justify;\">Replication Workflow<\/h2>\n<p style=\"text-align: justify;\">The image below shows the official ZDLRA documentation and report the workflow related to replication <a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/zero-data-loss-recovery-appliance\/19.2\/amagd\/amagd_replication.html#GUID-5FF45961-7DAB-47FA-B233-FA90C2FCF607\" target=\"_blank\" rel=\"noopener noreferrer\">(can be found here<\/a>):<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-771 size-full\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png\" alt=\"\" width=\"651\" height=\"482\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png 651w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1-300x222.png 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1-624x462.png 624w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">And here too:<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_032.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-763\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_032.png\" alt=\"\" width=\"674\" height=\"120\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_032.png 674w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_032-300x53.png 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_032-624x111.png 624w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">If you look closely you can see that the policy definition is the base for replication, and came first. And this configuration can be more difficult to be done because can vary a lot (from each one), so, it is important to understand the concept.<\/p>\n<p style=\"text-align: justify;\"><strong>The focus in this post is to show how to configure the replication<\/strong>, linking policies, and replication server that we create in the previous post. I will cover more about the backupset replication at other posts. With this post, you can check how to create the replication config.<\/p>\n<p style=\"text-align: justify;\"><strong>To configure the replication, we use the DBMS_RA.ADD_REPLICATION_SERVER. Linking the server that we create in the previous post, with the desired policy.<\/strong><\/p>\n<h2 style=\"text-align: justify;\">Policies for Replication<\/h2>\n<p style=\"text-align: justify;\">Maybe the most important for a good ZDLRA replication is to understand the policies and the inter-relations. The ZDLRA does the replication based on protection policies, so, it replicates the policy.<\/p>\n<p style=\"text-align: justify;\">So, if your design for ZDLRA has few policies and a lot of databases inside of that (like SILVER, GOLD and PLATINUM policies), probably you need to change that and create dedicated policies for replication. If you do not do that, as explained before, all the database for that particular policy will be replicated. So, create dedicated policies and links with the databases that you want to replicate is the best practice.<\/p>\n<p style=\"text-align: justify;\">It is not a drawback (since you need to duplicate your policies), but a better design to avoid incorrect space and resource usage. And also avoid competition over the stream for the replication server.&nbsp;<\/p>\n<p style=\"text-align: justify;\">So, in this post, I will replicate the policy BRONZE only. Remember upstream is the ZDLRA that is sending the backup, and the downstream is the ZDLRA that is receiving the backups.<\/p>\n<h3 style=\"text-align: justify;\">Policies at Downstream<\/h3>\n<p style=\"text-align: justify;\">One important detail is that the policy at downstream can be completely different than at upstream, and don\u2019t need to be one to one. This means that you can have just one policy at downstream (even if the upstream is replicating more than one policy) and that the parameters like <em>recovery_window_goal<\/em> and <em>max_retention_window<\/em> can be different than upstream.<\/p>\n<p style=\"text-align: justify;\">By design, this can be important because you can have one small upstream ZDLRA, and one big downstream to store your backups more time. And since the rman catalog is self-managed everything will be automatically available.<\/p>\n<h2 style=\"text-align: justify;\">Creating the Configuration<\/h2>\n<h3 style=\"text-align: justify;\">Policies<\/h3>\n<h4 style=\"text-align: justify;\">Creating the policies at Upstream<\/h4>\n<p style=\"text-align: justify;\">So, we first create the policy at upstream, in this scenario the name is ZDLRAUP_BRONZE. If you already have the policy that you want to replicate, you can use it. But just remember that all databases linked with the policy will have backupsets replicated.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@zdlras1n1 ~]$ sqlplus rasys\/change^Me2\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 22 19:13:41 2019\r\nVersion 19.3.0.0.0\r\n\r\nCopyright (c) 1982, 2019, Oracle.  All rights reserved.\r\n\r\nLast Successful login time: Sun Dec 22 2019 18:09:24 +01:00\r\n\r\nConnected to:\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.3.0.0.0\r\n\r\nSQL&gt; BEGIN\r\n  2  DBMS_RA.CREATE_PROTECTION_POLICY(\r\n  3      protection_policy_name =&gt; 'ZDLRAUP_BRONZE'\r\n  4      , description =&gt; 'Policy ZDLRA MAA BRONZE'\r\n  5      , storage_location_name =&gt; 'DELTA'\r\n  6      , recovery_window_goal =&gt; INTERVAL '14' DAY\r\n  7      , max_retention_window =&gt; INTERVAL '21' DAY\r\n  8      , recovery_window_sbt =&gt; INTERVAL '30' DAY\r\n  9      , guaranteed_copy =&gt; 'NO'\r\n 10      , allow_backup_deletion =&gt; 'YES'\r\n 11  );\r\n 12  END;\r\n 13  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt;<\/pre>\n<h4 style=\"text-align: justify;\">Creating the policies at downstream<\/h4>\n<p style=\"text-align: justify;\">Now we create the policy at downstream, remember that they can have different parameter values (that it is the case for recovery window values):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@zdlras2n1 ~]$ sqlplus rasys\/change^Me2\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 22 20:22:52 2019\r\nVersion 19.3.0.0.0\r\n\r\nCopyright (c) 1982, 2019, Oracle.  All rights reserved.\r\n\r\nLast Successful login time: Sun Dec 22 2019 19:24:02 +01:00\r\n\r\nConnected to:\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.3.0.0.0\r\n\r\nSQL&gt; BEGIN\r\n  2  DBMS_RA.CREATE_PROTECTION_POLICY(\r\n  3      protection_policy_name =&gt; 'ZDLRA_BRONZE_REP'\r\n  4      , description =&gt; 'Policy ZDLRA MAA BRONZE'\r\n  5      , storage_location_name =&gt; 'DELTA'\r\n  6      , recovery_window_goal =&gt; INTERVAL '28' DAY\r\n  7      , max_retention_window =&gt; INTERVAL '45' DAY\r\n  8      , recovery_window_sbt =&gt; INTERVAL '60' DAY\r\n  9      , guaranteed_copy =&gt; 'NO'\r\n 10      , allow_backup_deletion =&gt; 'YES'\r\n 11  );\r\n 12  END;\r\n 13  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt;<\/pre>\n<h3 style=\"text-align: justify;\">ADD_DB and GRANT_DB_ACCESS<\/h3>\n<h4 style=\"text-align: justify;\">Grant access at upstream<\/h4>\n<p style=\"text-align: justify;\">For upstream we just need to add the db and grant the access just for only to one VPC. Remember that in the previous post we not create the VPC at upstream ZDLRA? This is because we use a pre-existence VCP. But if you want to know how it is made you can see here below. Just remember that this is not needed if you already registered the database at your upstream ZDLRA.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@zdlras1n1 ~]$ sqlplus rasys\/change^Me2\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 22 20:30:59 2019\r\nVersion 19.3.0.0.0\r\n\r\nCopyright (c) 1982, 2019, Oracle.  All rights reserved.\r\n\r\nLast Successful login time: Sun Dec 22 2019 19:13:41 +01:00\r\n\r\nConnected to:\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.3.0.0.0\r\n\r\nSQL&gt; BEGIN\r\n  2  DBMS_RA.ADD_DB(\r\n  3        db_unique_name =&gt; 'ORCL19'\r\n  4        , protection_policy_name =&gt; 'ZDLRAUP_BRONZE'\r\n  5        , reserved_space =&gt; '7G'\r\n  6  );\r\n  7  END;\r\n  8  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt; BEGIN\r\n  2  DBMS_RA.GRANT_DB_ACCESS (\r\n  3        db_unique_name =&gt; 'ORCL19'\r\n  4        , username =&gt; 'VPCSRC'\r\n  5  );\r\n  6  END;\r\n  7  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\"><strong>So, in this case we have database ORCL19 linked with the user \u201c<em>vpcsrc\u201d<\/em> and with policy <em>ZDLRAUP_BRONZE<\/em> that we create before.<\/strong><\/p>\n<h4 style=\"text-align: justify;\">Grant access at downstream<\/h4>\n<p style=\"text-align: justify;\">Here we can see a big key point since we need to grant access to both VPC users that we create downstream. Doing this we grant the access at the user used to do the replication itself, and to the VPC for catalog access.<\/p>\n<p style=\"text-align: justify;\">So, we can access directly the catalog at ZDLRA downstream (to use when the upstream is unavailable as an example) to do restore. Downstream ZDLRA can configure sync (send) backups to upstream (when it returns available), but I will not cover in this post.<\/p>\n<p style=\"text-align: justify;\">So, we grant access:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@zdlras2n1 ~]$ sqlplus rasys\/change^Me2\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 22 20:22:52 2019\r\nVersion 19.3.0.0.0\r\n\r\nCopyright (c) 1982, 2019, Oracle.  All rights reserved.\r\n\r\nLast Successful login time: Sun Dec 22 2019 19:24:02 +01:00\r\n\r\nConnected to:\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.3.0.0.0\r\n\r\nSQL&gt; BEGIN\r\n  2  DBMS_RA.ADD_DB(\r\n  3        db_unique_name =&gt; 'ORCL19'\r\n  4        , protection_policy_name =&gt; 'ZDLRA_BRONZE_REP'\r\n  5        , reserved_space =&gt; '7G'\r\n  6  );\r\n  7  END;\r\n  8  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt; BEGIN\r\n  2  DBMS_RA.GRANT_DB_ACCESS (\r\n  3        db_unique_name =&gt; 'ORCL19'\r\n  4        , username =&gt; 'VPCREP'\r\n  5  );\r\n  6  END;\r\n  7  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt; BEGIN\r\n  2  DBMS_RA.GRANT_DB_ACCESS (\r\n  3        db_unique_name =&gt; 'ORCL19'\r\n  4        , username =&gt; 'REPUSR_FROM_ZDLRAS1'\r\n  5  );\r\n  6  END;\r\n  7  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\"><strong>Look that now the ORCL19 is linked with the policy ZDLRA_BRONZE_REP. And the downstream ZDLRA can receive backups of this database from two users, <em>vpcrep<\/em> and <em>repusr_from_zdlras1<\/em>.<\/strong><\/p>\n<h3 style=\"text-align: justify;\">DBMS_RA.ADD_REPLICATION_SERVER<\/h3>\n<p style=\"text-align: justify;\">In the previous post the DBMS_RA.CREATE_REPLICATION_SERVER was used to create the replication server upstream. And now, we use the DBMS_RA.ADD_REPLICATION_SERVER to link this server and the policy that we want to replicate.<\/p>\n<p style=\"text-align: justify;\">It is simple to call done at ZDLRA upstream:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@zdlras1n1 ~]$ sqlplus rasys\/change^Me2\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 22 20:46:51 2019\r\nVersion 19.3.0.0.0\r\n\r\nCopyright (c) 1982, 2019, Oracle.  All rights reserved.\r\n\r\nLast Successful login time: Sun Dec 22 2019 20:33:15 +01:00\r\n\r\nConnected to:\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\r\nVersion 19.3.0.0.0\r\n\r\nSQL&gt; SELECT COUNT(*)  FROM RA_REPLICATION_SERVER;\r\n\r\n  COUNT(*)\r\n----------\r\n         1\r\n\r\nSQL&gt; BEGIN\r\n  2    DBMS_RA.ADD_REPLICATION_SERVER (\r\n  3      replication_server_name =&gt; 'zdlras2_rep',\r\n  4      protection_policy_name  =&gt; 'ZDLRAUP_BRONZE'\r\n  5    );\r\n  6  END;\r\n  7  \/\r\n\r\nPL\/SQL procedure successfully completed.\r\n\r\nSQL&gt; col REPLICATION_SERVER_NAME format a30\r\nSQL&gt; col PROTECTION_POLICY format a20\r\nSQL&gt; col REP_SERVER_CONNECT_NAME format a20\r\nSQL&gt; set linesize 250\r\nSQL&gt; select REPLICATION_SERVER_NAME, REPLICATION_SERVER_STATE, PROTECTION_POLICY, REP_SERVER_CONNECT_NAME, MAX_STREAMS from RA_REPLICATION_SERVER;\r\n\r\nREPLICATION_SERVER_NAME        REPLICATION_SERVER_ST PROTECTION_POLICY    REP_SERVER_CONNECT_N MAX_STREAMS\r\n------------------------------ --------------------- -------------------- -------------------- -----------\r\nZDLRAS2_REP                    RUNNING               ZDLRAUP_BRONZE       RASYS                          4\r\n\r\nSQL&gt;<\/pre>\n<p><strong>As you can see above, the upstream ZDLRA (ZDLRAS1) is creating the ZDLRAS2_REP using the DBMS_RA.ADD_REPLICATION_SERVER to replicate ZDLRAUP_BRONZE policy. And if we need to have more policies to be replicated, we need to create new replication servers calling DBMS_RA.ADD_REPLICATION_SERVER. Doing that more lines will appear at rasys.ra_replication_server table. <\/strong><\/p>\n<p style=\"text-align: justify;\">So, the relation is 1 to 1 for replication_server_name and protection policy. If you are replicating more than one policy, is best practice to create a readable and distinct name for replication_server_name.<\/p>\n<h3>Doing backup, example<\/h3>\n<p>If the database is recently added, we can register the database at rman catalog. But whatever it is a new, or old database, we can do the backup and check that they will be replicated and the rman catalog is automatically aware of that,<\/p>\n<p>I will cover more about the rman backupset replication in other posts. But with what we made here, the \u201creplication\u201d configuration is done.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">RMAN&gt; CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' FORMAT '%d_%U' PARMS \"SBT_LIBRARY=\/u01\/app\/oracle\/product\/19.3.0.0\/dbhome_1\/lib\/libra.so, ENV=(RA_WALLET='location=file:\/u01\/app\/oracle\/product\/18.6.0.0\/dbhome_1\/dbs\/ra_wallet credential_alias=zdlras1-scan:1521\/zdlras1:VPCSRC')\";\r\n\r\nnew RMAN configuration parameters:\r\nCONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' FORMAT   '%d_%U' PARMS  \"SBT_LIBRARY=\/u01\/app\/oracle\/product\/19.3.0.0\/dbhome_1\/lib\/libra.so, ENV=(RA_WALLET='location=file:\/u01\/app\/oracle\/product\/18.6.0.0\/dbhome_1\/dbs\/ra_wallet credential_alias=zdlras1-scan:1521\/zdlras1:VPCSRC')\";\r\nnew RMAN configuration parameters are successfully stored\r\nstarting full resync of recovery catalog\r\nfull resync complete\r\n\r\nRMAN&gt; BACKUP INCREMENTAL LEVEL 0 DEVICE TYPE SBT FILESPERSET 1 DATAFILE 1 TAG 'BKP-DB-INC0';\r\n\r\nStarting backup at 22-12-2019_21:54:44\r\nallocated channel: ORA_SBT_TAPE_1\r\nchannel ORA_SBT_TAPE_1: SID=62 device type=SBT_TAPE\r\nchannel ORA_SBT_TAPE_1: RA Library (ZDLRAS1) SID=9A521EDF1FE73C47E053010310AC5B4E\r\nchannel ORA_SBT_TAPE_1: starting incremental level 0 datafile backup set\r\nchannel ORA_SBT_TAPE_1: specifying datafile(s) in backup set\r\ninput datafile file number=00001 name=\/u01\/app\/oracle\/oradata\/ORCL19\/system01.dbf\r\nchannel ORA_SBT_TAPE_1: starting piece 1 at 22-12-2019_21:54:47\r\nchannel ORA_SBT_TAPE_1: finished piece 1 at 22-12-2019_21:57:32\r\npiece handle=ORCL19_16uk3h97_1_1 tag=BKP-DB-INC0 comment=API Version 2.0,MMS Version 12.2.0.2\r\nchannel ORA_SBT_TAPE_1: backup set complete, elapsed time: 00:02:45\r\nFinished backup at 22-12-2019_21:57:32\r\n\r\nStarting Control File and SPFILE Autobackup at 22-12-2019_21:57:32\r\npiece handle=c-323177095-20191222-01 comment=API Version 2.0,MMS Version 12.2.0.2\r\nFinished Control File and SPFILE Autobackup at 22-12-2019_21:57:44\r\n\r\nRMAN&gt;<\/pre>\n<p style=\"text-align: justify;\">And after that we can see that backupset is replicated in the downstream ZDLRA:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">RMAN&gt; list backup of datafile 1 completed before \"to_date('22\/12\/2019 22:05:00','dd\/mm\/rrrr hh24:mi:ss')\";\r\n\r\n\r\nList of Backup Sets\r\n===================\r\n\r\n\r\nBS Key  Type LV Size\r\n------- ---- -- ----------\r\n9221    Incr 0  321.61M\r\n  List of Datafiles in backup set 9221\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  1    0  Incr 2064007    22\/12\/2019 21:54:47              NO    \/u01\/app\/oracle\/oradata\/ORCL19\/system01.dbf\r\n\r\n  Backup Set Copy #1 of backup set 9221\r\n  Device Type Elapsed Time Completion Time     Compressed Tag\r\n  ----------- ------------ ------------------- ---------- ---\r\n  SBT_TAPE    00:05:32     22\/12\/2019 22:00:20 YES        BKP-DB-INC0\r\n\r\n    List of Backup Pieces for backup set 9221 Copy #1\r\n    BP Key  Pc# Status      Media                   Piece Name\r\n    ------- --- ----------- ----------------------- ----------\r\n    9222    1   AVAILABLE                           VB$_1891149551_9211I\r\n\r\n  Backup Set Copy #2 of backup set 9221\r\n  Device Type Elapsed Time Completion Time     Compressed Tag\r\n  ----------- ------------ ------------------- ---------- ---\r\n  SBT_TAPE    00:05:32     22\/12\/2019 22:00:19 YES        BKP-DB-INC0\r\n\r\n    List of Backup Pieces for backup set 9221 Copy #2\r\n    BP Key  Pc# Status      Media                   Piece Name\r\n    ------- --- ----------- ----------------------- ----------\r\n    9674    1   AVAILABLE   ZDLRAS2_REP             VB$_2127575003_7524I\r\n\r\nRMAN&gt;<\/pre>\n<p style=\"text-align: justify;\">Look above that the backupset of datafile 1 that we made before (look the Ckp Time) has two backupiece copies. The copy number 1 is in ZDLRA upstream (media is empty) and another at ZDLRA downstream (media report ZDLRAS2_REP).<\/p>\n<h2 style=\"text-align: justify;\">The Replication Config<\/h2>\n<p style=\"text-align: justify;\">With the DBMS_RA.ADD_REPLICATION_SERVER we finish the configuration for our native ZDLRA replication. The server configuration was made in the previous post, and the link between the database, replication server, and protection policy, was made in this post.<\/p>\n<p style=\"text-align: justify;\">The most important is to understand that replication is based on protection policy. You can add more than one policy to replicate, this is not a problem. But you need to understand that all databases liked with the policy will have backupset replicated. So, create the policies correctly is crucial to avoid \u201cwaste\u201d replication throughput sending something that is not needed.<\/p>\n<p style=\"text-align: justify;\">In the next post, I will show the detail of how the replication works for database and how this appears\/interact with the rman catalog, and what you can do with that.<\/p>\n<p style=\"text-align: justify;\">&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong>Disclaimer<\/strong>: <em>\u201cThe 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 purpose, specific data and identifications were removed to allow reach the generic audience and to be useful for the community. Post protected by copyright.\u201d<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The replication from ZDLRA is easy to configure and operate. Most of complex part resides for policy management and define correctly what will be replicated. I already wrote about the basics for ZDLRA Replication in this post, and how to configure the dedicated network for replication in another post. But also wrote how to startup [&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":[29,77,5,140,51],"tags":[100,65,139,74],"class_list":["post-773","post","type-post","status-publish","format-standard","hentry","category-database","category-engineeredsystems","category-oracle","category-replication","category-zdlra","tag-engineered-systems","tag-oracle","tag-replication","tag-zdlra"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ZDLRA, Creating the Replication Config - Fernando Simon<\/title>\n<meta name=\"description\" content=\"How to use ADD_REPLICATION_SERVER to configure and add the database (also the protection policy) to replicated ZDLRA config.\" \/>\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\/zdlra-creating-the-replication-config\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ZDLRA, Creating the Replication Config - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"How to use ADD_REPLICATION_SERVER to configure and add the database (also the protection policy) to replicated ZDLRA config.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-20T20:57:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.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\/zdlra-creating-the-replication-config\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"ZDLRA, Creating the Replication Config\",\"datePublished\":\"2020-07-20T20:57:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/\"},\"wordCount\":1309,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png\",\"keywords\":[\"Engineered Systems\",\"Oracle\",\"Replication\",\"ZDLRA\"],\"articleSection\":[\"Database\",\"Engineered Systems\",\"Oracle\",\"Replication\",\"ZDLRA\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/\",\"name\":\"ZDLRA, Creating the Replication Config - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png\",\"datePublished\":\"2020-07-20T20:57:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"How to use ADD_REPLICATION_SERVER to configure and add the database (also the protection policy) to replicated ZDLRA config.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png\",\"contentUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fernandosimon.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ZDLRA, Creating the Replication Config\"}]},{\"@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":"ZDLRA, Creating the Replication Config - Fernando Simon","description":"How to use ADD_REPLICATION_SERVER to configure and add the database (also the protection policy) to replicated ZDLRA config.","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\/zdlra-creating-the-replication-config\/","og_locale":"en_US","og_type":"article","og_title":"ZDLRA, Creating the Replication Config - Fernando Simon","og_description":"How to use ADD_REPLICATION_SERVER to configure and add the database (also the protection policy) to replicated ZDLRA config.","og_url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/","og_site_name":"Fernando Simon","article_published_time":"2020-07-20T20:57:18+00:00","og_image":[{"url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.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\/zdlra-creating-the-replication-config\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"ZDLRA, Creating the Replication Config","datePublished":"2020-07-20T20:57:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/"},"wordCount":1309,"commentCount":0,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png","keywords":["Engineered Systems","Oracle","Replication","ZDLRA"],"articleSection":["Database","Engineered Systems","Oracle","Replication","ZDLRA"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/","url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/","name":"ZDLRA, Creating the Replication Config - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png","datePublished":"2020-07-20T20:57:18+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"How to use ADD_REPLICATION_SERVER to configure and add the database (also the protection policy) to replicated ZDLRA config.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#primaryimage","url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png","contentUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amagd_vm_048-1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-creating-the-replication-config\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ZDLRA, Creating the Replication Config"}]},{"@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-ct","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/773","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=773"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/773\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}