{"id":761,"date":"2020-07-06T17:35:24","date_gmt":"2020-07-06T20:35:24","guid":{"rendered":"https:\/\/www.fernandosimon.com\/blog\/?p=761"},"modified":"2020-07-19T19:06:44","modified_gmt":"2020-07-19T22:06:44","slug":"zdlra-configuring-replication-network","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/","title":{"rendered":"ZDLRA, Configuring Replication Network"},"content":{"rendered":"<p style=\"text-align: justify;\">Is common that our systems grow with time, and the environment that sustains it needs to improve. And the same occurs for ZDLRA. Imagine that now you added a new datacenter and bought a new ZDLRA and want to replicate between them, or that now you want to enable the replication, configuring it.<\/p>\n<p style=\"text-align: justify;\">This is possible and is not complicated to do, and I will show here how to do that. So, in this post, I will show how to configure the replication network for ZDLRA that was already deployed. Basically a post-install procedure.<\/p>\n<p style=\"text-align: justify;\"><!--more Click here to read more...--><\/p>\n<h2 style=\"text-align: justify;\">Replication network<\/h2>\n<p style=\"text-align: justify;\">In my <a href=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-replication\/\" target=\"_blank\" rel=\"noopener noreferrer\">previous post<\/a>, I already explain the basics of how the replication works for ZDLRA. And going deep about the replication, the ZDLRA have a physical dedicated network to replicate:<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-765 size-full\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.png\" alt=\"\" width=\"665\" height=\"795\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.png 665w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005-251x300.png 251w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005-624x746.png 624w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">And according to documentation:<\/p>\n<p style=\"text-align: justify;\">\u201c<em>The optional replication network connects the local Recovery Appliance (the upstream appliance) with a remote Recovery Appliance (the downstream appliance). Oracle recommends a broadband, encrypted network, instead of an insecure public network, wherever possible.<\/em>\u201d<\/p>\n<p style=\"text-align: justify;\">It is optional because you can share the same \u201cIngest Network\u201d to receive replication, but is not recommended. But whatever the network mode that you choose the \u201c<em>Replication Network<\/em>\u201d is a different subnet that not overlaps\/is part of the \u201cIngest Network\u201d.<\/p>\n<h3 style=\"text-align: justify;\">ZDLRA Environment<\/h3>\n<p style=\"text-align: justify;\">In this post I have two ZDLRA\u2019s to enable the replication. But this can vary in your scenario. So, I will show how to do in both nodes, in both ZDLRA\u2019s (will be 4 to do).<\/p>\n<p style=\"text-align: justify;\">So, use this as a guide on how to do, but remember to adapt to your environment. Ip\u2019s, physical networks (bond or no), and routes are an example of details that will change. I will focus on how to configure the GI and ZDLRA in this post.<\/p>\n<p style=\"text-align: justify;\">And the most important, I recommend opening a proactive SR at MOS informing what are you doing and asking doubts before the start. A good start point is a note \u201c<a href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocContentDisplay?id=2126047.1\" target=\"_blank\" rel=\"noopener noreferrer\">Post Install &#8211; Replication Network Configuration for ZDLRA (Doc ID 2126047.1)<\/a>\u201d at MOS.<\/p>\n<h3 style=\"text-align: justify;\">Basic network config<\/h3>\n<p style=\"text-align: justify;\">The network configuration follows the same as normal Linux network configuration: you need to define the separated ip\u2019s for both ZDLRA\u2019s, if you will use bond, or the route table. Since this depends on every environment I will not cover here.<\/p>\n<p style=\"text-align: justify;\">But basically:<\/p>\n<ol style=\"text-align: justify;\">\n<li>Hostname: You need to choose at least: 1 Hostname at your replication network for each node, 1 Hostname for VIP for each node<\/li>\n<li>Scan Hostname: 1 Hostname to be used as a scan for replication data exchange. The scan will be used for each ZDLRA that you are configuring.<\/li>\n<li>Configure network files: Configure the ifcfg files. The files ifcfg-eth2, ifcfg-eth3 and ifcfg-bondeth1 if you will use bond. If just ifcfg-eth2 if you will use a single connection. This is done in all nodes of the ZDLRA appliance.<\/li>\n<li>Route configuration: You need to guarantee that access made by the replication network is not routed through the normal ingest network. This depends on the way that you have your network architecture, but maybe you need to change the files \u201croute-*\u201d in each node.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">My current system is:<\/p>\n<ul style=\"text-align: justify;\">\n<li>ZDLRAS1: ZDLRA installed on site 1, have two nodes: zdlras1n1 and zdlras1n2. It will be upstream (who send backups).<\/li>\n<li>ZDLRAS2: ZDLRA installed on site 2, have two nodes: zdlras2n1 and zdlras2n2. It will be downstream (who received backup).<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">What I will add:<\/p>\n<ul style=\"text-align: justify;\">\n<li>ZDLRAS1: I will add: zdlras1n1-rvip (200.254.255.21) as replication vip for zdlras1n1, zdlras1n2-rvip (200.254.255.22) as replication vip for zdlras1n2. Scan zdlras1-rep.<\/li>\n<li>ZDLRAS2: I will add: zdlras1n1-rvip (200.254.255.23) as replication vip for zdlras2n1, zdlras2n2-rvip (200.254.255.24) as replication vip for zdlras2n2. Scan zdlras2-rep.<\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\">GI Configuration<\/h2>\n<p style=\"text-align: justify;\">The next step after the basic configuration is to configure the GI to add the network, vip, and scan.<\/p>\n<h3 style=\"text-align: justify;\">Checking interfaces<\/h3>\n<p style=\"text-align: justify;\">After you configure the Linux part and the network basic configuration the GI can be check if the new interface can be used by GI. So, the first step is to check this in <strong>both nodes in both ZDLRA\u2019s<\/strong> with command \u201c<em>oifcfg iflist<\/em>\u201d (I cropped below to show just what is needed):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream ZDLRA\r\n[root@zdlras1n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/oifcfg iflist -p -n\r\n\u2026\r\nbondeth1  200.254.255.0  UNKNOWN  255.255.255.0\r\n\u2026\r\n[root@zdlras1n1 ~]#\r\n\r\n############## Downstream ZDLRA\r\n[root@zdlras2n1 ~]#  \/u01\/app\/19.0.0.0\/grid\/bin\/oifcfg iflist -p -n\r\n\u2026\r\nbondeth1  200.254.255.0  UNKNOWN  255.255.255.0\r\n\u2026\r\n[root@zdlras2n1 ~]#<\/pre>\n<h3 style=\"text-align: justify;\">Add network<\/h3>\n<p style=\"text-align: justify;\">Since the interfaces are visible and not used, we can add the network number 2 at GI level. This is done in just one node per ZDLRA. TO do that we use the command \u201c<em>srvctl add network<\/em>\u201d as root user in both ZDLRA\u2019s that we are configuring:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream&nbsp;ZDLRA\r\n[root@zdlras1n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl config network -k 2\r\nPRCR-1001 : Resource ora.net2.network does not exist\r\n[root@zdlras1n1 ~]#\r\n[root@zdlras1n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add network -netnum 2 -subnet 200.254.255.0\/255.255.255.0\/bondeth1\r\n[root@zdlras1n1 ~]#\r\n[root@zdlras1n1 ~]# srvctl config network -k 2\r\nNetwork 2 exists\r\nSubnet IPv4: 200.254.255.0\/255.255.255.0\/bondeth1, static\r\nSubnet IPv6:\r\nPing Targets:\r\nNetwork is enabled\r\nNetwork is individually enabled on nodes:\r\nNetwork is individually disabled on nodes:\r\n[root@zdlras1n1 ~]#\r\n\r\n############## Downstream ZDLRA\r\n[root@zdlras2n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl config network -k 2\r\nPRCR-1001 : Resource ora.net2.network does not exist\r\n[root@zdlras2n1 ~]# \r\n[root@zdlras2n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add network -netnum 2 -subnet 200.254.255.0\/255.255.255.0\/bondeth1\r\n[root@zdlras2n1 ~]#\r\n[root@zdlras2n1 ~]# srvctl config network -k 2\r\nNetwork 2 exists\r\nSubnet IPv4: 200.254.255.0\/255.255.255.0\/bondeth1, static\r\nSubnet IPv6:\r\nPing Targets:\r\nNetwork is enabled\r\nNetwork is individually enabled on nodes:\r\nNetwork is individually disabled on nodes:\r\n[root@zdlras2n1 ~]#<\/pre>\n<p style=\"text-align: justify;\">Look above that we are using the bondeth1 as the interface for this network (the bondeth0 if for ingest network). And I tested if the network is available or no (need to be unused).<\/p>\n<h3 style=\"text-align: justify;\">Add VIP<\/h3>\n<p style=\"text-align: justify;\">After we can add the VIP for each node for each ZDLRA that we are configuring (done using \u201c<em>srvctl add vip<\/em>\u201d):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream&nbsp;ZDLRA\r\n[root@zdlras1n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add vip -n zdlras1n1 -A zdlras1n1-rvip.oralocal\/255.255.255.0\/bondeth1 -k 2\r\n[root@zdlras1n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add vip -n zdlras1n2 -A zdlras1n2-rvip.oralocal\/255.255.255.0\/bondeth1 -k 2\r\n[root@zdlras1n1 ~]#\r\n\r\n############## Downstream ZDLRA\r\n[root@zdlras2n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add vip -n zdlras2n1 -A zdlras2n1-rvip.oralocal\/255.255.255.0\/bondeth1 -k 2\r\n[root@zdlras2n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add vip -n zdlras2n2 -A zdlras2n2-rvip.oralocal\/255.255.255.0\/bondeth1 -k 2\r\n[root@zdlras2n1 ~]#<\/pre>\n<p style=\"text-align: justify;\">Check that I defined the hostname for each vip for each node and the parameter \u201c<em>k<\/em>\u201d that defined the network where this vip will be created. Be careful with the \u201cn\u201d parameter that defined the node name.<\/p>\n<h3 style=\"text-align: justify;\">Add Scan<\/h3>\n<p style=\"text-align: justify;\">After add vip we can add scan for each ZDLRA cluster with \u201c<em>srvctl add scan<\/em>\u201d:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream&nbsp;ZDLRA\r\n[root@zdlras1n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add scan -netnum 2 -scanname zdlras1-rep.oralocal\r\n[root@zdlras1n1 ~]#\r\n\r\n############## Second ZDLRA\r\n[root@zdlras2n1 ~]# \/u01\/app\/19.0.0.0\/grid\/bin\/srvctl add scan -netnum 2 -scanname zdlras2-rep.oralocal\r\n[root@zdlras2n1 ~]#<\/pre>\n<p style=\"text-align: justify;\">Be careful to use the connect \u201c<em>netnum<\/em>\u201d parameter value (needs to point to the second network) and scan name.<\/p>\n<h3 style=\"text-align: justify;\">Start Vip<\/h3>\n<p style=\"text-align: justify;\">After the scan we can start the vips for each node in each ZDLRA:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream&nbsp;ZDLRA\r\n[root@zdlras1n1 ~]# srvctl status vip -i zdlras1n1-rvip.oralocal\r\nVIP 200.254.255.21 is enabled\r\nVIP 200.254.255.21 is running on node: zdlras1n1\r\n[root@zdlras1n1 ~]#\r\n[root@zdlras1n1 ~]# srvctl status vip -i zdlras1n2-rvip.oralocal\r\nVIP 200.254.255.22 is enabled\r\nVIP 200.254.255.22 is running on node: zdlras1n2\r\n[root@zdlras1n1 ~]#\r\n\r\n############## Downstream ZDLRA\r\n[root@zdlras2n1 ~]# srvctl status vip -i zdlras2n1-rvip.oralocal\r\nVIP 200.254.255.23 is enabled\r\nVIP 200.254.255.23 is running on node: zdlras2n1\r\n[root@zdlras2n1 ~]#\r\n[root@zdlras2n1 ~]# srvctl status vip -i zdlras2n2-rvip.oralocal\r\nVIP 200.254.255.24 is enabled\r\nVIP 200.254.255.24 is running on node: zdlras2n2\r\n[root@zdlras2n1 ~]#\r\n<\/pre>\n<h3 style=\"text-align: justify;\">Create Listener<\/h3>\n<p style=\"text-align: justify;\">The last step for GI configuration is to create and start \u201clistener\u201d and \u201cscan listener\u201d in each ZDLRA cluster:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream&nbsp;ZDLRA\r\n[oracle@zdlras1n1 ~]$ export ORACLE_HOME=\/u01\/app\/19.0.0.0\/grid\r\n[oracle@zdlras1n1 ~]$ export PATH=$ORACLE_HOME\/bin:$PATH\r\n[oracle@zdlras1n1 ~]$   \r\n[oracle@zdlras1n1 ~]$ srvctl add listener -l LISTENER_REPL -p 1522 -k 2\r\n[oracle@zdlras1n1 ~]$ srvctl start listener -l LISTENER_REPL\r\n[oracle@zdlras1n1 ~]$ srvctl status listener -l LISTENER_REPL\r\nListener LISTENER_REPL is enabled\r\nListener LISTENER_REPL is running on node(s): zdlras1n1,zdlras1n2\r\n[oracle@zdlras1n1 ~]$\r\n[oracle@zdlras1n1 ~]$ srvctl add scan_listener -netnum 2 -listener LISTENER_REPL -endpoints TCP:1522\r\n[oracle@zdlras1n1 ~]$ srvctl start scan_listener -netnum 2\r\n[oracle@zdlras1n1 ~]$ srvctl status scan_listener -netnum 2\r\nSCAN Listener LISTENER_REPL_SCAN1_NET2 is enabled\r\nSCAN listener LISTENER_REPL_SCAN1_NET2 is running on node zdlras1n1\r\nSCAN Listener LISTENER_REPL_SCAN2_NET2 is enabled\r\nSCAN listener LISTENER_REPL_SCAN2_NET2 is running on node zdlras1n2\r\nSCAN Listener LISTENER_REPL_SCAN3_NET2 is enabled\r\nSCAN listener LISTENER_REPL_SCAN3_NET2 is running on node zdlras1n1\r\n[oracle@zdlras1n1 ~]$\r\n\r\n############## Downstream ZDLRA\r\n[root@zdlras2n1 ~]# su - oracle\r\nLast login: Sat Nov 23 21:28:03 CET 2019\r\n[oracle@zdlras2n1 ~]$ export ORACLE_HOME=\/u01\/app\/19.0.0.0\/grid\r\n[oracle@zdlras2n1 ~]$ export PATH=$ORACLE_HOME\/bin:$PATH\r\n[oracle@zdlras2n1 ~]$\r\n[oracle@zdlras2n1 ~]$ srvctl add listener -l LISTENER_REPL -p 1522 -k 2\r\n[oracle@zdlras2n1 ~]$ srvctl start listener -l LISTENER_REPL\r\n[oracle@zdlras2n1 ~]$ srvctl status listener -l LISTENER_REPL\r\nListener LISTENER_REPL is enabled\r\nListener LISTENER_REPL is running on node(s): zdlras2n1,zdlras2n2\r\n[oracle@zdlras2n1 ~]$\r\n[oracle@zdlras2n1 ~]$\r\n[oracle@zdlras2n1 ~]$ srvctl add scan_listener -netnum 2 -listener LISTENER_REPL -endpoints TCP:1522\r\n[oracle@zdlras2n1 ~]$ srvctl start scan_listener -netnum 2\r\n[oracle@zdlras2n1 ~]$ srvctl status scan_listener -netnum 2\r\nSCAN Listener LISTENER_REPL_SCAN1_NET2 is enabled\r\nSCAN listener LISTENER_REPL_SCAN1_NET2 is running on node zdlras2n1\r\nSCAN Listener LISTENER_REPL_SCAN2_NET2 is enabled\r\nSCAN listener LISTENER_REPL_SCAN2_NET2 is running on node zdlras2n2\r\nSCAN Listener LISTENER_REPL_SCAN3_NET2 is enabled\r\nSCAN listener LISTENER_REPL_SCAN3_NET2 is running on node zdlras2n1\r\n[oracle@zdlras2n1 ~]$\r\n[oracle@zdlras2n1 ~]$\r\n<\/pre>\n<p style=\"text-align: justify;\">The important detail here:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Port: it is 1522. Look at the \u201cendpoint\u201d parameter.<\/li>\n<li>Network: Check that listener is added ate network #2 (parameter \u201c<em>k<\/em>\u201d).<\/li>\n<li>Listener name: we use LISTENER_REPL to follow the ZDLRA default config.<\/li>\n<li>User: All the commands are run with <em>oracle<\/em><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">All the commands are executed in just one node of the cluster because they affect all nodes at the same time.<\/p>\n<p style=\"text-align: justify;\">With that now with have the network configured in each node of both ZDLRA\u2019s, all the vips and scan up and running, and also the listening to this new network.<\/p>\n<h2 style=\"text-align: justify;\">ZDLRA Configuration<\/h2>\n<p style=\"text-align: justify;\">Since we have all nodes with everything configured, we can add this network ad ZDLRA config. The idea for ZDLRA is to allow it to receive and send backups trough this new network, and this is incredibly easy.<\/p>\n<p style=\"text-align: justify;\">We need to change just two parameters at ZDLRA config tables: <em>REPLICATION_IP_ADDRESS<\/em> and <em>BACKUP_IP_ADDRESS<\/em>. <strong>The configuration change internal ZDLRA tables, so, before doing that review and check with Oracle Support at MOS if everything is OK and you can proceed<\/strong>.<\/p>\n<h3 style=\"text-align: justify;\">REPLICATION_IP_ADDRESS<\/h3>\n<p style=\"text-align: justify;\">This configuration resides at the internal \u201c<em>rasys.host<\/em>\u201d table for ZDLRA. So, we update the table column:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream&nbsp;ZDLRA\r\n[oracle@zdlras1n1 ~]$ sqlplus rasys\/change^Me2\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 23 23:22:09 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: Sat Nov 23 2019 21:33:26 +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; set linesize 250\r\nSQL&gt;\r\nSQL&gt; col node_name format a50\r\nSQL&gt; col REPLICATION_IP_ADDRESS format a50\r\nSQL&gt; select node_name,replication_ip_address from host;\r\n\r\nNODE_NAME                                          REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- --------------------------------------------------\r\nzdlras1n1.oralocal\r\nzdlras1n2.oralocal\r\n\r\nSQL&gt; update HOST set REPLICATION_IP_ADDRESS='200.254.255.21' where NODE_NAME = 'zdlras1n1.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt; update HOST set REPLICATION_IP_ADDRESS='200.254.255.22' where NODE_NAME = 'zdlras1n2.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt; select node_name,replication_ip_address from host;\r\n\r\nNODE_NAME                                          REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- --------------------------------------------------\r\nzdlras1n1.oralocal                                 200.254.255.21\r\nzdlras1n2.oralocal                                 200.254.255.22\r\n\r\nSQL&gt;\r\n\r\n############## Downstream ZDLRA\r\n[oracle@zdlras2n1 ~]$ sqlplus rasys\/change^Me2\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 23 23:39:13 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: Sat Nov 23 2019 19:54:17 +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; set linesize 250\r\nSQL&gt; col node_name format a50\r\nSQL&gt; col REPLICATION_IP_ADDRESS format a50\r\nSQL&gt;\r\nSQL&gt; select node_name,replication_ip_address from host;\r\n\r\nNODE_NAME                                          REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- --------------------------------------------------\r\nzdlras2n2.oralocal\r\nzdlras2n1.oralocal\r\n\r\nSQL&gt;\r\nSQL&gt; update HOST set REPLICATION_IP_ADDRESS='200.254.255.23' where NODE_NAME = 'zdlras2n1.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt; update HOST set REPLICATION_IP_ADDRESS='200.254.255.24' where NODE_NAME = 'zdlras2n2.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt;\r\nSQL&gt; select node_name,replication_ip_address from host;\r\n\r\nNODE_NAME                                          REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- --------------------------------------------------\r\nzdlras2n2.oralocal                                 200.254.255.24\r\nzdlras2n1.oralocal                                 200.254.255.23\r\n\r\nSQL&gt;\r\n<\/pre>\n<p style=\"text-align: justify;\">As you can see above, the REPLICATION_IP_ADDRESS for each node reflects the IP at the replication network.<\/p>\n<h3 style=\"text-align: justify;\">BACKUP_IP_ADDRESS<\/h3>\n<p style=\"text-align: justify;\">This configuration defines with IP\u2019s the ZDLRA allows ingesting backups. Since the replication basically is a ingest coming from other network, we need to allow it. To do that we change the table internal table <em>rai_host<\/em>. And, of course, we can commit if everything is OK.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">############## Upstream&nbsp;ZDLRA\r\nSQL&gt; col ADMIN_IP_ADDRESS format a30\r\nSQL&gt; col BACKUP_IP_ADDRESS format a30\r\nSQL&gt; SELECT * FROM rai_host;\r\n\r\nNODE_NAME                                          ADMIN_IP_ADDRESS               BACKUP_IP_ADDRESS              REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- ------------------------------ ------------------------------ --------------------------------------------------\r\nzdlras1n1.oralocal                                 10.160.5.1                     10.160.5.2                     200.254.255.21\r\nzdlras1n2.oralocal                                 10.160.5.3                     10.160.5.4                     200.254.255.22\r\n\r\nSQL&gt; UPDATE rai_host SET backup_ip_address='200.254.255.21,'|| backup_ip_address WHERE node_name = 'zdlras1n1.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt; UPDATE rai_host SET backup_ip_address='200.254.255.22,'|| backup_ip_address WHERE node_name = 'zdlras1n2.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt; SELECT * FROM rai_host;\r\n\r\nNODE_NAME                                          ADMIN_IP_ADDRESS               BACKUP_IP_ADDRESS              REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- ------------------------------ ------------------------------ --------------------------------------------------\r\nzdlras1n1.oralocal                                 10.160.5.1                     200.254.255.21,10.160.5.2      200.254.255.21\r\nzdlras1n2.oralocal                                 10.160.5.3                     200.254.255.22,10.160.5.4      200.254.255.22\r\n\r\nSQL&gt; commit;\r\n\r\nCommit complete.\r\n\r\nSQL&gt;\r\n\r\n############## Downstream ZDLRA\r\nSQL&gt; col ADMIN_IP_ADDRESS format a30\r\nSQL&gt; col BACKUP_IP_ADDRESS format a30\r\nSQL&gt;\r\nSQL&gt; SELECT * FROM rai_host;\r\n\r\nNODE_NAME                                          ADMIN_IP_ADDRESS               BACKUP_IP_ADDRESS              REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- ------------------------------ ------------------------------ --------------------------------------------------\r\nzdlras2n2.oralocal                                 10.160.6.3                     10.160.6.4                     200.254.255.24\r\nzdlras2n1.oralocal                                 10.160.6.1                     10.160.6.2                     200.254.255.23\r\n\r\nSQL&gt;\r\nSQL&gt; UPDATE rai_host SET backup_ip_address='200.254.255.23,'|| backup_ip_address WHERE node_name = 'zdlras2n1.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt; UPDATE rai_host SET backup_ip_address='200.254.255.24,'|| backup_ip_address WHERE node_name = 'zdlras2n2.oralocal';\r\n\r\n1 row updated.\r\n\r\nSQL&gt; SELECT * FROM rai_host;\r\n\r\nNODE_NAME                                          ADMIN_IP_ADDRESS               BACKUP_IP_ADDRESS              REPLICATION_IP_ADDRESS\r\n-------------------------------------------------- ------------------------------ ------------------------------ --------------------------------------------------\r\nzdlras2n2.oralocal                                 10.160.6.3                     200.254.255.24,10.160.6.4      200.254.255.24\r\nzdlras2n1.oralocal                                 10.160.6.1                     200.254.255.23,10.160.6.2      200.254.255.23\r\n\r\nSQL&gt; commit;\r\n\r\nCommit complete.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">After that, I recommend to reboot, ate least ZDLRA database to reload the configs. <strong>Again, remember that the values here (ip, networks, interfaces, and routes) will differ for you\u2019re your environment<\/strong>. Use as a guide.<\/p>\n<h2 style=\"text-align: justify;\">Replication<\/h2>\n<p style=\"text-align: justify;\">The replication for ZDLRA has some steps to be done. If we do this during the deployment is easier (since is done automatically by the installer). But if we need to do after (because adding or preparing the environment) is not complicated, but we need to be aware of some details.<\/p>\n<p style=\"text-align: justify;\">Be careful with a basic configuration like interface (bond or no), and ip\u2019s. They will change in your scenario, but the most important is to check the route. The packet route needs to travel just inside the replication network because the ZDLRA configuration (at internal tables) expects\/listens in just one ip.<\/p>\n<p style=\"text-align: justify;\">And about ZDLRA internal change, they occur at internal tables. So, always review correctly the values to avoid errors (before the commit). After that, we can use DBMS_RA.CREATE_REPLICATION_SERVER and create the replication server config, I will show this in another post.<\/p>\n<p style=\"text-align: justify;\">&nbsp;<\/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>Is common that our systems grow with time, and the environment that sustains it needs to improve. And the same occurs for ZDLRA. Imagine that now you added a new datacenter and bought a new ZDLRA and want to replicate between them, or that now you want to enable the replication, configuring it. This is [&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_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},"jetpack_post_was_ever_published":false},"categories":[29,77,5,140,51],"tags":[100,65,139,74],"class_list":["post-761","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 v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ZDLRA, Configuring Replication Network - Fernando Simon<\/title>\n<meta name=\"description\" content=\"Check all the details on how to configure the replication network for ZDLRA. This is needed when you are extending a pre-existing environment.\" \/>\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-configuring-replication-network\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ZDLRA, Configuring Replication Network - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"Check all the details on how to configure the replication network for ZDLRA. This is needed when you are extending a pre-existing environment.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-06T20:35:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-19T22:06:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.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=\"14 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-configuring-replication-network\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"ZDLRA, Configuring Replication Network\",\"datePublished\":\"2020-07-06T20:35:24+00:00\",\"dateModified\":\"2020-07-19T22:06:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/\"},\"wordCount\":1417,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/amogd_vm_005.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-configuring-replication-network\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/\",\"name\":\"ZDLRA, Configuring Replication Network - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/amogd_vm_005.png\",\"datePublished\":\"2020-07-06T20:35:24+00:00\",\"dateModified\":\"2020-07-19T22:06:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"Check all the details on how to configure the replication network for ZDLRA. This is needed when you are extending a pre-existing environment.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/amogd_vm_005.png\",\"contentUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/amogd_vm_005.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-configuring-replication-network\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ZDLRA, Configuring Replication Network\"}]},{\"@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:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"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, Configuring Replication Network - Fernando Simon","description":"Check all the details on how to configure the replication network for ZDLRA. This is needed when you are extending a pre-existing environment.","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-configuring-replication-network\/","og_locale":"en_US","og_type":"article","og_title":"ZDLRA, Configuring Replication Network - Fernando Simon","og_description":"Check all the details on how to configure the replication network for ZDLRA. This is needed when you are extending a pre-existing environment.","og_url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/","og_site_name":"Fernando Simon","article_published_time":"2020-07-06T20:35:24+00:00","article_modified_time":"2020-07-19T22:06:44+00:00","og_image":[{"url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.png","type":"","width":"","height":""}],"author":"Simon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"ZDLRA, Configuring Replication Network","datePublished":"2020-07-06T20:35:24+00:00","dateModified":"2020-07-19T22:06:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/"},"wordCount":1417,"commentCount":1,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.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-configuring-replication-network\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/","url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/","name":"ZDLRA, Configuring Replication Network - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.png","datePublished":"2020-07-06T20:35:24+00:00","dateModified":"2020-07-19T22:06:44+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"Check all the details on how to configure the replication network for ZDLRA. This is needed when you are extending a pre-existing environment.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/#primaryimage","url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.png","contentUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2020\/07\/amogd_vm_005.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-configuring-replication-network\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ZDLRA, Configuring Replication Network"}]},{"@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:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","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-ch","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/761","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=761"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/761\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}