{"id":618,"date":"2019-10-21T19:48:00","date_gmt":"2019-10-21T22:48:00","guid":{"rendered":"http:\/\/www.fernandosimon.com\/blog\/?p=618"},"modified":"2020-07-19T19:16:02","modified_gmt":"2020-07-19T22:16:02","slug":"zdlra-real-time-redo-and-zero-rpo","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/","title":{"rendered":"ZDLRA, Real-Time Redo and Zero RPO"},"content":{"rendered":"<p style=\"text-align: justify;\">The idea for Real-Time Redo is to reach zero RPO for every kind of database and this includes ones with and without DG. As you can see in <a href=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/\" target=\"_blank\" rel=\"noopener noreferrer\">my last post<\/a>, where I showed how to configure Real-Time Redo for one database, some little steps need to be executed and they are pretty similar than a remote destination for archivelog for DG.<\/p>\n<p style=\"text-align: justify;\">But if you noticed, the configuration for the remote destination was defined as ASYNC, and hinted like that at ZDLRA docs (\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). In the same post, I suggested as \u201ccontroversial\u201d because the ASYNC does not guarantee the RPO zero.&nbsp;<\/p>\n<p style=\"text-align: justify;\">You can see more in the DataGuard docs at (<a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/sbydb\/oracle-data-guard-protection-modes.html#GUID-16298839-9B8A-4E58-8EC9-27912E57F1CE\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle Data Guard Protection Modes<\/a> and <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/sbydb\/LOG_ARCHIVE_DEST_n-parameter-attributes.html#GUID-E3626025-2E4C-4C61-B5DF-2BB106F0A349\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle Data Guard Concepts and Administration<\/a>), but the resume it is:<\/p>\n<ul style=\"text-align: justify;\">\n<li>ASYNC: The primary database does not wait for the response from a remote destination.<\/li>\n<li>SYNC\/NOAFIRM: The Primary database holds commit until the remote destination report that received the redo data. It does not wait until the remote site report that wrote the data in the disc.<\/li>\n<li>SYNC\/AFFIRM: The primary database holds commit until the remote destination report that received redo data and wrote it at the disk.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">You can read with more details the difference here: <a href=\"https:\/\/oracle.com\/technetwork\/database\/availability\/sync-2437177.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Best Practices for Synchronous Redo Transport<\/a> and <a href=\"https:\/\/oracle.com\/technetwork\/database\/availability\/sync-2437177.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Best Practices for Asynchronous Redo Transport<\/a>.<\/p>\n<p style=\"text-align: justify;\">The idea is simple, if you use ASYNC, there is no guarantee for zero data loss between the primary database and the remote destination.<\/p>\n<p style=\"text-align: justify;\"><!--more Click here to read more...--><\/p>\n<h2 style=\"text-align: justify;\">ZDLRA Protection<\/h2>\n<p style=\"text-align: justify;\">If needed, the configuration to reach zero RPO, when using ZDLRA, it is simple. You just need to put the archive destination in SYNC. Simple like that. Before put archivelog destination in SYNC, I will do an example using ASYNC to show some features of real-time redo.<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-616 size-full\" 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<h3 style=\"text-align: justify;\">Saving crashes<\/h3>\n<p style=\"text-align: justify;\">One interesting point is that ZDLRA generates for you a new archivelog in case of a primary database crash. <a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/zero-data-loss-recovery-appliance\/19.2\/amagd\/amagd_concepts.html#GUID-F1F77F7A-FE7D-4272-8483-F40ED2D9EC62\" target=\"_blank\" rel=\"noopener noreferrer\">As the documentation says<\/a>:<\/p>\n<p style=\"text-align: justify;\"><em>If the redo stream terminates unexpectedly, then the Recovery Appliance can close the incoming redo stream and create a partial archived redo log file backup, thereby protecting transactions up to the last change that the appliance received.<\/em><\/p>\n<p style=\"text-align: justify;\">So, even not using DG or sync, you can protect it until the last transaction. In real life it is this (I will simulate a catastrophic failure; check the current archivelog, and kill the instances process after that; at the end, check how far the protection was):<\/p>\n<h4 style=\"text-align: justify;\"><strong>Current archivelog<\/strong><\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; archive log list;\r\nDatabase log mode              Archive Mode\r\nAutomatic archival             Enabled\r\nArchive destination            USE_DB_RECOVERY_FILE_DEST\r\nOldest online log sequence     29\r\nNext log sequence to archive   31\r\nCurrent log sequence           31\r\nSQL&gt;\r\nSQL&gt; ALTER SYSTEM ARCHIVE LOG current;\r\n\r\nSystem altered.\r\n\r\nSQL&gt;\r\nSQL&gt; show parameter dest_2;\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ndb_create_online_log_dest_2          string\r\nlog_archive_dest_2                   string      SERVICE=\"zeros1ig-scan.simo.fz\r\n                                                 net.org:1521\/zeros1:dedicated\"\r\n                                                  ASYNC NOAFFIRM delay=0 option\r\n                                                 al compression=disable max_fai\r\n                                                 lure=1 max_connections=1 reope\r\n                                                 n=10 DB_UNIQUE_NAME=zeros1 net\r\n                                                 _timeout=8 group=1 priority=1\r\n                                                 VALID_FOR=(ONLINE_LOGFILE,ALL_\r\n                                                 ROLES)\r\nlog_archive_dest_20                  string\r\n\u2026\r\n\u2026\r\n<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Backups of archivelog (look the \u201cNext Time\u201d)<\/strong><\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">RMAN&gt; list backup of archivelog sequence 31;\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\n50958158 1.12M      SBT_TAPE    00:00:00     2019-10-18_19-28-21\r\n        BP Key: 50958159   Status: AVAILABLE  Compressed: YES  Tag: TAG20191018T222821\r\n        Handle: $RSCN_1_RTIM_1022003674_THRD_1_SEQ_31_CTKEY_50958151_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 50958158\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    31      1025023    2019-10-18_19-27-40 1025761    2019-10-18_19-28-20\r\n\r\nRMAN&gt; list backup of archivelog sequence 32;\r\n\r\nspecification does not match any backup in the repository\r\n\r\nRMAN&gt;<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Killing the instance<\/strong><\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@exac1vm01-ORAD18]$ ps -ef |grep pmon_ORAD18\r\noracle    31646      1  0 22:27 ?        00:00:00 ora_pmon_ORAD18\r\noracle    37116 396809  0 22:29 pts\/2    00:00:00 grep pmon_ORAD18\r\n[oracle@exac1vm01-ORAD18]$ ps -ef |grep smon_ORAD18\r\noracle    31731      1  0 22:27 ?        00:00:00 ora_smon_ORAD18\r\noracle    37213 396809  0 22:29 pts\/2    00:00:00 grep smon_ORAD18\r\n[oracle@exac1vm01-ORAD18]$ ps -ef |grep lgwr_ORAD18\r\noracle    31724      1  0 22:27 ?        00:00:00 ora_lgwr_ORAD18\r\noracle    37245 396809  0 22:29 pts\/2    00:00:00 grep lgwr_ORAD18\r\n[oracle@exac1vm01-ORAD18]$ ps -ef |grep dbw0_ORAD18\r\noracle    31722      1  0 22:27 ?        00:00:00 ora_dbw0_ORAD18\r\noracle    40104 396809  0 22:29 pts\/2    00:00:00 grep dbw0_ORAD18\r\n[oracle@exac1vm01-ORAD18]$ ps -ef |grep arc* |grep ORAD18\r\noracle    31805      1  0 22:27 ?        00:00:00 ora_mark_ORAD18\r\noracle    32021      1  0 22:27 ?        00:00:00 ora_arc0_ORAD18\r\noracle    32042      1  0 22:27 ?        00:00:00 ora_arc1_ORAD18\r\noracle    32050      1  0 22:27 ?        00:00:00 ora_arc2_ORAD18\r\noracle    32057      1  0 22:27 ?        00:00:00 ora_arc3_ORAD18\r\n[oracle@exac1vm01-ORAD18]$\r\n[oracle@exac1vm01-ORAD18]$\r\n[oracle@exac1vm01-ORAD18]$\r\n[oracle@exac1vm01-ORAD18]$ date\r\nFri Oct 18 22:30:32 CEST 2019\r\n[oracle@exac1vm01-ORAD18]$ kill -9 31646 31731 31724 31722 32021 32042 32050 32057\r\n[oracle@exac1vm01-ORAD18]$\r\n#####\r\nAt alertlog:\r\n    2019-10-18T22:30:33.160912+02:00\r\n    RMS0 (ospid: 31718): terminating the instance due to ORA error 472\r\n    Cause - 'Instance is being terminated due to fatal process PMON being dead.'\r\n    2019-10-18T22:30:33.290189+02:00\r\n    System state dump requested by (instance=1, osid=31718 (RMS0)), summary=[abnormal instance termination]. error - 'Instance is terminating.\r\n    '\r\n    System State dumped to trace file \/u01\/app\/oracle\/diag\/rdbms\/orad18\/ORAD18\/trace\/ORAD18_diag_31692_20191018223033.trc\r\n    2019-10-18T22:30:34.378356+02:00\r\n    Dumping diagnostic data in directory=[cdmp_20191018223033], requested by (instance=1, osid=31718 (RMS0)), summary=[abnormal instance termination].\r\n    2019-10-18T22:30:35.642670+02:00\r\n    Instance terminated by RMS0, pid = 31718\r\n<\/pre>\n<p style=\"text-align: justify;\">Above look the hour that I killed the instance.<\/p>\n<h4 style=\"text-align: justify;\"><strong>How Far It Was<\/strong><\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@exac1vm01-ORAD18]$ export ORACLE_SID=SIMON\r\n[oracle@exac1vm01-SIMON]$ rman target \/ catalog vpcusr\/welcome1@zeros1ig-scan:1521\/zeros1:dedicated\r\n\r\nRecovery Manager: Release 18.0.0.0.0 - Production on Fri Oct 18 22:31:39 2019\r\nVersion 18.3.0.0.0\r\n\r\nCopyright (c) 1982, 2018, Oracle and\/or its affiliates.  All rights reserved.\r\n\r\nconnected to target database (not started)\r\nconnected to recovery catalog database\r\n\r\nRMAN&gt; startup force nomount;\r\n\r\nstartup failed: ORA-01078: failure in processing system parameters\r\nLRM-00109: could not open parameter file '\/u01\/app\/oracle\/product\/18.0.0\/dbhome_1\/dbs\/initSIMON.ora'\r\n\r\nstarting Oracle instance without parameter file for retrieval of spfile\r\nOracle instance started\r\n\r\nTotal System Global Area    1073740616 bytes\r\n\r\nFixed Size                     8665928 bytes\r\nVariable Size                281018368 bytes\r\nDatabase Buffers             775946240 bytes\r\nRedo Buffers                   8110080 bytes\r\n\r\nRMAN&gt; set dbid 2464352672;\r\n\r\nexecuting command: SET DBID\r\ndatabase name is \"ORAD18\" and DBID is 2464352672\r\n\r\nRMAN&gt; list backup of archivelog sequence 32;\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\n50958220 72.50K     SBT_TAPE    00:00:00     2019-10-18_22-30-42\r\n        BP Key: 50958221   Status: AVAILABLE  Compressed: YES  Tag: TAG20191018T223042\r\n        Handle: $RSCN_1_RTIM_1022003674_THRD_1_SEQ_32_CTKEY_50958156_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 50958220\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    32      1025761    2019-10-18_22-28-20 1026104    2019-10-18_22-30-32\r\n\r\nRMAN&gt;<\/pre>\n<p style=\"text-align: justify;\">Above you can see that now I have at catalog one backup of archivelog sequence number 32. And the \u201cNext Time\u201d for it is 22:30:32 that was the same moment that I killed the instance. So, the ZDLRA protected until the last point before the crash (<strong>even in ASYNC mode<\/strong>).<\/p>\n<p style=\"text-align: justify;\">One little explanation. As you saw, I opened one new instance (called SIMON) to check the catalog because I wanted to avoid that when opening the same instance (ORAD18) the partial archivelog generated by ZDLRA was removed because it believes that database returned. <a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/zero-data-loss-recovery-appliance\/19.2\/ampdb\/gs.html#GUID-8A751CF3-E655-4A46-B168-624DE2E6FDB4\" target=\"_blank\" rel=\"noopener noreferrer\">This is explained in the doc<\/a>:<\/p>\n<p style=\"text-align: justify;\"><em>If the protected database crashes, redo data received from the current redo log group until the time of the crash is backed up at the Recovery Appliance as a &#8220;partial&#8221; archived redo log. If the protected database is reopened, crash recovery of the protected database will complete the current redo log group at the time of the crash, and the completed redo log will be re-shipped to the Recovery Appliance through the automatic Data Guard Gap fetching feature. The &#8220;complete&#8221; archived redo log will be used in any future restore\/recover operations instead of the previously backed up &#8220;partial&#8221; archived redo log.<\/em><\/p>\n<h3 style=\"text-align: justify;\">Saving crashed, now with load<\/h3>\n<p style=\"text-align: justify;\">Using the example above you can argue that ZDLRA reached RPO zero just because I don\u2019t have load over the database. And, being worst, without SYNC you can\u2019t guarantee zero data loss. Yes, I agree with you for both (and I already exposed thins in <a href=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/\" target=\"_blank\" rel=\"noopener noreferrer\">my last post<\/a> and in the introduction of this post). To show you how to use ZDLRA with SYNC for archive log destination.<\/p>\n<h4 style=\"text-align: justify;\"><strong>Sync mode<\/strong><\/h4>\n<p style=\"text-align: justify;\">Putting the destination in SYNC mode. Just changed to SYNC NOAFFIRM:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; ALTER SYSTEM SET log_archive_dest_2='SERVICE=\"zeros1ig-scan.simo.fznet.org:1521\/zeros1:dedicated\" SYNC NOAFFIRM \r\ndelay=0 optional compression=disable max_failure=1 max_connections=1 reopen=10 DB_UNIQUE_NAME=zeros1 \r\nnet_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;<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Current archivelog<\/strong><\/h4>\n<p>After bouncing the instance, checking the current archivelog and creating a new one:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; alter system archive log current;\r\n\r\nSystem altered.\r\n\r\nSQL&gt; archive log list;\r\nDatabase log mode              Archive Mode\r\nAutomatic archival             Enabled\r\nArchive destination            USE_DB_RECOVERY_FILE_DEST\r\nOldest online log sequence     3\r\nNext log sequence to archive   5\r\nCurrent log sequence           5\r\nSQL&gt;<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Backups of archivelog (look the \u201cNext Time\u201d)<\/strong><\/h4>\n<p style=\"text-align: justify;\">Check that does not exist archivelog from the current redo log:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@exac1vm01-ORAD18]$ rman target \/ catalog vpcusr\/welcome1@zeros1ig-scan:1521\/zeros1:dedicated\r\n\r\nRecovery Manager: Release 18.0.0.0.0 - Production on Fri Oct 18 23:05:35 2019\r\nVersion 18.3.0.0.0\r\n\r\nCopyright (c) 1982, 2018, Oracle and\/or its affiliates.  All rights reserved.\r\n\r\nconnected to target database: ORAD18 (DBID=2464352672)\r\nconnected to recovery catalog database\r\n\r\nRMAN&gt; list backup of archivelog sequence 4;\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\n50958759 41.00K     SBT_TAPE    00:00:00     2019-10-18_23-05-23\r\n        BP Key: 50958760   Status: AVAILABLE  Compressed: YES  Tag: TAG20191018T230523\r\n        Handle: $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_4_CTKEY_50958752_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 50958759\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    4       1131626    2019-10-18_23-04-53 1131667    2019-10-18_23-05-09\r\n\r\nRMAN&gt; list backup of archivelog sequence 5;\r\n\r\nspecification does not match any backup in the repository\r\n\r\nRMAN&gt;<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Generating some load<\/strong><\/h4>\n<p style=\"text-align: justify;\">The simulate load I created a table with 3 columns and put two sessions loading data and generating a huge number of commits. After every insert, I commit the data and show the current time for each insert. Look at the sessions:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@exac1vm01-ORAD18]$ for i in {1..100000}\r\n&gt; do\r\n&gt; echo \"Insert Data $i - `date +%d-%m-%Y-%H%M%S`\"\r\n&gt; sqlplus -s \/ as sysdba&lt;&lt;EOF\r\n&gt; set heading on feedback on;\r\n&gt; insert into testIns(c1, c2, c3) values ($i, sysdate, 'Loop');\r\n&gt; commit;\r\n&gt; EOF\r\n&gt; done\r\nInsert Data 1 - 18-10-2019-230723\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 2 - 18-10-2019-230723\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 3 - 18-10-2019-230723\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 4 - 18-10-2019-230724\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n....\r\n....\r\n\r\n\r\n[oracle@exac1vm01-ORAD18]$\r\n[oracle@exac1vm01-ORAD18]$ for i in {1..100000}\r\n&gt; do\r\n&gt; echo \"Insert Data $i - `date +%d-%m-%Y-%H%M%S`\"\r\n&gt; sqlplus -s \/ as sysdba&lt;&lt;EOF\r\n&gt; set heading on feedback on;\r\n&gt; insert into testIns(c1, c2, c3) values ($i, sysdate, 'Loop2');\r\n&gt; commit;\r\n&gt; EOF\r\n&gt; done\r\nInsert Data 1 - 18-10-2019-230816\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 2 - 18-10-2019-230816\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 3 - 18-10-2019-230816\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n...\r\n...\r\n<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Killing the instance<\/strong><\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@exac1vm01-]$\r\n[oracle@exac1vm01-]$\r\n[oracle@exac1vm01-]$ ps -ef |grep pmon_ORAD18\r\noracle    93700      1  0 22:51 ?        00:00:00 ora_pmon_ORAD18\r\noracle   140193 357155  0 23:09 pts\/1    00:00:00 grep pmon_ORAD18\r\n[oracle@exac1vm01-]$  ps -ef |grep smon_ORAD18\r\noracle    93786      1  0 22:51 ?        00:00:00 ora_smon_ORAD18\r\noracle   140394 357155  0 23:09 pts\/1    00:00:00 grep smon_ORAD18\r\n[oracle@exac1vm01-]$ ps -ef |grep lgwr_ORAD18\r\noracle    93780      1  0 22:51 ?        00:00:00 ora_lgwr_ORAD18\r\noracle   140561 357155  0 23:09 pts\/1    00:00:00 grep lgwr_ORAD18\r\n[oracle@exac1vm01-]$ ps -ef |grep dbw0_ORAD18\r\noracle    93776      1  0 22:51 ?        00:00:00 ora_dbw0_ORAD18\r\noracle   140738 357155  0 23:09 pts\/1    00:00:00 grep dbw0_ORAD18\r\n[oracle@exac1vm01-]$ ps -ef |grep arc* |grep ORAD18\r\noracle    93835      1  0 22:51 ?        00:00:00 ora_mark_ORAD18\r\noracle   103814      1  0 22:55 ?        00:00:00 ora_arc0_ORAD18\r\noracle   103816      1  0 22:55 ?        00:00:00 ora_arc1_ORAD18\r\noracle   103818      1  0 22:55 ?        00:00:00 ora_arc2_ORAD18\r\noracle   103820      1  0 22:55 ?        00:00:00 ora_arc3_ORAD18\r\n[oracle@exac1vm01-]$\r\n[oracle@exac1vm01-]$ date\r\nFri Oct 18 23:09:44 CEST 2019\r\n[oracle@exac1vm01-]$ kill -9  93700 93786 93780 93776 103814 103816 103818 103820\r\n[oracle@exac1vm01-]$<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Failed load<\/strong><\/h4>\n<p style=\"text-align: justify;\">As expected, the two sessions failed:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">...\r\n...\r\nInsert Data 1016 - 18-10-2019-230944\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 1017 - 18-10-2019-230944\r\n\r\n1 row created.\r\n\r\ncommit\r\n     *\r\nERROR at line 1:\r\nORA-03113: end-of-file on communication channel\r\nProcess ID: 142277\r\nSession ID: 53 Serial number: 30197\r\n\r\n\r\n\r\n\r\n...\r\n...\r\nInsert Data 646 - 18-10-2019-230944\r\n\r\n1 row created.\r\n\r\n\r\nCommit complete.\r\n\r\nInsert Data 647 - 18-10-2019-230944\r\n\r\n1 row created.\r\n\r\ncommit\r\n     *\r\nERROR at line 1:\r\nORA-03113: end-of-file on communication channel\r\nProcess ID: 142274\r\nSession ID: 41 Serial number: 3186\r\n<\/pre>\n<h4 style=\"text-align: justify;\"><strong>Losing everything<\/strong><\/h4>\n<p style=\"text-align: justify;\">So, the session loading string \u201cLoop\u201d apparently loaded until the value 1016 with success. And the session 2, loading with string \u201c Loop2\u201d loaded until value 647. These values are the mark until we want to reach.<\/p>\n<p style=\"text-align: justify;\">But to be more precise and catastrophic, I removed the data from filesystem\/ASM too:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">ASMCMD&gt; cd +DATAC1\/ORAD18\/\r\nASMCMD&gt; rm -rf CONTROLFILE\/\r\nASMCMD&gt; rm -rf DATAFILE\/\r\nASMCMD&gt; rm -rf ONLINELOG\/\r\nASMCMD&gt; rm -rf TEMPFILE\/\r\nASMCMD&gt; cd +RECOC1\/ORAD18\/\r\nASMCMD&gt; rm -rf ARCHIVELOG\/\r\nASMCMD&gt; rm -rf AUTOBACKUP\/\r\nASMCMD&gt; rm -rf CONTROLFILE\/\r\nASMCMD&gt; rm -rf ONLINELOG\/\r\nASMCMD&gt;<\/pre>\n<p style=\"text-align: justify;\">Now, there is no escape. I need to recover completely the database to retrieve it until the last transaction. Let\u2019s see if ZDLRA works \ud83d\ude09<\/p>\n<h4 style=\"text-align: justify;\"><strong>Recovery Everything &#8211; ZERO RPO<\/strong><\/h4>\n<p style=\"text-align: justify;\">Below I restore the database until the last transaction. The major steps follow the same as every full disaster recovery:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Restore controlfile<\/li>\n<li>Discover the last backup of archivelog<\/li>\n<li>Restore and recover database until the found scn<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Look at how it is:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@exac1vm01-ORAD18]$ rman target \/ catalog vpcusr\/welcome1@zeros1ig-scan:1521\/zeros1:dedicated\r\n\r\nRecovery Manager: Release 18.0.0.0.0 - Production on Fri Oct 18 23:12:19 2019\r\nVersion 18.3.0.0.0\r\n\r\nCopyright (c) 1982, 2018, Oracle and\/or its affiliates.  All rights reserved.\r\n\r\nconnected to target database (not started)\r\nconnected to recovery catalog database\r\n\r\nRMAN&gt; startup nomount;\r\n\r\nOracle instance started\r\n\r\nTotal System Global Area    2147480376 bytes\r\n\r\nFixed Size                     8659768 bytes\r\nVariable Size                671088640 bytes\r\nDatabase Buffers            1459617792 bytes\r\nRedo Buffers                   8114176 bytes\r\n\r\nRMAN&gt; list backup of controlfile completed after \"sysdate - 10\/1440\";\r\n\r\n\r\nList of Backup Sets\r\n===================\r\n\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958685 Full    50.25M     SBT_TAPE    00:00:01     2019-10-18_23-03-15\r\n        BP Key: 50958686   Status: AVAILABLE  Compressed: NO  Tag: TAG20191018T230314\r\n        Handle: c-2464352672-20191018-0b   Media: Recovery Appliance (ZDLRAK)\r\n  Control File Included: Ckp SCN: 1131375      Ckp time: 2019-10-18_23-03-14\r\n\r\nRMAN&gt; restore controlfile from tag = TAG20191018T230314;\r\n\r\nStarting restore at 2019-10-18_23-13-24\r\nallocated channel: ORA_DISK_1\r\nchannel ORA_DISK_1: SID=30 device type=DISK\r\nallocated channel: ORA_SBT_TAPE_1\r\nchannel ORA_SBT_TAPE_1: SID=414 device type=SBT_TAPE\r\nchannel ORA_SBT_TAPE_1: RA Library (ZDLRAK) SID=95344A4C604F5404E0538C43B20A52E2\r\n\r\nchannel ORA_SBT_TAPE_1: starting datafile backup set restore\r\nchannel ORA_SBT_TAPE_1: restoring control file\r\nchannel ORA_SBT_TAPE_1: reading from backup piece c-2464352672-20191018-0b\r\nchannel ORA_SBT_TAPE_1: piece handle=c-2464352672-20191018-0b tag=TAG20191018T230314\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:02\r\noutput file name=+DATAC1\/ORAD18\/CONTROLFILE\/current.741.1022012007\r\noutput file name=+RECOC1\/ORAD18\/CONTROLFILE\/current.968.1022012009\r\nFinished restore at 2019-10-18_23-13-28\r\n\r\nRMAN&gt; list backup of database completed after \"sysdate - 15\/1440\";\r\n\r\n\r\nList of Backup Sets\r\n===================\r\n\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958689 Incr 1  40.00K     SBT_TAPE    00:00:01     2019-10-18_23-03-11\r\n        BP Key: 50958690   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958684I   Media:\r\n  List of Datafiles in backup set 50958689\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  1    1  Incr 1131350    2019-10-18_23-03-10              NO    +DATAC1\/ORAD18\/DATAFILE\/system.894.1022011045\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958693 Incr 0  249.44M    SBT_TAPE    00:00:01     2019-10-18_23-03-11\r\n        BP Key: 50958694   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958684_1   Media:\r\n  List of Datafiles in backup set 50958693\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  1    0  Incr 1131350    2019-10-18_23-03-10              NO    +DATAC1\/ORAD18\/DATAFILE\/system.894.1022011045\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958710 Incr 1  40.00K     SBT_TAPE    00:00:01     2019-10-18_23-03-10\r\n        BP Key: 50958711   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958707I   Media:\r\n  List of Datafiles in backup set 50958710\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  3    1  Incr 1131348    2019-10-18_23-03-09              NO    +DATAC1\/ORAD18\/DATAFILE\/undotbs1.496.1022011015\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958723 Incr 0  10.68M     SBT_TAPE    00:00:01     2019-10-18_23-03-10\r\n        BP Key: 50958724   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958707_3   Media:\r\n  List of Datafiles in backup set 50958723\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  3    0  Incr 1131348    2019-10-18_23-03-09              NO    +DATAC1\/ORAD18\/DATAFILE\/undotbs1.496.1022011015\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958727 Incr 1  40.00K     SBT_TAPE    00:00:01     2019-10-18_23-03-13\r\n        BP Key: 50958728   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958714I   Media:\r\n  List of Datafiles in backup set 50958727\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  4    1  Incr 1131357    2019-10-18_23-03-12              NO    +DATAC1\/ORAD18\/DATAFILE\/users.353.1022011029\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958731 Incr 0  40.00K     SBT_TAPE    00:00:01     2019-10-18_23-03-13\r\n        BP Key: 50958732   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958714_4   Media:\r\n  List of Datafiles in backup set 50958731\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  4    0  Incr 1131357    2019-10-18_23-03-12              NO    +DATAC1\/ORAD18\/DATAFILE\/users.353.1022011029\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958736 Incr 1  40.00K     SBT_TAPE    00:00:01     2019-10-18_23-03-12\r\n        BP Key: 50958737   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958735I   Media:\r\n  List of Datafiles in backup set 50958736\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  2    1  Incr 1131353    2019-10-18_23-03-11              NO    +DATAC1\/ORAD18\/DATAFILE\/sysaux.921.1022010999\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ -------------------\r\n50958740 Incr 0  93.84M     SBT_TAPE    00:00:01     2019-10-18_23-03-12\r\n        BP Key: 50958741   Status: AVAILABLE  Compressed: YES  Tag: BKP-LEVEL1\r\n        Handle: VB$_1965521110_50958735_2   Media:\r\n  List of Datafiles in backup set 50958740\r\n  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name\r\n  ---- -- ---- ---------- ------------------- ----------- ------ ----\r\n  2    0  Incr 1131353    2019-10-18_23-03-11              NO    +DATAC1\/ORAD18\/DATAFILE\/sysaux.921.1022010999\r\n\r\nRMAN&gt; list backup of archivelog all completed after \"sysdate - 15\/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\n50958604 2.00M      SBT_TAPE    00:00:00     2019-10-18_23-02-52\r\n        BP Key: 50958605   Status: AVAILABLE  Compressed: NO  Tag: BKP-ARCH\r\n        Handle: 14uel9vc_1_1   Media: Recovery Appliance (ZDLRAK)\r\n\r\n  List of Archived Logs in backup set 50958604\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    2       1129806    2019-10-18_22-58-29 1131219    2019-10-18_23-02-50\r\n\r\nBS Key  Size       Device Type Elapsed Time Completion Time\r\n------- ---------- ----------- ------------ -------------------\r\n50958618 1.15M      SBT_TAPE    00:00:00     2019-10-18_23-02-54\r\n        BP Key: 50958619   Status: AVAILABLE  Compressed: YES  Tag: TAG20191018T230254\r\n        Handle: $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_2_CTKEY_50958445_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 50958618\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    2       1129806    2019-10-18_22-58-29 1131219    2019-10-18_23-02-50\r\n\r\nBS Key  Size       Device Type Elapsed Time Completion Time\r\n------- ---------- ----------- ------------ -------------------\r\n50958754 67.50K     SBT_TAPE    00:00:00     2019-10-18_23-05-00\r\n        BP Key: 50958755   Status: AVAILABLE  Compressed: YES  Tag: TAG20191018T230500\r\n        Handle: $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_3_CTKEY_50958595_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 50958754\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    3       1131219    2019-10-18_23-02-50 1131626    2019-10-18_23-04-53\r\n\r\nBS Key  Size       Device Type Elapsed Time Completion Time\r\n------- ---------- ----------- ------------ -------------------\r\n50958759 41.00K     SBT_TAPE    00:00:00     2019-10-18_23-05-23\r\n        BP Key: 50958760   Status: AVAILABLE  Compressed: YES  Tag: TAG20191018T230523\r\n        Handle: $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_4_CTKEY_50958752_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 50958759\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    4       1131626    2019-10-18_23-04-53 1131667    2019-10-18_23-05-09\r\n\r\nBS Key  Size       Device Type Elapsed Time Completion Time\r\n------- ---------- ----------- ------------ -------------------\r\n50958809 2.05M      SBT_TAPE    00:00:00     2019-10-18_23-10-12\r\n        BP Key: 50958810   Status: AVAILABLE  Compressed: YES  Tag: TAG20191018T231012\r\n        Handle: $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_5_CTKEY_50958757_BACKUP   Media:\r\n\r\n  List of Archived Logs in backup set 50958809\r\n  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time\r\n  ---- ------- ---------- ------------------- ---------- ---------\r\n  1    5       1131667    2019-10-18_23-05-09 1135762    2019-10-18_23-09-44\r\n\r\nRMAN&gt;\r\n        \r\n     \r\nRMAN&gt; alter database mount;\r\n\r\nreleased channel: ORA_DISK_1\r\nreleased channel: ORA_SBT_TAPE_1\r\nStatement processed\r\n\r\nRMAN&gt;\r\n   \r\n   \r\n   \r\nRMAN&gt; run{\r\n2&gt; set until scn 1135762;\r\n3&gt; restore database;\r\n4&gt; recover database;\r\n5&gt; }\r\n\r\nexecuting command: SET until clause\r\n\r\nStarting restore at 2019-10-18_23-16-04\r\nStarting implicit crosscheck backup at 2019-10-18_23-16-04\r\nallocated channel: ORA_DISK_1\r\nchannel ORA_DISK_1: SID=35 device type=DISK\r\nCrosschecked 1 objects\r\nFinished implicit crosscheck backup at 2019-10-18_23-16-05\r\n\r\nStarting implicit crosscheck copy at 2019-10-18_23-16-05\r\nusing channel ORA_DISK_1\r\nFinished implicit crosscheck copy at 2019-10-18_23-16-05\r\n\r\nsearching for all files in the recovery area\r\ncataloging files...\r\nno files cataloged\r\n\r\nusing channel ORA_DISK_1\r\nallocated channel: ORA_SBT_TAPE_1\r\nchannel ORA_SBT_TAPE_1: SID=419 device type=SBT_TAPE\r\nchannel ORA_SBT_TAPE_1: RA Library (ZDLRAK) SID=953453F453376CA6E0538C43B20A62A0\r\n\r\nchannel ORA_SBT_TAPE_1: starting datafile backup set restore\r\nchannel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set\r\nchannel ORA_SBT_TAPE_1: restoring datafile 00001 to +DATAC1\/ORAD18\/DATAFILE\/system.894.1022011045\r\nchannel ORA_SBT_TAPE_1: reading from backup piece VB$_1965521110_50958684_1\r\nchannel ORA_SBT_TAPE_1: piece handle=VB$_1965521110_50958684_1 tag=BKP-LEVEL1\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:15\r\nchannel ORA_SBT_TAPE_1: starting datafile backup set restore\r\nchannel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set\r\nchannel ORA_SBT_TAPE_1: restoring datafile 00003 to +DATAC1\/ORAD18\/DATAFILE\/undotbs1.496.1022011015\r\nchannel ORA_SBT_TAPE_1: reading from backup piece VB$_1965521110_50958707_3\r\nchannel ORA_SBT_TAPE_1: piece handle=VB$_1965521110_50958707_3 tag=BKP-LEVEL1\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:15\r\nchannel ORA_SBT_TAPE_1: starting datafile backup set restore\r\nchannel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set\r\nchannel ORA_SBT_TAPE_1: restoring datafile 00004 to +DATAC1\/ORAD18\/DATAFILE\/users.353.1022011029\r\nchannel ORA_SBT_TAPE_1: reading from backup piece VB$_1965521110_50958714_4\r\nchannel ORA_SBT_TAPE_1: piece handle=VB$_1965521110_50958714_4 tag=BKP-LEVEL1\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:15\r\nchannel ORA_SBT_TAPE_1: starting datafile backup set restore\r\nchannel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set\r\nchannel ORA_SBT_TAPE_1: restoring datafile 00002 to +DATAC1\/ORAD18\/DATAFILE\/sysaux.921.1022010999\r\nchannel ORA_SBT_TAPE_1: reading from backup piece VB$_1965521110_50958735_2\r\nchannel ORA_SBT_TAPE_1: piece handle=VB$_1965521110_50958735_2 tag=BKP-LEVEL1\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:15\r\nFinished restore at 2019-10-18_23-17-11\r\n\r\nStarting recover at 2019-10-18_23-17-12\r\nusing channel ORA_DISK_1\r\nusing channel ORA_SBT_TAPE_1\r\n\r\nstarting media recovery\r\n\r\nchannel ORA_SBT_TAPE_1: starting archived log restore to default destination\r\nchannel ORA_SBT_TAPE_1: restoring archived log\r\narchived log thread=1 sequence=3\r\nchannel ORA_SBT_TAPE_1: reading from backup piece $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_3_CTKEY_50958595_BACKUP\r\nchannel ORA_SBT_TAPE_1: piece handle=$RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_3_CTKEY_50958595_BACKUP tag=TAG20191018T230500\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:01\r\narchived log file name=+RECOC1\/ORAD18\/ARCHIVELOG\/2019_10_18\/thread_1_seq_3.967.1022012235 thread=1 sequence=3\r\nchannel default: deleting archived log(s)\r\narchived log file name=+RECOC1\/ORAD18\/ARCHIVELOG\/2019_10_18\/thread_1_seq_3.967.1022012235 RECID=33 STAMP=1022012236\r\nchannel ORA_SBT_TAPE_1: starting archived log restore to default destination\r\nchannel ORA_SBT_TAPE_1: restoring archived log\r\narchived log thread=1 sequence=4\r\nchannel ORA_SBT_TAPE_1: reading from backup piece $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_4_CTKEY_50958752_BACKUP\r\nchannel ORA_SBT_TAPE_1: piece handle=$RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_4_CTKEY_50958752_BACKUP tag=TAG20191018T230523\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:02\r\narchived log file name=+RECOC1\/ORAD18\/ARCHIVELOG\/2019_10_18\/thread_1_seq_4.967.1022012237 thread=1 sequence=4\r\nchannel default: deleting archived log(s)\r\narchived log file name=+RECOC1\/ORAD18\/ARCHIVELOG\/2019_10_18\/thread_1_seq_4.967.1022012237 RECID=34 STAMP=1022012237\r\nchannel ORA_SBT_TAPE_1: starting archived log restore to default destination\r\nchannel ORA_SBT_TAPE_1: restoring archived log\r\narchived log thread=1 sequence=5\r\nchannel ORA_SBT_TAPE_1: reading from backup piece $RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_5_CTKEY_50958757_BACKUP\r\nchannel ORA_SBT_TAPE_1: piece handle=$RSCN_1129803_RTIM_1022011106_THRD_1_SEQ_5_CTKEY_50958757_BACKUP tag=TAG20191018T231012\r\nchannel ORA_SBT_TAPE_1: restored backup piece 1\r\nchannel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:01\r\narchived log file name=+RECOC1\/ORAD18\/ARCHIVELOG\/2019_10_18\/thread_1_seq_5.967.1022012239 thread=1 sequence=5\r\nchannel default: deleting archived log(s)\r\narchived log file name=+RECOC1\/ORAD18\/ARCHIVELOG\/2019_10_18\/thread_1_seq_5.967.1022012239 RECID=35 STAMP=1022012240\r\nmedia recovery complete, elapsed time: 00:00:01\r\nFinished recover at 2019-10-18_23-17-21\r\n\r\nRMAN&gt; alter database open resetlogs;\r\n\r\nStatement processed\r\nnew incarnation of database registered in recovery catalog\r\nstarting full resync of recovery catalog\r\nfull resync complete\r\n\r\nRMAN&gt; exit\r\n\r\n\r\nRecovery Manager complete.\r\n[oracle@exac1vm01-ORAD18]$<\/pre>\n<p style=\"text-align: justify;\">Some details in this log:<\/p>\n<ul style=\"text-align: justify;\">\n<li>The archivelog sequence 5 was generated by ZDLRA. Compare in the previous output that I don\u2019t have it when listed the generated archivelog.<\/li>\n<li>The archivelog \u201cNext Time\u201d was \u201c23:09:44\u201d that was the same moment of failure by instance crash.<\/li>\n<li>I used the SCN to pick up exactly the last transaction, covered by SCN.<\/li>\n<\/ul>\n<h4 style=\"text-align: justify;\"><strong>Checking data<\/strong><\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[oracle@exac1vm01-ORAD18]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 18.0.0.0.0 - Production on Fri Oct 18 23:18:37 2019\r\nVersion 18.3.0.0.0\r\n\r\nCopyright (c) 1982, 2018, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production\r\nVersion 18.3.0.0.0\r\n\r\nSQL&gt;\r\nSQL&gt;\r\nSQL&gt; select count(*) from testIns group by c3;\r\n\r\n  COUNT(*)\r\n----------\r\n       646\r\n      1016\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">Look above that I have exactly the 646 and 1016 data that I was inserting. Everything was protected and I had RPO zero.<\/p>\n<h3 style=\"text-align: justify;\">Even in ASYNC<\/h3>\n<p style=\"text-align: justify;\">Besides the SYNC mode, <a href=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/ASYNC-RPO-ZERO.txt\" target=\"_blank\" rel=\"noopener noreferrer\">I made the same test as ASYNC mode<\/a>, and you can see that <strong>even in ASYNC<\/strong> mode we reached RPO zero (and doing load during the test). You can see in the txt file that all the transactions were protected.<\/p>\n<h2 style=\"text-align: justify;\">ZDLRA and ZERO RPO<\/h2>\n<p style=\"text-align: justify;\">As you saw above with the examples, you can reach RPO zero for ZDLRA. As already told <a href=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo\/\" target=\"_blank\" rel=\"noopener noreferrer\">in my previous post<\/a> (and in the Oracle docs), the real-time redo is based on DG remote transport of redo.<\/p>\n<p style=\"text-align: justify;\">But with ZDLRA you can have zero RPO even for databases without DG configurated. You saw that ZDLRA protected the database even in case of catastrophic failure (losing all data and redos). Everything was protected.<\/p>\n<p style=\"text-align: justify;\">Think about how it was to save this failure in the traditional backup environment. Until the last backup of archivelog? Until the last sync of storage that holds the archivelogs\/redo? How much data your company can loose?&nbsp;<\/p>\n<p style=\"text-align: justify;\">The idea of SYNC with ZDLRA, besides the docs hinting to use ASYNC to avoid overload the primary database, if fine to use. I understand that they don&#8217;t want to overload primary database and put it to wait ZDLRA writes at disks. The usage of SYNC with NOAFFIRM was proved that work. I don&#8217;t think that SYNC\/AFFIRM cam improve even more the protection, because ZDLRA it is not a full DG remote destination (there are no standby redo logs), and the write to disks can&#8217;t be synchronous. <a href=\"https:\/\/oracle.com\/technetwork\/database\/availability\/sync-2437177.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">The impact for SYNC\/NOAFFIRM<\/a> is almost zero since it involves only memory to memory copy (redo log buffers from source to remote destination).<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 1rem;\">Besides that, think about what kind of environment you usually have ZDLRA. Critical databases right? And even the name of the product says ZERO DATA LOSS. So, SYNC is the only way to truly guarantee this.&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;\">Now it is easy to understand how real-time redo it is important. You can protect your database (from small to the critical) and reach RPO zero. And if you go further and follow MAA best practices you can reach RPO and RTO zero.<\/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 idea for Real-Time Redo is to reach zero RPO for every kind of database and this includes ones with and without DG. As you can see in my last post, where I showed how to configure Real-Time Redo for one database, some little steps need to be executed and they are pretty similar than [&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":[41,29,77,5,51],"tags":[67,66,100,65,112,113,114,74],"class_list":["post-618","post","type-post","status-publish","format-standard","hentry","category-data-guard","category-database","category-engineeredsystems","category-oracle","category-zdlra","tag-data-guard","tag-database","tag-engineered-systems","tag-oracle","tag-real-time-redo","tag-rpo","tag-rto","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, Real-Time Redo and Zero RPO - Fernando Simon<\/title>\n<meta name=\"description\" content=\"Check how to use ZDLRA with Real-Time Redo configure in SYNC mode. Check examples for full disaster recovery with ZERO RPO and ZDLRA.\" \/>\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-and-zero-rpo\/\" \/>\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 and Zero RPO - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"Check how to use ZDLRA with Real-Time Redo configure in SYNC mode. Check examples for full disaster recovery with ZERO RPO and ZDLRA.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-21T22:48:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-19T22:16:02+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=\"24 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-and-zero-rpo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"ZDLRA, Real-Time Redo and Zero RPO\",\"datePublished\":\"2019-10-21T22:48:00+00:00\",\"dateModified\":\"2020-07-19T22:16:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/\"},\"wordCount\":1431,\"commentCount\":11,\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png\",\"keywords\":[\"Data Guard\",\"Database\",\"Engineered Systems\",\"Oracle\",\"Real-Time Redo\",\"RPO\",\"RTO\",\"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-and-zero-rpo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/\",\"name\":\"ZDLRA, Real-Time Redo and Zero RPO - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png\",\"datePublished\":\"2019-10-21T22:48:00+00:00\",\"dateModified\":\"2020-07-19T22:16:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"Check how to use ZDLRA with Real-Time Redo configure in SYNC mode. Check examples for full disaster recovery with ZERO RPO and ZDLRA.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#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-and-zero-rpo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fernandosimon.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ZDLRA, Real-Time Redo and Zero RPO\"}]},{\"@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, Real-Time Redo and Zero RPO - Fernando Simon","description":"Check how to use ZDLRA with Real-Time Redo configure in SYNC mode. Check examples for full disaster recovery with ZERO RPO and ZDLRA.","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-and-zero-rpo\/","og_locale":"en_US","og_type":"article","og_title":"ZDLRA, Real-Time Redo and Zero RPO - Fernando Simon","og_description":"Check how to use ZDLRA with Real-Time Redo configure in SYNC mode. Check examples for full disaster recovery with ZERO RPO and ZDLRA.","og_url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/","og_site_name":"Fernando Simon","article_published_time":"2019-10-21T22:48:00+00:00","article_modified_time":"2020-07-19T22:16:02+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":"24 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"ZDLRA, Real-Time Redo and Zero RPO","datePublished":"2019-10-21T22:48:00+00:00","dateModified":"2020-07-19T22:16:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/"},"wordCount":1431,"commentCount":11,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#primaryimage"},"thumbnailUrl":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png","keywords":["Data Guard","Database","Engineered Systems","Oracle","Real-Time Redo","RPO","RTO","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-and-zero-rpo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/","url":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/","name":"ZDLRA, Real-Time Redo and Zero RPO - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#primaryimage"},"thumbnailUrl":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/10\/Real-Time-Redo-Transport.png","datePublished":"2019-10-21T22:48:00+00:00","dateModified":"2020-07-19T22:16:02+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"Check how to use ZDLRA with Real-Time Redo configure in SYNC mode. Check examples for full disaster recovery with ZERO RPO and ZDLRA.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/zdlra-real-time-redo-and-zero-rpo\/#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-and-zero-rpo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ZDLRA, Real-Time Redo and Zero RPO"}]},{"@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-9Y","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/618","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=618"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/618\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}