{"id":12842,"date":"2019-10-23T10:47:15","date_gmt":"2019-10-23T08:47:15","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/"},"modified":"2019-10-23T10:47:15","modified_gmt":"2019-10-23T08:47:15","slug":"having-multiple-standby-databases-and-cascading-with-dbvisit","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/","title":{"rendered":"Having multiple standby databases and cascading with dbvisit"},"content":{"rendered":"<p>Dbvisit standy is a disaster recovery solution that you will be able to use with Oracle standard edition. I have been working on a customer project where I had to setup a system having one primary and two standby databases. One of the standby database had to run with a gap of 24 hours. Knowing that flashback possibilities are very limited on standard edition, this would give customer the ability to extract and restore some data been wrongly lost following human errors.<\/p>\n<p>The initial configuration would be the following one :<\/p>\n<p>Database instance, db_name : MyDB<br \/>\nMyDB_02 (db_unique_name) primary database running on srv02 server.<br \/>\nMyDB_01 (db_unique_name) expected standby database running on srv01 server.<br \/>\nMyDB_03 (db_unique_name) expected standby database running on srv03 server.<\/p>\n<p>The following DDC configuration file will be used :<br \/>\nMyDBSTD1 : Configuration file for first standby been synchronized every 10 minutes.<br \/>\nMyDBSTD2 : Configuration file for second standby been synchronized every 24 hours.<\/p>\n<p>Let me walk you through the steps to setup such configuration. This article is not intended to show the whole process of implementing a dbvisit solution, but only the steps required to work with multiple standby. We will also talk about how we can implement cascaded standby and apply lag delay within dbvisit.<br \/>\n<!--more--><\/p>\n<h3>Recommendations<\/h4>\n<p>In order to limit the manual configuration changes in the DDC file after a switchover, it is recommended to use as much as possible same ORACLE_HOME, ARCHIVE Destination and DBVISIT home directory.<\/p>\n<h3>Creating MyDBSTD1 DDC configuration file<\/h3>\n<p>The first standby configuration file will be created and used between MyDB_03 (srv03) and MyDB_02 (srv02).<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv02:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -o setup\n\n\n=========================================================\n\n     Dbvisit Standby Database Technology (8.0.26_0_g3fdeaadd)\n           http:\/\/www.dbvisit.com\n\n=========================================================\n\n=&gt;dbvctl only needs to be run on the primary server.\n\nIs this the primary server?  [Yes]:\nThe following Dbvisit Database configuration (DDC) file(s) found on this\nserver:\n\n     DDC\n     ===\n1)   Create New DDC\n2)   Cancel\n\nPlease enter choice [] : 1\n\nIs this correct?  [Yes]:\n\n...\n...\n...\n\nBelow are the list of configuration variables provided during the setup process:\n\nConfiguration Variable             Value Provided\n======================             ==============\nORACLE_SID                         MyDB\nORACLE_HOME                        \/opt\/oracle\/product\/12.2.0\n\nSOURCE                             srv02\nARCHSOURCE                         \/u03\/app\/oracle\/dbvisit_arch\/MyDB\nRAC_DR                             N\nUSE_SSH                            N\nDESTINATION                        srv03\nNETPORT                            7890\nDBVISIT_BASE_DR                    \/u01\/app\/dbvisit\nORACLE_HOME_DR                     \/u01\/app\/oracle\/product\/12.2.0.1\/dbhome_1\nDB_UNIQUE_NAME_DR                  MyDB_03\nARCHDEST                           \/u03\/app\/oracle\/dbvisit_arch\/MyDB\nORACLE_SID_DR                      MyDB\nENV_FILE                           MyDBSTD1\n\nAre these variables correct?  [Yes]:\n\n&gt;&gt;&gt; Dbvisit Database configuration (DDC) file MyDBSTD1 created.\n\n&gt;&gt;&gt; Dbvisit Database repository (DDR) MyDB created.\n   Repository Version          8.4\n   Software Version            8.4\n   Repository Status           VALID\n\n\nDo you want to enter license key for the newly created Dbvisit Database configuration (DDC) file?  [Yes]:\n\nEnter license key and press Enter: []: XXXXXXXXXXXXXXXXXXXXXXXXXXX\n&gt;&gt;&gt; Dbvisit Standby License\nLicense Key     : XXXXXXXXXXXXXXXXXXXXXXXXXXX\ncustomer_number : XXXXXX\ndbname          : MyDB\nexpiry_date     : 2099-05-06\nproduct_id      : 8\nsequence        : 1\nstatus          : VALID\nupdated         : YES\n\nPID:423545\nTRACE:dbvisit_install.log\n<\/pre>\n<h3>Synchronizing both MyDB_02 and MyDB_03<\/h3>\n<h4>Shippping logs from primary to standby<\/h4>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv02:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] .\/dbvctl -d MyDBSTD1\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 326409)\ndbvctl started on srv02: Mon May 20 16:29:14 2019\n=============================================================\n\n&gt;&gt;&gt; Obtaining information from standby database (RUN_INSPECT=Y)... done\n    Thread: 1 Archive log gap: 30. Transfer log gap: 58080\n&gt;&gt;&gt; Sending heartbeat message... skipped\n&gt;&gt;&gt; First time Dbvisit Standby runs, Dbvisit Standby configuration will be copied to\n    srv03...\n&gt;&gt;&gt; Transferring Log file(s) from MyDB on srv02 to srv03 for thread 1:\n\n    thread 1 sequence 58051 (1_58051_987102791.dbf)\n    thread 1 sequence 58052 (1_58052_987102791.dbf)\n...\n...\n...\n    thread 1 sequence 58079 (1_58079_987102791.dbf)\n    thread 1 sequence 58080 (1_58080_987102791.dbf)\n\n=============================================================\ndbvctl ended on srv02: Mon May 20 16:30:50 2019\n=============================================================\n<\/pre>\n<h4>Applying log on standby database<\/h4>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD1\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 21504)\ndbvctl started on srv03: Mon May 20 16:33:42 2019\n=============================================================\n\n&gt;&gt;&gt; Sending heartbeat message... skipped\n\n&gt;&gt;&gt; Applying Log file(s) from srv02 to MyDB on srv03:\n\n    thread 1 sequence 58051 (1_58051_987102791.arc)\n    thread 1 sequence 58052 (1_58052_987102791.arc)\n...\n...\n...\n    thread 1 sequence 58079 (1_58079_987102791.arc)\n    thread 1 sequence 58080 (1_58080_987102791.arc)\n    Last applied log(s):\n    thread 1 sequence 58080\n\n    Next SCN required for recovery 49719323442 generated at 2019-05-20:16:27:09 +02:00.\n    Next required log thread 1 sequence 58081\n\n=============================================================\ndbvctl ended on srv03: Mon May 20 16:36:52 2019\n=============================================================\n<\/pre>\n<h4>Running a gap report<\/h4>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv02:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD1 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 335068)\ndbvctl started on srv02: Mon May 20 16:37:53 2019\n=============================================================\n\n\nDbvisit Standby log gap report for MyDB thread 1 at 201905201637:\n-------------------------------------------------------------\nDestination database on srv03 is at sequence: 58081.\nSource database on srv02 is at log sequence: 58082.\nSource database on srv02 is at archived log sequence: 58081.\nDbvisit Standby last transfer log sequence: 58081.\nDbvisit Standby last transfer at: 2019-05-20 16:37:36.\n\nArchive log gap for thread 1:  0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:00:01.\n\n\n=============================================================\ndbvctl ended on srv02: Mon May 20 16:37:57 2019\n=============================================================\n<\/pre>\n<h3>Switchover to srv03<\/h3>\n<p>At that time in the project we did a switchover to the newly created srv03 in order to test its stability. The switchover has been performed as described below, but this step is not mandatory when implementing several standby databases. As best practices, we  will always test the first configuration by running a switchover before moving forward.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv02:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD1 -o switchover\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 12196)\ndbvctl started on srv02: Tue May 28 00:07:34 2019\n=============================================================\n\n&gt;&gt;&gt; Starting Switchover between srv02 and srv03\n\nRunning pre-checks       ... done\nPre processing           ... done\nProcessing primary       ... done\nProcessing standby       ... done\nConverting standby       ... done\nConverting primary       ... done\nCompleting               ... done\nSynchronizing            ... done\nPost processing          ... done\n\n&gt;&gt;&gt; Graceful switchover completed.\n    Primary Database Server: srv03\n    Standby Database Server: srv02\n\n&gt;&gt;&gt; Dbvisit Standby can be run as per normal:\n    dbvctl -d MyDBSTD1\n\n\nPID:12196\nTRACE:12196_dbvctl_switchover_MyDBSTD1_201905280007.trc\n\n=============================================================\ndbvctl ended on srv02: Tue May 28 00:13:31 2019\n=============================================================\n<\/pre>\n<p>srv03 is now the new primary and srv02 a new standby database.<\/p>\n<h3>Creating MyDBSTD2 DDC configuration file<\/h3>\n<p>Once myDB_01 standby database is up and running, we can create its related DDC configuration file. To do so, we simply copy previous DDC configuration file, MyDBSTD1, and update it as needed.<\/p>\n<p>I first transferred the file from current primary srv03 to new standby server srv01 :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] scp dbv_MyDBSTD1.env oracle@srv01:$PWD\ndbv_MyDBSTD1.env\t\t100% \t23KB \t22.7KB\/s \t\t00:00\n<\/pre>\n<p>I copied it into the new DDC configuration file name :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv01:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] cp dbv_MyDBSTD1.env dbv_MyDBSTD2.env\n<\/pre>\n<p>I updated new DDC configuration accordingly to have :<\/p>\n<ul>\n<li>DESTINATION as srv01 instead of srv02<\/li>\n<li>DB_UNIQUE_NAME_DR as MyDB_01 instead of MyDB_02<\/li>\n<li>MAILCFG to see the alerts coming from STD2 configuration.<\/li>\n<\/ul>\n<p>The primary will remain the same : srv03.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv01:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] vi dbv_MyDBSTD2.env\n\noracle@srv01:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] diff dbv_MyDBSTD1.env dbv_MyDBSTD2.env\n86c86\nDESTINATION = srv02\n---\nDESTINATION = srv01\n93c93\nDB_UNIQUE_NAME_DR = MyDB\n---\nDB_UNIQUE_NAME_DR = MyDB_01\n135,136c135,136\nMAILCFG_FROM = dbvisit_conf_1@domain.name MAILCFG_FROM_DR = dbvisit_conf_1@domain.name\n---\nMAILCFG_FROM = dbvisit_conf_2@domain.name\nMAILCFG_FROM_DR = dbvisit_conf_2@domain.name\n<\/pre>\n<p>In case the ORACLE_HOME and ARCHIVE destination are not the same, these parameters will have to be updated as well. <\/p>\n<h3>Synchronizing both MyDB_03 and MyDB_01<\/h3>\n<h4>Shippping logs from primary to standby<\/h4>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD2\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 25914)\ndbvctl started on srv03: Wed Jun  5 20:32:09 2019\n=============================================================\n\n&gt;&gt;&gt; Obtaining information from standby database (RUN_INSPECT=Y)... done\n    Thread: 1 Archive log gap: 383. Transfer log gap: 67385\n&gt;&gt;&gt; Sending heartbeat message... done\n&gt;&gt;&gt; First time Dbvisit Standby runs, Dbvisit Standby configuration will be copied to\n    srv01...\n&gt;&gt;&gt; Transferring Log file(s) from MyDB on srv03 to srv01 for thread 1:\n\n    thread 1 sequence 67003 (o1_mf_1_67003_ghgwj0z2_.arc)\n    thread 1 sequence 67004 (o1_mf_1_67004_ghgwmj1w_.arc)\n...\n...\n...\n    thread 1 sequence 67384 (o1_mf_1_67384_ghj2fbgj_.arc)\n    thread 1 sequence 67385 (o1_mf_1_67385_ghj2g883_.arc)\n\n=============================================================\ndbvctl ended on srv03: Wed Jun  5 20:42:05 2019\n=============================================================\n<\/pre>\n<h4>Applying log on standby database<\/h4>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv01:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD2\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 69764)\ndbvctl started on srv01: Wed Jun  5 20:42:45 2019\n=============================================================\n\n&gt;&gt;&gt; Sending heartbeat message... done\n\n&gt;&gt;&gt; Applying Log file(s) from srv03 to MyDB on srv01:\n\n    thread 1 sequence 67003 (1_67003_987102791.arc)\n    thread 1 sequence 67004 (1_67004_987102791.arc)\n...\n...\n...\n    thread 1 sequence 67384 (1_67384_987102791.arc)\n    thread 1 sequence 67385 (1_67385_987102791.arc)\n    Last applied log(s):\n    thread 1 sequence 67385\n\n    Next SCN required for recovery 50112484332 generated at 2019-06-05:20:28:24 +02:00.\n    Next required log thread 1 sequence 67386\n\n&gt;&gt;&gt; Dbvisit Archive Management Module (AMM)\n\n    Config: number of archives to keep      = 0\n    Config: number of days to keep archives = 3\n    Config: diskspace full threshold        = 80%\n==========\n\nProcessing \/u03\/app\/oracle\/dbvisit_arch\/MyDB...\n    Archive log dir: \/u03\/app\/oracle\/dbvisit_arch\/MyDB\n    Total number of archive files   : 383\n    Number of archive logs deleted = 0\n    Current Disk percent full       : 8%\n\n=============================================================\ndbvctl ended on srv01: Wed Jun  5 21:16:30 2019\n=============================================================\n<\/pre>\n<h4>Running a gap report<\/h4>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD2 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 44143)\ndbvctl started on srv03: Wed Jun  5 21:17:03 2019\n=============================================================\n\n\nDbvisit Standby log gap report for MyDB_03 thread 1 at 201906052117:\n-------------------------------------------------------------\nDestination database on srv01 is at sequence: 67385.\nSource database on srv03 is at log sequence: 67387.\nSource database on srv03 is at archived log sequence: 67386.\nDbvisit Standby last transfer log sequence: 67385.\nDbvisit Standby last transfer at: 2019-06-05 20:42:05.\n\nArchive log gap for thread 1:  1.\nTransfer log gap for thread 1: 1.\nStandby database time lag (DAYS-HH:MI:SS): +00:48:41.\n<\/pre>\n<h3>Switchover to srv01<\/h3>\n<p>Now we are having both srv01 and srv02 standby databases up and running and connected with current srv03 primary database. Let&#8217;s switchover to srv01 and see what would be the required steps. After each switchover the other standby DDC configuration files will have to be manually updated.<\/p>\n<h4>Checking srv03 and srv02 are synchronized<\/h4>\n<p>Both srv03 and srv02 databases should be in sync otherwise ship and apply archive logs.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD1 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 93307)\ndbvctl started on srv03: Wed Jun  5 21:27:02 2019\n=============================================================\n\n\nDbvisit Standby log gap report for MyDB_03 thread 1 at 201906052127:\n-------------------------------------------------------------\nDestination database on srv02 is at sequence: 67386.\nSource database on srv03 is at log sequence: 67387.\nSource database on srv03 is at archived log sequence: 67386.\nDbvisit Standby last transfer log sequence: 67386.\nDbvisit Standby last transfer at: 2019-06-05 21:24:47.\n\nArchive log gap for thread 1:  0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:27:02.\n\n\n=============================================================\ndbvctl ended on srv03: Wed Jun  5 21:27:08 2019\n=============================================================\n<\/pre>\n<h4>Checking srv03 and srv01 are synchronized<\/h4>\n<p>Both srv03 and srv01 databases should be in sync otherwise ship and apply archive logs.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD2 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 90871)\ndbvctl started on srv03: Wed Jun  5 21:26:31 2019\n=============================================================\n\n\nDbvisit Standby log gap report for MyDB_03 thread 1 at 201906052126:\n-------------------------------------------------------------\nDestination database on srv01 is at sequence: 67386.\nSource database on srv03 is at log sequence: 67387.\nSource database on srv03 is at archived log sequence: 67386.\nDbvisit Standby last transfer log sequence: 67386.\nDbvisit Standby last transfer at: 2019-06-05 21:26:02.\n\nArchive log gap for thread 1:  0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:26:02.\n<\/pre>\n<h4>Switchover to srv01<\/h4>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD2 -o switchover\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 20334)\ndbvctl started on srv03: Wed Jun  5 21:31:56 2019\n=============================================================\n\n&gt;&gt;&gt; Starting Switchover between srv03 and srv01\n\nRunning pre-checks       ... done\nPre processing           ... done\nProcessing primary       ... done\nProcessing standby       ... done\nConverting standby       ... done\nConverting primary       ... done\nCompleting               ... done\nSynchronizing            ... done\nPost processing          ... done\n\n&gt;&gt;&gt; Graceful switchover completed.\n    Primary Database Server: srv01\n    Standby Database Server: srv03\n\n&gt;&gt;&gt; Dbvisit Standby can be run as per normal:\n    dbvctl -d MyDBSTD2\n\n\nPID:20334\nTRACE:20334_dbvctl_switchover_MyDBSTD2_201906052131.trc\n\n=============================================================\ndbvctl ended on srv03: Wed Jun  5 21:37:40 2019\n=============================================================\n<\/pre>\n<h4>Attach srv02 to srv01 (new primary) <\/h4>\n<p>Previously to the switchover :<\/p>\n<ul>\n<li>srv03 and srv01 was using MyDBSTD2 DDC configuration file<\/li>\n<li>srv03 and srv02 was using MyDBSTD1 DDC configuration file<\/li>\n<\/ul>\n<p>srv02 standby database needs now to be attach to new primary srv01. For this we will copy the MyDBSTD1 DDC configuration file from srv02 to srv01 as it is the first time srv01 is primary. Otherwise, we would only need to update accordingly the already existing file.<\/p>\n<p>I have been transferring the DDC file :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv02:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] scp dbv_MyDBSTD1.env oracle@srv01:$PWD\ndbv_MyDBSTD1.env    100%   23KB  14.8MB\/s   00:00\n<\/pre>\n<p>MyDBSTD1 configuration file has been updated accordingly to reflect new changes and configuration :<\/p>\n<ul>\n<li>SOURCE needs to be replaced from srv03 to srv01<\/li>\n<li>DESTINATION will remain srv02<\/li>\n<li>DB_UNIQUE_NAME needs to be replaced fromMyDB_03 to MyDB_01<\/li>\n<li>DB_UNIQUE_NAME_DR will remain MyDB_02<\/li>\n<\/ul>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv01:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] vi dbv_MyDBSTD1.env\n\noracle@srv01:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] grep ^SOURCE dbv_MyDBSTD1.env\nSOURCE = srv01\n\noracle@srv01:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] grep DB_UNIQUE_NAME dbv_MyDBSTD1.env\n# DB_UNIQUE_NAME      - Primary database db_unique_name\nDB_UNIQUE_NAME = MyDB_01\n# DB_UNIQUE_NAME_DR   - Standby database db_unique_name\nDB_UNIQUE_NAME_DR = MyDB_02\n<\/pre>\n<h4>Checking that databases are all synchronized<\/h4>\n<p>After performing several switch logfile on the primary in order to generate archive logs, I transferred and applied needed archive log files on both srv02 and srv03 standby databases. I made sure both are synchronized.<\/p>\n<p>srv01 and srv03 databases :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv01:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD2 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 98156)\ndbvctl started on srv01: Wed Jun  5 21:52:08 2019\n=============================================================\n\n\nDbvisit Standby log gap report for MyDB_01 thread 1 at 201906052152:\n-------------------------------------------------------------\nDestination database on srv03 is at sequence: 67413.\nSource database on srv01 is at log sequence: 67414.\nSource database on srv01 is at archived log sequence: 67413.\nDbvisit Standby last transfer log sequence: 67413.\nDbvisit Standby last transfer at: 2019-06-05 21:51:13.\n\nArchive log gap for thread 1:  0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:00:00.\n\n\n=============================================================\ndbvctl ended on srv01: Wed Jun  5 21:52:18 2019\n=============================================================\n<\/pre>\n<p>srv01 and srv02 databases :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv01:\/u01\/app\/dbvisit\/standby\/ [MyDB] .\/dbvctl -d MyDBSTD1 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 100393)\ndbvctl started on srv01: Wed Jun  5 21:56:06 2019\n=============================================================\n\n\nDbvisit Standby log gap report for MyDB_01 thread 1 at 201906052156:\n-------------------------------------------------------------\nDestination database on srv02 is at sequence: 67413.\nSource database on srv01 is at log sequence: 67414.\nSource database on srv01 is at archived log sequence: 67413.\nDbvisit Standby last transfer log sequence: 67413.\nDbvisit Standby last transfer at: 2019-06-05 21:55:22.\n\nArchive log gap for thread 1:  0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:05:13.\n\n\n=============================================================\ndbvctl ended on srv01: Wed Jun  5 21:56:07 2019\n=============================================================\n<\/pre>\n<h3>Apply delay lag<\/h3>\n<p>MyDBSTD2 configuration should at the end have an apply lag of 24 hours. This can be achieved using APPLY_DELAY_LAG_MINUTES in the configuration. In order to test it, I have decided with customer to use 60 minutes delay.<\/p>\n<h4>Update MyDBSTD2 DDC configuration file<\/h4>\n<p>Following parameters have been updated in the configuration :<br \/>\nAPPLY_DELAY_LAG_MINUTES = 60<br \/>\nDMN_MONITOR_INTERVAL_DR = 0<br \/>\nTRANSFER_LOG_GAP_THRESHOLD = 0<br \/>\nARCHIVE_LOG_GAP_THRESHOLD = 60<\/p>\n<p>APPLY_DELAY_LAG_MINUTES is the delay in minutes to take in account before applying the vector changes.<br \/>\nDMN_MONITOR_INTERVAL_DR is the interval in sec for log monitor schedule on destination. 0 mean deactivated.<br \/>\nTRANSFER_LOG_GAP_THRESHOLD is the difference allowed between the last archived sequence on the primary and the last sequence transferred to the standby server.<br \/>\nARCHIVE_LOG_GAP_THRESHOLD is the difference allowed between the last archived sequence on the primary and the last applied sequence on the standby database before an alert is sent.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] cp dbv_MyDBSTD2.env dbv_MyDBSTD2.env.201906131343\n\noracle@srv03:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] vi dbv_MyDBSTD2.env\n\noracle@srv03:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] diff dbv_MyDBSTD2.env dbv_MyDBSTD2.env.201906131343\n281c281\nDMN_MONITOR_INTERVAL_DR = 0\n---\nDMN_MONITOR_INTERVAL_DR = 5\n331c331\nAPPLY_DELAY_LAG_MINUTES = 60\n---\nAPPLY_DELAY_LAG_MINUTES = 0\n374c374\nARCHIVE_LOG_GAP_THRESHOLD = 60\n---\nARCHIVE_LOG_GAP_THRESHOLD = 0\n\noracle@srv03:\/u01\/app\/dbvisit\/standby\/conf\/ [MyDB] grep ^TRANSFER_LOG_GAP_THRESHOLD dbv_MyDBSTD2.env\nTRANSFER_LOG_GAP_THRESHOLD = 0\n<\/pre>\n<h4>Report displayed with an apply delay lag been configured<\/h4>\n<p>When generating a report, we can see that there is no gap in the log transfer as the archive log would be transferred through the crontab every 10 minutes. On the other side, we can see that there is an expected delay of 60 minutes in applying the logs.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@srv03:\/u01\/app\/dbvisit\/standby\/ [MyDBTEST] .\/dbvctl -d MyDBSTD2 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.26_0_g3fdeaadd) (pid 66003)\ndbvctl started on srv03: Thu Jun 13 15:21:29 2019\n=============================================================\n\n\nDbvisit Standby log gap report for MyDB_03 thread 1 at 201906131521:\n-------------------------------------------------------------\nDestination database on srv01 is at sequence: 73856.\nSource database on srv03 is at log sequence: 73890.\nSource database on srv03 is at archived log sequence: 73889.\nDbvisit Standby last transfer log sequence: 73889.\nDbvisit Standby last transfer at: 2019-06-13 15:20:15.\n\nArchive log gap for thread 1:  33 (apply_delay_lag_minutes=60).\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +01:00:00.\n\n\n=============================================================\ndbvctl ended on srv03: Thu Jun 13 15:21:35 2019\n=============================================================\n<\/pre>\n<h3>Cascading standby database<\/h3>\n<p>What about cascading standby database? Cascading standby database is possible with dbvisit. We would be using a cascaded standby for a reporting server that needs to be updated less frequently or if we would like to unload the primary database in sending archive logs to multiple standby databases. The cascaded standby database will remain updated through the first standby. Cascading is possible since dbvisit version 8.<\/p>\n<p>Following needs to be known :<\/p>\n<ul>\n<li>Switchover will not be possible between the primary and the cascaded standby database.<\/li>\n<li>The DDC configuration file between the first standby and the cascaded standby needs to have :<\/li>\n<ul>\n<li>As SOURCE the first standby database<\/li>\n<li>CASCADE parameter set to Y. This will be done automatically when creating the DDC configuration with dbvctl -o setup. From the traces you will see : &gt;&gt;&gt; Source database is a standby database. CASCADE flag will be turned on.<\/li>\n<li>ARCHDEST and ARCHSOURCE location on the first standby needs to have same values.<\/li>\n<\/ul>\n<p>The principle is then exactly the same, and running dbvctl -d  from the first standby will ship the archive log to the second standby.\n<\/ul>\n<p>I had been running some tests in my lab.<\/p>\n<h4> Environment<\/h4>\n<p>DBVP is the primary server.<br \/>\nDBVS is the first standby server.<br \/>\nDBVS2 is the second cascaded server.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] DBVPDB\n********* dbi services Ltd. *********\nSTATUS                 : OPEN\nDB_UNIQUE_NAME         : DBVPDB_SITE1\nOPEN_MODE              : READ WRITE\nLOG_MODE               : ARCHIVELOG\nDATABASE_ROLE          : PRIMARY\nFLASHBACK_ON           : NO\nFORCE_LOGGING          : YES\nVERSION                : 12.2.0.1.0\nCDB Enabled            : NO\n*************************************\n\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] DBVPDB\n********* dbi services Ltd. *********\nSTATUS                 : MOUNTED\nDB_UNIQUE_NAME         : DBVPDB_SITE2\nOPEN_MODE              : MOUNTED\nLOG_MODE               : ARCHIVELOG\nDATABASE_ROLE          : PHYSICAL STANDBY\nFLASHBACK_ON           : NO\nFORCE_LOGGING          : YES\nCDB Enabled            : NO\n*************************************\n\n\noracle@DBVS2:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] DBVPDB\n********* dbi services Ltd. *********\nSTATUS                 : MOUNTED\nDB_UNIQUE_NAME         : DBVPDB_SITE3\nOPEN_MODE              : MOUNTED\nLOG_MODE               : ARCHIVELOG\nDATABASE_ROLE          : PHYSICAL STANDBY\nFLASHBACK_ON           : NO\nFORCE_LOGGING          : YES\nCDB Enabled            : NO\n*************************************\n<\/pre>\n<h4>Create cascaded DDC configuration file<\/h4>\n<p>The DDC configuration file will be created from the first standby node.<br \/>\nDBVS (first standby server) will be the SOURCE.<br \/>\nDBVS2 (cascaded standby server) will be the DESTINATION.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -o setup\n\n\n=========================================================\n\n     Dbvisit Standby Database Technology (8.0.20_0_g7e6bd51b)\n           http:\/\/www.dbvisit.com\n\n=========================================================\n\n=&gt;dbvctl only needs to be run on the primary server.\n\nIs this the primary server?  [Yes]:\nThe following Dbvisit Database configuration (DDC) file(s) found on this\nserver:\n\n     DDC\n     ===\n1)   Create New DDC\n2)   DBVPDB\n3)   DBVPDB_SITE1\n4)   DBVPOMF_SITE1\n5)   Cancel\n\nPlease enter choice [] : 1\n\nIs this correct?  [Yes]:\n\n...\n\n\nContinue ?  [No]: yes\n\n=========================================================\nDbvisit Standby setup begins.\n=========================================================\nThe following Oracle instance(s) have been found on this server:\n\n     SID            ORACLE_HOME\n     ===            ===========\n1)   rdbms12201     \/u01\/app\/oracle\/product\/12.2.0\/dbhome_1\n2)   DBVPDB         \/u01\/app\/oracle\/product\/12.2.0\/dbhome_1\n3)   DBVPOMF        \/u01\/app\/oracle\/product\/12.2.0\/dbhome_1\n4)   DUP            \/u01\/app\/oracle\/product\/12.2.0\/dbhome_1\n5)   Enter own ORACLE_SID and ORACLE_HOME\nPlease enter choice [] : 2\n\nIs this correct?  [Yes]:\n=&gt;ORACLE_SID will be: DBVPDB\n=&gt;ORACLE_HOME will be: \/u01\/app\/oracle\/product\/12.2.0\/dbhome_1\n\n&gt;&gt;&gt; Source database is a standby database. CASCADE flag will be turned on.\n\nYes to continue or No to cancel setup?  [Yes]:\n\n...\n...\n...\n\nBelow are the list of configuration variables provided during the setup process:\n\nConfiguration Variable             Value Provided\n======================             ==============\nORACLE_SID                         DBVPDB\nORACLE_HOME                        \/u01\/app\/oracle\/product\/12.2.0\/dbhome_1\n\nSOURCE                             DBVS\nARCHSOURCE                         \/u90\/dbvisit_arch\/DBVPDB_SITE2\nRAC_DR                             N\nUSE_SSH                            Y\nDESTINATION                        DBVS2\nNETPORT                            22\nDBVISIT_BASE_DR                    \/oracle\/u01\/app\/dbvisit\nORACLE_HOME_DR                     \/u01\/app\/oracle\/product\/12.2.0\/dbhome_1\nDB_UNIQUE_NAME_DR                  DBVPDB_SITE3\nARCHDEST                           \/u90\/dbvisit_arch\/DBVPDB_SITE3\nORACLE_SID_DR                      DBVPDB\nENV_FILE                           DBVPDB_CASCADED\n\nAre these variables correct?  [Yes]:\n\n&gt;&gt;&gt; Dbvisit Database configuration (DDC) file DBVPDB_CASCADED created.\n\n&gt;&gt;&gt; Dbvisit Database repository (DDR) already installed.\n   Repository Version          8.3\n   Software Version            8.3\n   Repository Status           VALID\n\n\nDo you want to enter license key for the newly created Dbvisit Database configuration (DDC) file?  [Yes]:\n\nEnter license key and press Enter: []: 4jo6z-8aaai-u09b6-ijjxe-cxks5-1114a-ozfvp\noracle@dbvs2's password:\n&gt;&gt;&gt; Dbvisit Standby License\nLicense Key     : 4jo6z-8aaai-u09b6-ijjxe-cxks5-1114a-ozfvp\ncustomer_number : 1\ndbname          :\nexpiry_date     : 2019-05-29\nproduct_id      : 8\nsequence        : 1\nstatus          : VALID\nupdated         : YES\n\nPID:25571\nTRACE:dbvisit_install.log\n<\/pre>\n<p>dbvisit software could see that the SOURCE is already a standby database. The software will then automatically configured the CASCADE flag to Y.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n&gt;&gt;&gt; Source database is a standby database. CASCADE flag will be turned on.\n<\/pre>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/conf\/ [DBVPDB] grep CASCADE dbv_DBVPDB_CASCADED.env\n# Variable: CASCADE\n#      CASCADE = Y\nCASCADE = Y\n<\/pre>\n<h4>Synchronize first standby with primary<\/h4>\n<h5>Ship archive log from primary to first standby<\/h5>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB\n=============================================================\nDbvisit Standby Database Technology (8.0.20_0_g7e6bd51b) (pid 23506)\ndbvctl started on DBVP: Wed May 15 01:24:55 2019\n=============================================================\n\n&gt;&gt;&gt; Obtaining information from standby database (RUN_INSPECT=Y)... done\n    Thread: 1 Archive log gap: 3. Transfer log gap: 3\n&gt;&gt;&gt; Transferring Log file(s) from DBVPDB on DBVP to DBVS for thread 1:\n\n    thread 1 sequence 50 (o1_mf_1_50_gfpmk7sg_.arc)\n    thread 1 sequence 51 (o1_mf_1_51_gfpmkc7p_.arc)\n    thread 1 sequence 52 (o1_mf_1_52_gfpmkf7w_.arc)\n\n=============================================================\ndbvctl ended on DBVP: Wed May 15 01:25:06 2019\n=============================================================\n<\/pre>\n<h5>Apply archive log on first standby<\/h5>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB\n=============================================================\nDbvisit Standby Database Technology (8.0.20_0_g7e6bd51b) (pid 27769)\ndbvctl started on DBVS: Wed May 15 01:25:25 2019\n=============================================================\n\n\n&gt;&gt;&gt; Applying Log file(s) from DBVP to DBVPDB on DBVS:\n\n&gt;&gt;&gt; No new logs to apply.\n    Last applied log(s):\n    thread 1 sequence 52\n\n    Next SCN required for recovery 885547 generated at 2019-05-15:01:24:29 +02:00.\n    Next required log thread 1 sequence 53\n\n=============================================================\ndbvctl ended on DBVS: Wed May 15 01:25:27 2019\n=============================================================\n<\/pre>\n<h5>Run a gap report<\/h5>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB -i\n=============================================================\nDbvisit Standby Database Technology (8.0.20_0_g7e6bd51b) (pid 23625)\ndbvctl started on DBVP: Wed May 15 01:25:55 2019\n=============================================================\n\n\nDbvisit Standby log gap report for DBVPDB_SITE1 thread 1 at 201905150125:\n-------------------------------------------------------------\nDestination database on DBVS is at sequence: 52.\nSource database on DBVP is at log sequence: 53.\nSource database on DBVP is at archived log sequence: 52.\nDbvisit Standby last transfer log sequence: 52.\nDbvisit Standby last transfer at: 2019-05-15 01:25:06.\n\nArchive log gap for thread 1:  0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:00:33.\n\n\n=============================================================\ndbvctl ended on DBVP: Wed May 15 01:25:58 2019\n=============================================================\n<\/pre>\n<h4>Synchronize cascaded standby with first standby<\/h4>\n<h5>Ship archive log from first standby to cascaded standby<\/h5>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB_CASCADED\n=============================================================\nDbvisit Standby Database Technology (8.0.20_0_g7e6bd51b) (pid 27965)\ndbvctl started on DBVS: Wed May 15 01:26:41 2019\n=============================================================\n\n&gt;&gt;&gt; Obtaining information from standby database (RUN_INSPECT=Y)... done\n    Thread: 1 Archive log gap: 3. Transfer log gap: 3\n&gt;&gt;&gt; Transferring Log file(s) from DBVPDB on DBVS to DBVS2 for thread 1:\n\n    thread 1 sequence 50 (1_50_979494498.arc)\n    thread 1 sequence 51 (1_51_979494498.arc)\n    thread 1 sequence 52 (1_52_979494498.arc)\n\n=============================================================\ndbvctl ended on DBVS: Wed May 15 01:26:49 2019\n=============================================================\n<\/pre>\n<h5>Apply archive log on cascaded standby<\/h5>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVS2:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB_CASCADED\n=============================================================\nDbvisit Standby Database Technology (8.0.20_0_g7e6bd51b) (pid 21118)\ndbvctl started on DBVS2: Wed May 15 01:27:21 2019\n=============================================================\n\n\n&gt;&gt;&gt; Applying Log file(s) from DBVS to DBVPDB on DBVS2:\n\n    thread 1 sequence 50 (1_50_979494498.arc)\n    thread 1 sequence 51 (1_51_979494498.arc)\n    thread 1 sequence 52 (1_52_979494498.arc)\n    Last applied log(s):\n    thread 1 sequence 52\n\n    Next SCN required for recovery 885547 generated at 2019-05-15:01:24:29 +02:00.\n    Next required log thread 1 sequence 53\n\n=============================================================\ndbvctl ended on DBVS2: Wed May 15 01:27:33 2019\n=============================================================\n<\/pre>\n<h5>Run a gap report<\/h5>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB_CASCADED -i\n=============================================================\nDbvisit Standby Database Technology (8.0.20_0_g7e6bd51b) (pid 28084)\ndbvctl started on DBVS: Wed May 15 01:28:07 2019\n=============================================================\n\n\nDbvisit Standby log gap report for DBVPDB_SITE2 thread 1 at 201905150128:\n-------------------------------------------------------------\nDestination database on DBVS2 is at sequence: 52.\nSource database on DBVS is at applied log sequence: 52.\nDbvisit Standby last transfer log sequence: 52.\nDbvisit Standby last transfer at: 2019-05-15 01:26:49.\n\nArchive log gap for thread 1:  0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:00:00.\n\n\n=============================================================\ndbvctl ended on DBVS: Wed May 15 01:28:11 2019\n=============================================================\n<\/pre>\n<h3>Conclusion<\/h3>\n<p>With dbvisit we are able to configure several standby databases, choose apply lag delay and also configure cascaded standby. The cons would be that the DDC configuration file needs to be manually adapted after each switchover.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dbvisit standy is a disaster recovery solution that you will be able to use with Oracle standard edition. I have been working on a customer project where I had to setup a system having one primary and two standby databases. One of the standby database had to run with a gap of 24 hours. Knowing [&hellip;]<\/p>\n","protected":false},"author":48,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,59],"tags":[1707,372,96,238],"type_dbi":[],"class_list":["post-12842","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-oracle","tag-cascading","tag-dbvisit","tag-oracle","tag-standby"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Having multiple standby databases and cascading with dbvisit - dbi Blog<\/title>\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.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Having multiple standby databases and cascading with dbvisit\" \/>\n<meta property=\"og:description\" content=\"Dbvisit standy is a disaster recovery solution that you will be able to use with Oracle standard edition. I have been working on a customer project where I had to setup a system having one primary and two standby databases. One of the standby database had to run with a gap of 24 hours. Knowing [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-23T08:47:15+00:00\" \/>\n<meta name=\"author\" content=\"Marc Wagner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Wagner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/\"},\"author\":{\"name\":\"Marc Wagner\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"headline\":\"Having multiple standby databases and cascading with dbvisit\",\"datePublished\":\"2019-10-23T08:47:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/\"},\"wordCount\":1341,\"commentCount\":0,\"keywords\":[\"cascading\",\"dbvisit\",\"Oracle\",\"Standby\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/\",\"name\":\"Having multiple standby databases and cascading with dbvisit - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2019-10-23T08:47:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Having multiple standby databases and cascading with dbvisit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\",\"name\":\"Marc Wagner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"caption\":\"Marc Wagner\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Having multiple standby databases and cascading with dbvisit - dbi Blog","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.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/","og_locale":"en_US","og_type":"article","og_title":"Having multiple standby databases and cascading with dbvisit","og_description":"Dbvisit standy is a disaster recovery solution that you will be able to use with Oracle standard edition. I have been working on a customer project where I had to setup a system having one primary and two standby databases. One of the standby database had to run with a gap of 24 hours. Knowing [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/","og_site_name":"dbi Blog","article_published_time":"2019-10-23T08:47:15+00:00","author":"Marc Wagner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Wagner","Est. reading time":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/"},"author":{"name":"Marc Wagner","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"headline":"Having multiple standby databases and cascading with dbvisit","datePublished":"2019-10-23T08:47:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/"},"wordCount":1341,"commentCount":0,"keywords":["cascading","dbvisit","Oracle","Standby"],"articleSection":["Database Administration &amp; Monitoring","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/","url":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/","name":"Having multiple standby databases and cascading with dbvisit - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-10-23T08:47:15+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/having-multiple-standby-databases-and-cascading-with-dbvisit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Having multiple standby databases and cascading with dbvisit"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628","name":"Marc Wagner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","caption":"Marc Wagner"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=12842"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12842\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12842"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}