{"id":11049,"date":"2018-04-09T12:27:25","date_gmt":"2018-04-09T10:27:25","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/"},"modified":"2018-04-09T12:27:25","modified_gmt":"2018-04-09T10:27:25","slug":"dbvisit-standby-archive-log-daemon","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/","title":{"rendered":"Dbvisit Standby Archive Log Daemon"},"content":{"rendered":"<p>Dbvisit Standby version 8 comes with a nice feature, a daemon, which gives the benefit to send and apply the archive log automatically in the background. Bypassing the system scheduling, the daemon will facilitate customer RPO (Recovery Point Objective) and RTO (Recovery Time Objective) fine tuning. Monitoring to apply logs to the Standby only when needed, will also optimize use of resources. Originally available for the Linux based environments, the feature has been made available for the Windows based platforms starting 8.0.06. This blog will cover its implementation and show its benefit.<\/p>\n<p><!--more--><\/p>\n<p><a title=\"DBI DMK Management Kit\" href=\"https:\/\/www.dbi-services.com\/offering\/products\/dmk-management-kit\/\" target=\"_blank\" rel=\"noopener noreferrer\">Demo databases environments have been easily managed thanks to DBI DMK tool.<\/a><\/p>\n<h3>Environment<\/h3>\n<pre>DBVP : Primary Server<\/pre>\n<pre>DBVS : Standby Server<\/pre>\n<pre>DBVPDB_SITE1 : Primary database<\/pre>\n<pre>DBVPDB_SITE2 : Physical Standby database<\/pre>\n<p>&nbsp;<\/p>\n<h3>Daemon start\/stop\/status<\/h3>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/home\/oracle\/ [DBVPDB] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\nStarting Dbvisit Daemon...\nStarted successfully.\n\noracle@DBVP:\/home\/oracle\/ [DBVPDB] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D status\nDbvisit Daemon process is running with pid 11546.\n\noracle@DBVP:\/home\/oracle\/ [DBVPDB] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D stop\nStopping Dbvisit Daemon...\nSuccessfully stopped.<\/pre>\n<p>&nbsp;<\/p>\n<h3>Automatic startup<\/h3>\n<pre>In order to start the daemon automatically at boot,\u00a0 and easily manage its status, we will create a dbvlogdaemon Service.<\/pre>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[root@DBVP ~]# vi \/etc\/systemd\/system\/dbvlogdaemon.service\n\n[root@DBVP ~]# cat \/etc\/systemd\/system\/dbvlogdaemon.service\n[Unit]\nDescription=DB Visit log daemon Service\nAfter=oracle.service\n\n[Service]\nType=simple\nRemainAfterExit=yes\nUser=oracle\nGroup=oinstall\nRestart=always\nExecStart=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\nExecStop=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D stop\n\n[Install]\nWantedBy=multi-user.target\n\n[root@DBVP ~]# chmod 644 \/etc\/systemd\/system\/dbvlogdaemon.service\n\n[root@DBVP ~]# systemctl daemon-reload\n\n[root@DBVP ~]# systemctl enable dbvlogdaemon.service<\/pre>\n<p>Of course this would not avoid impact in case of daemon crash which could be simulated with a kill command.<\/p>\n<p><em><strong>Edit from November 14, 2019<\/strong><\/em><br \/>\nIn order to avoid any impact of daemon crash, use below service configuration :<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[root@DBVP ~]# cat \/etc\/systemd\/system\/dbvlogdaemon.service\n[Unit]\nDescription=Dbvisit daemon\nConditionFileIsExecutable=\/u01\/app\/dbvisit\/standby\/dbvctl\nAfter=syslog.target network.target\n\n[Service]\nRemainAfterExit=no\nStartLimitInterval=5\nStartLimitBurst=10\nExecStart=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\nExecStop=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D stop\nUser=oracle\nGroup=oinstall\nRestart=always\nType=forking\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n<\/pre>\n<p>See below test showing that daemon is started automatically again in case of crash.<\/p>\n<p>Start daemon :<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] systemctl start dbvlogdaemon.service\n==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===\nAuthentication is required to manage system services or units.\nAuthenticating as: root\nPassword:\n==== AUTHENTICATION COMPLETE ===\n<\/pre>\n<p>Check that daemon is well started :<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] systemctl status dbvlogdaemon.service\n\u25cf dbvlogdaemon.service - Dbvisit daemon\n   Loaded: loaded (\/etc\/systemd\/system\/dbvlogdaemon.service; enabled; vendor preset: disabled)\n   Active: active (running) since Thu 2019-11-14 10:34:37 CET; 5s ago\n  Process: 12497 ExecStop=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D stop (code=exited, status=0\/SUCCESS)\n  Process: 12521 ExecStart=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start (code=exited, status=0\/SUCCESS)\n Main PID: 12542 (dbvctl)\n   CGroup: \/system.slice\/dbvlogdaemon.service\n           \u2514\u250012542 \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D status\nDbvisit Daemon process is running with pid 12542.\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] ps -ef | grep dbv | grep -v grep\noracle    1197     1  0 10:10 ?        00:00:00 \/u01\/app\/dbvisit\/dbvnet\/dbvnet -d start\noracle    1198     1  0 10:10 ?        00:00:00 \/u01\/app\/dbvisit\/dbvagent\/dbvagent -d start\noracle   12542     1  1 10:34 ?        00:00:00 \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\n<\/pre>\n<p>Kill the daemon process :<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] kill -9 12542\n<\/pre>\n<p>After a time you will see that the daemon has been automatically restarted with new PID :<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] ps -ef | grep dbv | grep -v grep\noracle    1197     1  0 10:10 ?        00:00:00 \/u01\/app\/dbvisit\/dbvnet\/dbvnet -d start\noracle    1198     1  0 10:10 ?        00:00:00 \/u01\/app\/dbvisit\/dbvagent\/dbvagent -d start\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D status\nDbvisit Daemon process is not running.\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D status\nDbvisit Daemon process is not running.\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] ps -ef | grep dbv | grep -v grep\noracle    1197     1  0 10:10 ?        00:00:00 \/u01\/app\/dbvisit\/dbvnet\/dbvnet -d start\noracle    1198     1  0 10:10 ?        00:00:00 \/u01\/app\/dbvisit\/dbvagent\/dbvagent -d start\noracle   12940     1  0 10:37 ?        00:00:00 \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D status\nDbvisit Daemon process is running with pid 12940.\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201] systemctl status dbvlogdaemon.service\n\u25cf dbvlogdaemon.service - Dbvisit daemon\n   Loaded: loaded (\/etc\/systemd\/system\/dbvlogdaemon.service; enabled; vendor preset: disabled)\n   Active: active (running) since Thu 2019-11-14 10:37:31 CET; 2min 5s ago\n  Process: 12907 ExecStop=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D stop (code=exited, status=0\/SUCCESS)\n  Process: 12919 ExecStart=\/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start (code=exited, status=0\/SUCCESS)\n Main PID: 12940 (dbvctl)\n   CGroup: \/system.slice\/dbvlogdaemon.service\n           \u2514\u250012940 \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [rdbms12201]\n<\/pre>\n<p><em><strong>End of november edit<\/strong><\/em><\/p>\n<p>&nbsp;<\/p>\n<h3>Check running daemon<\/h3>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] ps -ef | grep dbvctl | grep -v grep\noracle\u00a0\u00a0\u00a0 4299\u00a0\u00a0\u00a0\u00a0 1\u00a0 0 08:25 ?\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 00:00:02 \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB_SITE1 -D status\nDbvisit Daemon process is running with pid 4299.\n\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] ps -ef | grep dbvctl | grep -v grep\noracle\u00a0\u00a0\u00a0 4138\u00a0\u00a0\u00a0\u00a0 1\u00a0 0 08:25 ?\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 00:00:01 \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -D start\n\noracle@DBVS:\/u01\/app\/dbvisit\/standby\/ [DBVPDB] .\/dbvctl -d DBVPDB_SITE1 -D status\nDbvisit Daemon process is running with pid 4138.<\/pre>\n<pre><\/pre>\n<p>&nbsp;<\/p>\n<h3>Daemon Parameter<\/h3>\n<pre># DMN_DBVISIT_INTERVAL\u00a0\u00a0\u00a0\u00a0 - interval in sec for dbvisit schedule on source\n# DMN_MONITOR_INTERVAL\u00a0\u00a0\u00a0\u00a0 - interval in sec for log monitor schedule on source\n# DMN_DBVISIT_TIMEOUT\u00a0\u00a0\u00a0\u00a0\u00a0 - max sec for a dbvisit process to complete on source\n# DMN_MONITOR_TIMEOUT\u00a0\u00a0\u00a0\u00a0\u00a0 - max sec for a monitor process to complete on source\n# DMN_MONITOR_LOG_NUM\u00a0\u00a0\u00a0\u00a0\u00a0 - number of logs to monitor on source\n# DMN_MAX_FAIL_NOTIFICATIONS - max number of emails sent on failure on source\n# DMN_BLACKOUT_STARTTIME\u00a0\u00a0 - blackout window start time HH:MI on source\n# DMN_BLACKOUT_ENDTIME\u00a0\u00a0\u00a0\u00a0 - blackout window end time HH:MI on source\n# DMN_DBVISIT_INTERVAL_DR\u00a0 - interval in sec for dbvisit schedule on destination\n# DMN_MONITOR_INTERVAL_DR\u00a0 - interval in sec for log monitor schedule on destination\n# DMN_DBVISIT_TIMEOUT_DR\u00a0\u00a0 - max sec for a dbvisit process to complete on destination\n# DMN_MONITOR_TIMEOUT_DR\u00a0\u00a0 - max sec for a monitor process to complete on destination\n# DMN_MONITOR_LOG_NUM_DR\u00a0\u00a0 - number of logs to monitor on destination\n# DMN_MAX_FAIL_NOTIFICATIONS_DR - max number of emails sent on failure on destination\n# DMN_BLACKOUT_STARTTIME_DR- blackout window start time HH:MI on destination\n# DMN_BLACKOUT_ENDTIME_DR\u00a0 - blackout window end time HH:MI on destination\n\n<\/pre>\n<p>With the daemon, we can pause the archive send\/apply process using the DMN_BLACKOUT parameters.<\/p>\n<pre>To setup our lab we will act on the most important parameters :<\/pre>\n<ul>\n<li>DMN_MONITOR_INTERVAL\u00a0 (Primary) and DMN_MONITOR_INTERVAL_DR (Standby).<br \/>\nThe Monitor Interval will give the frequency for Dbvisit to check for new archive log and only act if existing.<\/li>\n<li>DMN_DBVISIT_INTERVAL (Primary) and DMN_DBVISIT_INTERVAL_DR (Standby)<br \/>\nThe Dbvisit Interval will give the frequency for Dbvisit to force a send\/apply process. This action will be dependent of the LOGSWITCH DCC parameter. Recommendation is not to go below 5 minutes.<\/li>\n<\/ul>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/oracle\/u01\/app\/dbvisit\/standby\/conf\/ [DBVPDB] pwd\n\/oracle\/u01\/app\/dbvisit\/standby\/conf\n\noracle@DBVP:\/u01\/app\/dbvisit\/standby\/conf\/ [DBVPDB] egrep 'DMN_DBVISIT_INTERVAL|DMN_MONITOR_INTERVAL' dbv_DBVPDB_SITE1.env\n# DMN_DBVISIT_INTERVAL\u00a0\u00a0\u00a0\u00a0 - interval in sec for dbvisit schedule on source\n# DMN_MONITOR_INTERVAL\u00a0\u00a0\u00a0\u00a0 - interval in sec for log monitor schedule on source\n# DMN_DBVISIT_INTERVAL_DR\u00a0 - interval in sec for dbvisit schedule on destination\n# DMN_MONITOR_INTERVAL_DR\u00a0 - interval in sec for log monitor schedule on destination\nDMN_DBVISIT_INTERVAL = 300\nDMN_MONITOR_INTERVAL = 60\nDMN_DBVISIT_INTERVAL_DR = 300\nDMN_MONITOR_INTERVAL_DR = 60<\/pre>\n<p>&nbsp;<\/p>\n<p>The LOGSWITCH parameter determines if a database log switch (alter system switch logfile) should be trigger at Dbvisit execution.<br \/>\nN (default value) : Only if there are no new archive logs to transfer.<br \/>\nY : At every execution, independently of the archive log creation.<br \/>\nI(Ignore) : Never. To be use with caution.<\/p>\n<pre>A daemon restart is mandatory post DDC configuration file updates.<\/pre>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[root@DBVP ~]# service dbvlogdaemon stop\nRedirecting to \/bin\/systemctl stop dbvlogdaemon.service\n[root@DBVP ~]# service dbvlogdaemon start\nRedirecting to \/bin\/systemctl start dbvlogdaemon.service\n\n[root@DBVS ~]# service dbvlogdaemon stop\nRedirecting to \/bin\/systemctl stop dbvlogdaemon.service\n[root@DBVS ~]# service dbvlogdaemon start\nRedirecting to \/bin\/systemctl start dbvlogdaemon.service<\/pre>\n<p>&nbsp;<\/p>\n<h3>Send and apply archive log demo<\/h3>\n<pre>Get current date and primary current sequence.<\/pre>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select sysdate from dual;\n\nSYSDATE\n-------------------\n2018\/03\/28 12:30:50\n\nSQL&gt; select max(sequence#) from v$log;\n\nMAX(SEQUENCE#)\n--------------\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 179<\/pre>\n<pre><\/pre>\n<pre>Generate a Dbvisit gap report.<\/pre>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/conf\/ [DBVPDB] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.16_0_g4e0697e2) (pid 21393)\ndbvctl started on DBVP: Wed Mar 28 12:30:57 2018\n=============================================================\n\nDbvisit Standby log gap report for DBVPDB_SITE1 thread 1 at 201803281230:\n-------------------------------------------------------------\nDestination database on DBVS is at sequence: 178.\nSource database on DBVP is at log sequence: 179.\nSource database on DBVP is at archived log sequence: 178.\nDbvisit Standby last transfer log sequence: 178.\nDbvisit Standby last transfer at: 2018-03-28 12:29:14.\n\nArchive log gap for thread 1:\u00a0 0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:01:27.\n\n\n=============================================================\ndbvctl ended on DBVP: Wed Mar 28 12:31:06 2018\n=============================================================<\/pre>\n<p>No archive log needs to be send and apply on the standby. Both databases are in sync.<\/p>\n<pre><\/pre>\n<pre>Generate logfile switch<\/pre>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; alter system switch logfile;\n\nSystem altered.\n\nSQL&gt; alter system switch logfile;\n\nSystem altered.\n\nSQL&gt; alter system switch logfile;\n\nSystem altered.<\/pre>\n<pre><\/pre>\n<pre>Check current date and primary database current sequence.<\/pre>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select sysdate from dual;\n\nSYSDATE\n-------------------\n2018\/03\/28 12:31:29\n\nSQL&gt; select max(sequence#) from v$log;\n\nMAX(SEQUENCE#)\n--------------\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 182<\/pre>\n<pre><\/pre>\n<pre>Generate new Dbvisit gap reports.<\/pre>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/conf\/ [DBVPDB] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.16_0_g4e0697e2) (pid 21454)\ndbvctl started on DBVP: Wed Mar 28 12:31:38 2018\n=============================================================\n\nDbvisit Standby log gap report for DBVPDB_SITE1 thread 1 at 201803281231:\n-------------------------------------------------------------\nDestination database on DBVS is at sequence: 178.\nSource database on DBVP is at log sequence: 182.\nSource database on DBVP is at archived log sequence: 181.\nDbvisit Standby last transfer log sequence: 178.\nDbvisit Standby last transfer at: 2018-03-28 12:29:14.\n\nArchive log gap for thread 1:\u00a0 3.\nTransfer log gap for thread 1: 3.\nStandby database time lag (DAYS-HH:MI:SS): +00:02:27.\n\n\n=============================================================\ndbvctl ended on DBVP: Wed Mar 28 12:31:47 2018\n=============================================================<\/pre>\n<pre>We can see that we have 3 new archive logs to transfer and to apply on the standby.\nThere is a 3 sequences lag between both databases.\n\n<\/pre>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/conf\/ [DBVPDB] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.16_0_g4e0697e2) (pid 21571)\ndbvctl started on DBVP: Wed Mar 28 12:32:19 2018\n=============================================================\nDbvisit Standby log gap report for DBVPDB_SITE1 thread 1 at 201803281232:\n-------------------------------------------------------------\nDestination database on DBVS is at sequence: 178.\nSource database on DBVP is at log sequence: 182.\nSource database on DBVP is at archived log sequence: 181.\nDbvisit Standby last transfer log sequence: 181.\nDbvisit Standby last transfer at: 2018-03-28 12:32:13.\nArchive log gap for thread 1:\u00a0 3.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:02:27.\n=============================================================\ndbvctl ended on DBVP: Wed Mar 28 12:32:27 2018\n=============================================================<\/pre>\n<pre>3 archive logs has been automatically transferred by the daemon to the standby in the next minute.\n\n<\/pre>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">oracle@DBVP:\/u01\/app\/dbvisit\/standby\/conf\/ [DBVPDB] \/u01\/app\/dbvisit\/standby\/dbvctl -d DBVPDB_SITE1 -i\n=============================================================\nDbvisit Standby Database Technology (8.0.16_0_g4e0697e2) (pid 21679)\ndbvctl started on DBVP: Wed Mar 28 12:33:00 2018\n=============================================================\n\nDbvisit Standby log gap report for DBVPDB_SITE1 thread 1 at 201803281233:\n-------------------------------------------------------------\nDestination database on DBVS is at sequence: 181.\nSource database on DBVP is at log sequence: 182.\nSource database on DBVP is at archived log sequence: 181.\nDbvisit Standby last transfer log sequence: 181.\nDbvisit Standby last transfer at: 2018-03-28 12:32:13.\n\nArchive log gap for thread 1:\u00a0 0.\nTransfer log gap for thread 1: 0.\nStandby database time lag (DAYS-HH:MI:SS): +00:01:13.\n\n\n=============================================================\ndbvctl ended on DBVP: Wed Mar 28 12:33:09 2018\n=============================================================<\/pre>\n<p>Another minute later the standby daemon applied the new archive logs. Both databases are on sync.<\/p>\n<p>&nbsp;<\/p>\n<h3>Conclusion<\/h3>\n<p>Dbvisit new daemon feature is adding real flexibility in sending and applying archive logs, and help improving customer RPO and RTO. We still might want to keep a daily crontab gap report with email to be sent to a DBA team. This will ensure to monitor daemon keep alive.<\/p>\n<p>Logswitch and sending archive logs to standby consumes real system resource. Dbvisit daemon will also help fine tuning the use of the resource.<\/p>\n<p>Note that the daemon processes must be restarted after each daylight saving clock change, and stopped during graceful switchover.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dbvisit Standby version 8 comes with a nice feature, a daemon, which gives the benefit to send and apply the archive log automatically in the background. Bypassing the system scheduling, the daemon will facilitate customer RPO (Recovery Point Objective) and RTO (Recovery Time Objective) fine tuning. Monitoring to apply logs to the Standby only when [&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":[280,23,84,96],"type_dbi":[],"class_list":["post-11049","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-oracle","tag-database","tag-dba","tag-high-availability","tag-oracle"],"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>Dbvisit Standby Archive Log Daemon - dbi Blog<\/title>\n<meta name=\"description\" content=\"This blog describe the implementation and the benefit of the Dbvisit Standby Archive Log Daemon.\" \/>\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\/dbvisit-standby-archive-log-daemon\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dbvisit Standby Archive Log Daemon\" \/>\n<meta property=\"og:description\" content=\"This blog describe the implementation and the benefit of the Dbvisit Standby Archive Log Daemon.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-09T10:27:25+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=\"11 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\/dbvisit-standby-archive-log-daemon\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/\"},\"author\":{\"name\":\"Marc Wagner\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"headline\":\"Dbvisit Standby Archive Log Daemon\",\"datePublished\":\"2018-04-09T10:27:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/\"},\"wordCount\":477,\"commentCount\":0,\"keywords\":[\"database\",\"DBA\",\"High availability\",\"Oracle\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/\",\"name\":\"Dbvisit Standby Archive Log Daemon - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2018-04-09T10:27:25+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"description\":\"This blog describe the implementation and the benefit of the Dbvisit Standby Archive Log Daemon.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dbvisit Standby Archive Log Daemon\"}]},{\"@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":"Dbvisit Standby Archive Log Daemon - dbi Blog","description":"This blog describe the implementation and the benefit of the Dbvisit Standby Archive Log Daemon.","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\/dbvisit-standby-archive-log-daemon\/","og_locale":"en_US","og_type":"article","og_title":"Dbvisit Standby Archive Log Daemon","og_description":"This blog describe the implementation and the benefit of the Dbvisit Standby Archive Log Daemon.","og_url":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/","og_site_name":"dbi Blog","article_published_time":"2018-04-09T10:27:25+00:00","author":"Marc Wagner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Wagner","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/"},"author":{"name":"Marc Wagner","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"headline":"Dbvisit Standby Archive Log Daemon","datePublished":"2018-04-09T10:27:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/"},"wordCount":477,"commentCount":0,"keywords":["database","DBA","High availability","Oracle"],"articleSection":["Database Administration &amp; Monitoring","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/","url":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/","name":"Dbvisit Standby Archive Log Daemon - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2018-04-09T10:27:25+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"description":"This blog describe the implementation and the benefit of the Dbvisit Standby Archive Log Daemon.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/dbvisit-standby-archive-log-daemon\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Dbvisit Standby Archive Log Daemon"}]},{"@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\/11049","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=11049"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11049\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11049"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}