{"id":615,"date":"2019-10-09T18:26:44","date_gmt":"2019-10-09T21:26:44","guid":{"rendered":"http:\/\/www.fernandosimon.com\/blog\/?p=615"},"modified":"2020-07-19T19:16:16","modified_gmt":"2020-07-19T22:16:16","slug":"zdlra-real-time-redo","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/","title":{"rendered":"ZDLRA, Real-Time Redo"},"content":{"rendered":"<p style=\"text-align: justify;\">Real-time redo transport is the feature that allows you to reduce to zero the RPO (Recovery Point Objective) for your database. Check how to configure real-time redo, the steps, parameters, and other details that need to be modified to enable it.<\/p>\n<p style=\"text-align: justify;\">The idea behind real-time redo transport it is easy, basically the ZDLRA it is a remote destination for your redo log buffers\/archivelogs of your database. It is really, really, similar to what occurs for data guard configurations (but here you don\u2019t need to set all datafiles as an example). It is not the same too because ZDLRA can detect if the database stops\/crash and will generate the archivelog (at ZDLRA side) with all the received redo and this can be used to restore to, at least zero\/sub-seconds, of data loss.<\/p>\n<p style=\"text-align: justify;\">Using real-time redo it is the only way to reach RPO zero. With other features of ZDLRA, you can have a better backup window time (but just that) using incremental backups. Just using real-time redo you reach zero RPO and this impacts directly how to configure for MAA compliance. There are a lot of options and level of protection for MAA that you can check at \u201c<a href=\"https:\/\/www.oracle.com\/a\/tech\/docs\/maa-overview-onpremise-2019.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Maximum Availability Architecture (MAA) &#8211; On-Premises HA Reference Architectures 2019<\/a>\u201d, \u201c<a href=\"https:\/\/www.oracle.com\/a\/tech\/docs\/cloud-maa-overview.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Maximum Availability Architecture Best Practices for Oracle Cloud<\/a>\u201d, \u201c<a href=\"https:\/\/www.oracle.com\/technetwork\/database\/availability\/maa-reference-architectures-2244929.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle MAA Reference Architectures<\/a>\u201d, \u201c<a href=\"https:\/\/www.oracle.com\/a\/tech\/docs\/tip4847-maa-best-practices-for-database.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Maximum Availability Architecture &#8211; Best Practices for Oracle Database 19c<\/a>\u201d.<\/p>\n<p style=\"text-align: justify;\">This post starts from one environment that you already enrolled in the database at ZDLRA. I already wrote about how to do that, you can check <a href=\"http:\/\/www.fernandosimon.com\/blog\/how-to-use-zdlra-and-enroll-a-database\/\" target=\"_blank\" rel=\"noopener noreferrer\">here in my previous post<\/a>. This is the first post about real-time redo, here you will see how to configure and verify it is working.<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-616\" src=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png\" alt=\"\" width=\"368\" height=\"155\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png 368w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport-300x126.png 300w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><!--more Click here to read more...--><\/p>\n<h2 style=\"text-align: justify;\">Pre-Check<\/h2>\n<p style=\"text-align: justify;\">The way that I configure real-time redo for database it is a little different than what is in the official docs. I added some pre-checks and another order for some steps, but the result is the same. If you want to check the official steps you can check at <a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/zero-data-loss-recovery-appliance\/19.2\/ampdb\/zero-data-loss-recovery-appliance-protected-database-configuration-guide.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Zero Data Loss Recovery Appliance Protected Database Configuration Guide<\/a> or at <a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/zero-data-loss-recovery-appliance\/19.2\/amagd\/zero-data-loss-recovery-appliance-administrators-guide.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Zero Data Loss Recovery Appliance Administrator&#8217;s Guide<\/a>.<\/p>\n<p style=\"text-align: justify;\">Just contextualization of environment:<\/p>\n<ul style=\"text-align: justify;\">\n<li>ZDLRA database name: zdlras1<\/li>\n<li>Database name: orcl19<\/li>\n<li>VPC user: cat_zdlra<\/li>\n<\/ul>\n<h3 style=\"text-align: justify;\">Check Configuration<\/h3>\n<p style=\"text-align: justify;\">The first step that I do is verify the current configuration. Mainly the preexistence of wallet:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@orcloel7 ~]$ mkstore -wrl \/u01\/app\/oracle\/product\/19.3.0.0\/dbhome_1\/dbs\/ra_wallet -listCredential\r\nOracle Secret Store Tool Release 19.0.0.0.0 - Production\r\nVersion 19.3.0.0.0\r\nCopyright (c) 2004, 2019, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nList credential (index: connect_string username)\r\n1: zdlras1-scan:1521\/zdlras1:CAT_ZDLRA cat_zdlra\r\n[oracle@orcloel7 ~]$\r\n[oracle@orcloel7 ~]$ cat $ORACLE_HOME\/dbs\/raORCL19.ora\r\nRA_WALLET='LOCATION=file:\/u01\/app\/oracle\/product\/19.3.0.0\/dbhome_1\/dbs\/ra_wallet CREDENTIAL_ALIAS=zdlras1-scan:1521\/zdlras1:CAT_ZDLRA'\r\n[oracle@orcloel7 ~]$<\/pre>\n<p style=\"text-align: justify;\">The most import here is the credential name (<strong>zdlras1-scan:1521\/zdlras1:CAT_ZDLRA<\/strong> in this case) because it needs to be the same name for the database file that points to RA_WALLET. The config file is for each database\/instance and has the name <strong>ra&lt;DBNAME&gt;.ora<\/strong> (it was already configured by the previous post pointed before).<\/p>\n<p style=\"text-align: justify;\">After that, I check if the sqlnet.ora and tnsnames.ora have the information for wallet and TNS entry respectively:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@orcloel7 ~]$ cat $ORACLE_HOME\/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\/product\/19.3.0.0\/dbhome_1\/dbs\/ra_wallet)\r\n      )\r\n)\r\n[oracle@orcloel7 ~]$\r\n[oracle@orcloel7 ~]$ tnsping zdlras1\r\n\r\nTNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 01-OCT-2019 23:30:36\r\n\r\nCopyright (c) 1997, 2019, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\/u01\/app\/oracle\/product\/19.3.0.0\/dbhome_1\/network\/admin\/sqlnet.ora\r\n\r\n\r\nUsed TNSNAMES adapter to resolve the alias\r\nAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = zdlras1-scan)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = zdlras1)))\r\nOK (0 msec)\r\n[oracle@orcloel7 ~]$\r\n<\/pre>\n<h3 style=\"text-align: justify;\">Check Database Configuration<\/h3>\n<p style=\"text-align: justify;\">After check outside of the database config, it is important to check some database requirements. The most import is verifying if REMOTE_LOGIN_PASSWORDFILE it is set as \u201cexclusive\u201d or \u201cshared\u201d:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@orcloel7 ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 1 23:32:09 2019\r\nVersion 19.3.0.0.0\r\n\r\nCopyright (c) 1982, 2019, Oracle.  All rights reserved.\r\n\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;\r\nSQL&gt; show parameter REMOTE_LOGIN_PASSWORDFILE;\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nremote_login_passwordfile            string      EXCLUSIVE\r\nSQL&gt;\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">Other parameters to verify are log_archive_config and db_unique_name. They are important to verify the current configuration in cases of databases using DG as an example.<\/p>\n<h2 style=\"text-align: justify;\">Configuring Real-Time Redo<\/h2>\n<p style=\"text-align: justify;\">After these pre-checks, we can start the configuration. Here I set everything at spfile to, after configuring everything, bounce the database and start with everything up and running.<\/p>\n<h3 style=\"text-align: justify;\">REDO_TRANSPORT_USER<\/h3>\n<p style=\"text-align: justify;\">It is the parameter that defines the user that the database utilizes to send the redo to another database. This user needs to exist in both databases (for DG), and because of that needs to exist in ZDLRA. When using ZDLRA and real-time redo it <strong>needs to be the same<\/strong> as VPC inside the database. So, the same VPC user needs to exists in database side and set for this parameter:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; show parameter redo_transport_user;\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nredo_transport_user                  string\r\nSQL&gt;\r\nSQL&gt; alter system set redo_transport_user='CAT_ZDLRA' scope = spfile SID='*';\r\n\r\nSystem altered.\r\n\r\nSQL&gt;\r\nSQL&gt; create user cat_zdlra identified by s3nhazdlra;\r\n\r\nUser created.\r\n\r\nSQL&gt; grant sysoper to cat_zdlra;\r\n\r\nGrant succeeded.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">As you can see the user CAT_ZDLRA was created inside of the database. The user needs to have at least the grant SYSOPER to work properly.<\/p>\n<h3 style=\"text-align: justify;\">LOG_ARCHIVE_CONFIG<\/h3>\n<p style=\"text-align: justify;\">This parameter works the same for DG environments, and since ZDLRA real-time redo it is a remote destination for archive, we do the same. Here, we set this specifying the database unique name for ZDLRA here (zdlras1 in my current environment):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; show parameter log_archive_config;\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nlog_archive_config                   string\r\nSQL&gt;\r\nSQL&gt; show parameter db_unique_name;\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ndb_unique_name                       string      ORCL19\r\nSQL&gt;\r\nSQL&gt; ALTER SYSTEM SET log_archive_config='DG_CONFIG=(orcl19,zdlras1)' SCOPE=SPFILE SID='*';\r\n\r\nSystem altered.\r\n\r\nSQL&gt;\r\n<\/pre>\n<p style=\"text-align: justify;\">If you already have DG configured, you need to just add the entry for ZDLRA database here in the parameter.<\/p>\n<h3 style=\"text-align: justify;\">LOG_ARCHIVE_DEST_n<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; ALTER SYSTEM SET log_archive_dest_2='SERVICE=\"zdlras1-scan:1521\/zdlras1:CAT_ZDLRA\" ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=1 max_connections=1 reopen=10 DB_UNIQUE_NAME=zdlras1 net_timeout=8 group=1 priority=1 VALID_FOR=(ONLINE_LOGFILE,ALL_ROLES)' scope = spfile sid = '*';\r\n\r\nSystem altered.\r\n\r\nSQL&gt;\r\nSQL&gt; alter system set log_archive_dest_state_2=DEFER scope = spfile sid = '*';\r\n\r\nSystem altered.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">The secrets are:<\/p>\n<ul style=\"text-align: justify;\">\n<li>SERVICE: it is the connection to ZDLRA. It can be a TNS service name, or an ezconnect. If you sawm I have the credential name, as the same of ezconnection. I recommend to use this, so you know what the credential it is for. If you use TNS entry for SERVICE, recommend having a credential name with the same name.<\/li>\n<li>ASYNC NOAFFIRM: This is controversy (I will explain later), but this defines the mode that redo log is shipped for the remote destination.<\/li>\n<li>DB_UNIQUE_NAME: Database unique name of recovery appliance database.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">All the others are the normal parameters for DG config and you can check at <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/sbydb\/LOG_ARCHIVE_DEST_n-parameter-attributes.html#GUID-B04FC22C-F0B0-440F-BAF4-182EE547FCC1\" target=\"_blank\" rel=\"noopener noreferrer\">LOG_ARCHIVE_DEST_n Parameter Attributes<\/a>.<\/p>\n<p style=\"text-align: justify;\">As I told before, the ASYNC NOAFFIRM are controversial because if you look it was defined as ASYNC, and it is the same in the ZDLRA docs. You can read here at \u201c<a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/zero-data-loss-recovery-appliance\/19.2\/amagd\/amagd_intro.html#GUID-83D2D605-E0D1-4AE6-B539-86392F8EF374\" target=\"_blank\" rel=\"noopener noreferrer\">Protection of Ongoing Transactions<\/a>\u201d (or at \u201c<a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/zero-data-loss-recovery-appliance\/19.2\/ampdb\/gs.html#GUID-83DD9323-3B24-479E-99ED-A88EEE7DD9C9\" target=\"_blank\" rel=\"noopener noreferrer\">How Real-Time Redo Transport Works<\/a>\u201d):<\/p>\n<p style=\"text-align: justify;\"><em>\u201cRedo data from the protected database is written asynchronously to the Recovery Appliance as it is generated. Load on production database servers is minimized because redo data is shipped directly from the memory to the Recovery Appliance without the involvement of disk I\/O\u201d<\/em><\/p>\n<p style=\"text-align: justify;\"><em>\u201cTo avoid degrading the performance of the protected database, protected databases transfer redo asynchronously to the Recovery Appliance. If a protected database is lost, <strong>zero to subsecond data loss is expected in most cases.<\/strong>\u201d<\/em><\/p>\n<p style=\"text-align: justify;\">The controversy here is because the appliance it is ZERO DATA LOSS, and ASYNC does not guarantee zero data loss. So, is it a scam case and we need to change the name for Non-Zero Data Loss Recovery Appliance? No, they just are trying to remember you that to minimize the impact over the database, it was configured in async mode. <strong>But you can configure in SYNC mode, it is allowed<\/strong>, but remember that this can\/will impact the database.<\/p>\n<p style=\"text-align: justify;\">If you want to understand the impact over that SYNC\/ASYNC\/AFFIRM\/NOAFFIRM have over the database, read the \u201c<a href=\"https:\/\/www.oracle.com\/technetwork\/database\/availability\/sync-2437177.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Best Practices for Synchronous Redo Transport Data Guard and Active Data Guard<\/a>\u201d doc. It is fundamental.<\/p>\n<p style=\"text-align: justify;\">I will cover this in the next post about real-time redo.<\/p>\n<h2 style=\"text-align: justify;\">Using Real-Time Redo<\/h2>\n<p style=\"text-align: justify;\">After pre-check and configure all the parameters above, we can start to use it. If you have some part already configured (like the redo transport user, and the wallet), you can config without restart database. But, here, I made the restart of the database (and enabled the log_archive_dest_state_n).<\/p>\n<p style=\"text-align: justify;\">The best way to show\/check real-time redo working is through rman, where I can describe the archivelogs and backups that exist for each one:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@orcloel7 ~]$ rman target=\/ catalog=cat_zdlra\/s3nhazdlra@zdlras1\r\n\r\nRecovery Manager: Release 19.0.0.0.0 - Production on Tue Oct 1 23:57:42 2019\r\nVersion 19.3.0.0.0\r\n\r\nCopyright (c) 1982, 2019, Oracle and\/or its affiliates.  All rights reserved.\r\n\r\nconnected to target database: ORCL19 (DBID=310627084)\r\nconnected to recovery catalog database\r\n\r\nRMAN&gt; list copy of archivelog all;\r\n\r\nspecification does not match any archived log in the repository\r\n\r\nRMAN&gt; alter system archive log current;\r\n\r\nStatement processed\r\n\r\nRMAN&gt; list copy of archivelog all;\r\n\r\nList of Archived Log Copies for database with db_unique_name ORCL19\r\n=====================================================================\r\n\r\nKey     Thrd Seq     S Low Time\r\n------- ---- ------- - -------------------\r\n4329    1    47      A 02-10-2019_00:09:32\r\n        Name: \/u01\/app\/oracle\/oradata\/ORCL19\/archivelog\/2019_10_02\/o1_mf_1_47_gs7mzgkn_.arc\r\n\r\n\r\nRMAN&gt; list backup of archivelog all completed after \"sysdate - 5\/1440\";\r\n\r\n\r\nList of Backup Sets\r\n===================\r\n\r\n\r\nBS Key  Size       Device Type Elapsed Time Completion Time\r\n------- ---------- ----------- ------------ -------------------\r\n4365    595.50K    SBT_TAPE    00:00:00     02-10-2019_00:15:34\r\n        BP Key: 4366   Status: AVAILABLE  Compressed: YES  Tag: TAG20191002T001534\r\n        Handle: $RSCN_1920977_RTIM_1009298641_THRD_1_SEQ_47_CTKEY_4222_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 4365\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    47      2370920    02-10-2019_00:09:32 2372594    02-10-2019_00:15:10\r\n\r\nRMAN&gt;<\/pre>\n<p style=\"text-align: justify;\">Look the example above, I started with no copy of archivelogs locally. After I made a switch for archivelog and sequence 47 was generated. Instantly, if I do a list backup archivelog you can see that already exists one copy of the same sequence.<\/p>\n<p style=\"text-align: justify;\">For the copy, you can identify that it is a real-time redo and not a copy because of the <em>handle<\/em>. It has a specific format starting as <em>$RSCN<\/em>.<\/p>\n<p style=\"text-align: justify;\">If I do one more time, the same behavior:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">RMAN&gt; list copy of archivelog all;\r\n\r\nList of Archived Log Copies for database with db_unique_name ORCL19\r\n=====================================================================\r\n\r\nKey     Thrd Seq     S Low Time\r\n------- ---- ------- - -------------------\r\n4329    1    47      A 02-10-2019_00:09:32\r\n        Name: \/u01\/app\/oracle\/oradata\/ORCL19\/archivelog\/2019_10_02\/o1_mf_1_47_gs7mzgkn_.arc\r\n\r\n\r\nRMAN&gt; alter system archive log current;\r\n\r\nStatement processed\r\n\r\nRMAN&gt; list copy of archivelog all;\r\n\r\nList of Archived Log Copies for database with db_unique_name ORCL19\r\n=====================================================================\r\n\r\nKey     Thrd Seq     S Low Time\r\n------- ---- ------- - -------------------\r\n4329    1    47      A 02-10-2019_00:09:32\r\n        Name: \/u01\/app\/oracle\/oradata\/ORCL19\/archivelog\/2019_10_02\/o1_mf_1_47_gs7mzgkn_.arc\r\n\r\n4406    1    48      A 02-10-2019_00:15:10\r\n        Name: \/u01\/app\/oracle\/oradata\/ORCL19\/archivelog\/2019_10_02\/o1_mf_1_48_gs7n1ck8_.arc\r\n\r\n\r\nRMAN&gt; list backup of archivelog all completed after \"sysdate - 5\/1440\";\r\n\r\n\r\nList of Backup Sets\r\n===================\r\n\r\n\r\nBS Key  Size       Device Type Elapsed Time Completion Time\r\n------- ---------- ----------- ------------ -------------------\r\n4365    595.50K    SBT_TAPE    00:00:00     02-10-2019_00:15:34\r\n        BP Key: 4366   Status: AVAILABLE  Compressed: YES  Tag: TAG20191002T001534\r\n        Handle: $RSCN_1920977_RTIM_1009298641_THRD_1_SEQ_47_CTKEY_4222_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 4365\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    47      2370920    02-10-2019_00:09:32 2372594    02-10-2019_00:15:10\r\n\r\nBS Key  Size       Device Type Elapsed Time Completion Time\r\n------- ---------- ----------- ------------ -------------------\r\n4445    41.00K     SBT_TAPE    00:00:00     02-10-2019_00:16:32\r\n        BP Key: 4446   Status: AVAILABLE  Compressed: YES  Tag: TAG20191002T001632\r\n        Handle: $RSCN_1920977_RTIM_1009298641_THRD_1_SEQ_48_CTKEY_4294_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 4445\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    48      2372594    02-10-2019_00:15:10 2372793    02-10-2019_00:16:11\r\n\r\nRMAN&gt;\r\n<\/pre>\n<p style=\"text-align: justify;\">Another point is that if you try to do the backup of this archivelog you will see that they was already backed:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">RMAN&gt; BACKUP DEVICE TYPE SBT FILESPERSET 100 FORMAT '%U' ARCHIVELOG ALL NOT BACKED UP TAG 'BKP-ARCH';\r\n\r\nStarting backup at 02-10-2019_00:18:30\r\ncurrent log archived\r\nreleased channel: ORA_DISK_1\r\nallocated channel: ORA_SBT_TAPE_1\r\nchannel ORA_SBT_TAPE_1: SID=86 device type=SBT_TAPE\r\nchannel ORA_SBT_TAPE_1: RA Library (ZDLRAS1) SID=93E18A9FC482277FE053010310AC3886\r\nskipping archived logs of thread 1 from sequence 47 to 48; already backed up\r\n\u2026\r\n\u2026<\/pre>\n<h2 style=\"text-align: justify;\">Real-Time Redo\u2026 in real<\/h2>\n<p style=\"text-align: justify;\">The real-time redo transport configuration that I showed here just covered the configuration part. You can use it as a guide do understand what you need to configure and check. But this post does not cover full details about it.<\/p>\n<p style=\"text-align: justify;\">For the next post about real-time redo, I will explore more details about the controversy about SYNC\/ASYNC mode for transport. I will test and simulate other details, like a complete crash of the environment and verify if everything will be safe and we reach zero RPO.<\/p>\n<p style=\"text-align: justify;\">But in the end, we have the full \u201cDelta Push\u201d for our database. The <a href=\"http:\/\/www.fernandosimon.com\/blog\/zdlra-virtual-full-backup-and-incremental-forever\/\" target=\"_blank\" rel=\"noopener noreferrer\">incremental forever strategy<\/a> and real-time redo enabled.<\/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>Real-time redo transport is the feature that allows you to reduce to zero the RPO (Recovery Point Objective) for your database. Check how to configure real-time redo, the steps, parameters, and other details that need to be modified to enable it. The idea behind real-time redo transport it is easy, basically the ZDLRA it 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":[41,29,77,5,51],"tags":[67,100,75,65,74],"class_list":["post-615","post","type-post","status-publish","format-standard","hentry","category-data-guard","category-database","category-engineeredsystems","category-oracle","category-zdlra","tag-data-guard","tag-engineered-systems","tag-maa","tag-oracle","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, Real-Time Redo - Fernando Simon<\/title>\n<meta name=\"description\" content=\"Check how Real-Time Redo Transport works for ZDLRA. How to configure, enable and integrate it into your database.\" \/>\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-real-time-redo\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ZDLRA, Real-Time Redo - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"Check how Real-Time Redo Transport works for ZDLRA. How to configure, enable and integrate it into your database.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-09T21:26:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-19T22:16:16+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.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-real-time-redo\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"ZDLRA, Real-Time Redo\",\"datePublished\":\"2019-10-09T21:26:44+00:00\",\"dateModified\":\"2020-07-19T22:16:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/\"},\"wordCount\":1445,\"commentCount\":12,\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/Real-Time-Redo-Transport.png\",\"keywords\":[\"Data Guard\",\"Engineered Systems\",\"MAA\",\"Oracle\",\"ZDLRA\"],\"articleSection\":[\"Data Guard\",\"Database\",\"Engineered Systems\",\"Oracle\",\"ZDLRA\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/\",\"name\":\"ZDLRA, Real-Time Redo - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/Real-Time-Redo-Transport.png\",\"datePublished\":\"2019-10-09T21:26:44+00:00\",\"dateModified\":\"2020-07-19T22:16:16+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"Check how Real-Time Redo Transport works for ZDLRA. How to configure, enable and integrate it into your database.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/Real-Time-Redo-Transport.png\",\"contentUrl\":\"http:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/Real-Time-Redo-Transport.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/zdlra-real-time-redo\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ZDLRA, Real-Time Redo\"}]},{\"@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, Real-Time Redo - Fernando Simon","description":"Check how Real-Time Redo Transport works for ZDLRA. How to configure, enable and integrate it into your database.","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-real-time-redo\/","og_locale":"en_US","og_type":"article","og_title":"ZDLRA, Real-Time Redo - Fernando Simon","og_description":"Check how Real-Time Redo Transport works for ZDLRA. How to configure, enable and integrate it into your database.","og_url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/","og_site_name":"Fernando Simon","article_published_time":"2019-10-09T21:26:44+00:00","article_modified_time":"2020-07-19T22:16:16+00:00","og_image":[{"url":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.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-real-time-redo\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"ZDLRA, Real-Time Redo","datePublished":"2019-10-09T21:26:44+00:00","dateModified":"2020-07-19T22:16:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/"},"wordCount":1445,"commentCount":12,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/#primaryimage"},"thumbnailUrl":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png","keywords":["Data Guard","Engineered Systems","MAA","Oracle","ZDLRA"],"articleSection":["Data Guard","Database","Engineered Systems","Oracle","ZDLRA"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/","url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/","name":"ZDLRA, Real-Time Redo - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/#primaryimage"},"thumbnailUrl":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png","datePublished":"2019-10-09T21:26:44+00:00","dateModified":"2020-07-19T22:16:16+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"Check how Real-Time Redo Transport works for ZDLRA. How to configure, enable and integrate it into your database.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/#primaryimage","url":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png","contentUrl":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ZDLRA, Real-Time Redo"}]},{"@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-9V","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/615","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=615"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/615\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}