I recently blog on Oracle SEHA on ODA, see my article https://www.dbi-services.com/blog/seha-on-oda/. Oracle SEHA is used for High Availability for Standard Edition. Dbvisit Standby is a Disaster Recovery well known application designed for Oracle Standard Edition. Dbvisit guarantees database continuity, and will reduce RTO and RPO. With Dbvisit we will limit business impact in case of failure like hardware, operating system or human failure by activating a standby database. With Dbvisit we can also reduce the downtime linked to maintenance on the system. But what about combining both Oracle SEHA and Dbvisit?

Test environment

For my test I’m using :

  • an ODA X5-2-HA with 2 nodes dbioda02 and dbioda03
  • an ODA X8-2M with node named dbi-oda-x8

The privileged nodes for primary would be the ODA X5-2-HA so we can take advantage of Oracle SEHA. The test would be then to simulate a configuration where the primary database is usually running on a 2 nodes cluster and the standby database running on a single node. We accept to be in a lighter configuration on standby side knowing this one is less sought, and the standby node will less be activated as primary. We have some customer using such configuration with EE having a Data Guard configuration with a primary on RAC and a standby with single instance. Of course recall that Oracle SEHA is not as RAC. With Oracle SEHA we will only have one instance connected to the database at the same time compared to RAC on Enterprise Edition where you can have multiple instances.

I’m going to install Dbvcontrol on dbi-oda-x8 node.

Primary database

I have my primary database already created on the ODA X5-2-HA.

[root@dbioda02 ~]# odacli describe-database -i bed8b9fb-214a-423e-b0e8-d8c084b45dd1
Database details
----------------------------------------------------------------
                     ID: bed8b9fb-214a-423e-b0e8-d8c084b45dd1
            Description: DBISEHA
                DB Name: DBISEHA
             DB Version: 19.15.0.0.220419
                DB Type: SI
                DB Role: PRIMARY
    DB Target Node Name: dbioda03
             DB Edition: SE
                   DBID: 1535732728
 Instance Only Database: false
                    CDB: false
               PDB Name:
    PDB Admin User Name:
      High Availability: true
                  Class: OLTP
                  Shape: odb1
                Storage: ASM
          DB Redundancy:
           CharacterSet: AL32UTF8
  National CharacterSet: AL16UTF16
               Language: AMERICAN
              Territory: AMERICA
                Home ID: 5b0b3769-0c05-435e-b7c8-5d295c05934c
        Console Enabled: false
  TDE Wallet Management:
            TDE Enabled: false
     Level 0 Backup Day: Sunday
     AutoBackup Enabled: false
                Created: January 27, 2023 9:41:13 AM CET
         DB Domain Name: dbi-lab.ch
    Associated Networks: Public-network
          CPU Pool Name:

Dbvisit StandbyMP current limitation with Oracle SEHA

It is important to understand that today last version of Dbvisit standbyMP (11.2.1) can only support Oracle SEHA if all database instances are running on the same nodes of the local cluster. That is to say that Dbvisit doesn’t support configuration where it needs to handle in mean time instances on both nodes. This is due to the fact that Dbvisit StandbyMP can be active only on one of the SEHA cluster nodes, not on both. This is quite annoying because you can not take all resources possibilities, but I’m sure that this limitation will be solved in a near future. Let’s keep an eye on it. This is due to the fact that Dbvisit will be using a VIP that will be started on one of the cluster node which will have all instances running. Of course, this doesn’t concern the databases that are not part of Dbvisit configuration.

Dbvisit StandbyMP prerequisites

To use Dbvisit StandbyMP with Oracle SEHA, there is a few prerequisites that are needed.

Additional VIP

Additional VIP is needed. This VIP should be different from existing cluster VIP addresses

I’m going to create a new VIP named dbvisitvippri with IP address 10.36.0.246 using root user on the node 0, dbioda02, from my primary cluster.

First I’m going to set the environment for root user:

[root@dbioda02 ~]# id
uid=0(root) gid=0(root) groups=0(root)

[root@dbioda02 ~]# . oraenv
ORACLE_SID = [root] ? +ASM1
ORACLE_HOME = [/home/oracle] ? /u01/app/19.15.0.0/grid
The Oracle base has been changed from /home/oracle to /u01/app/grid

Then I’m going to check existing network:

[root@dbioda02 ~]# srvctl config network
Network 1 exists
Subnet IPv4: 10.36.0.0/255.255.255.0/pubnet, static
Subnet IPv6:
Ping Targets:
Network is enabled
Network is individually enabled on nodes:
Network is individually disabled on nodes:

Thus I’m going to create the application VIP on network 1:

[root@dbioda02 ~]# appvipcfg create -network=1 -ip=10.36.0.246 -vipname=dbvisitvippri -user=root
Using configuration parameter file: /u01/app/19.15.0.0/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/grid/crsdata/dbioda02/scripts/appvipcfg.log

And give the appropriate permission for oracle and grid user. I’m using role separation on my SEHA ODA cluster, thus needs to give permissions to both oracle and grid user.

[root@dbioda02 ~]# crsctl setperm resource dbvisitvippri -u user:oracle:r-x
[root@dbioda02 ~]# crsctl setperm resource dbvisitvippri -u user:grid:r-x

I’m checking and can see that the VIP is for the moment not started on my node:

[root@dbioda02 ~]# ip addr sh | grep 10.36.0.246
[root@dbioda02 ~]#

Let’s start it on the node 0 from my ODA X5-2-HA:

[root@dbioda02 ~]# crsctl start resource dbvisitvippri -n dbioda02
CRS-2672: Attempting to start 'dbvisitvippri' on 'dbioda02'
CRS-2676: Start of 'dbvisitvippri' on 'dbioda02' succeeded

And we can check that the IP is now attached to my node.

[root@dbioda02 ~]# ip addr sh | grep 10.36.0.246
    inet 10.36.0.246/24 brd 10.36.0.255 scope global secondary pubnet:2
    
[root@dbioda02 ~]# ip addr sh pubnet
14: pubnet:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:10:e0:94:c2:ac brd ff:ff:ff:ff:ff:ff
    inet 10.36.0.232/24 brd 10.36.0.255 scope global pubnet
       valid_lft forever preferred_lft forever
    inet 10.36.0.239/24 brd 10.36.0.255 scope global secondary pubnet:1
       valid_lft forever preferred_lft forever
    inet 10.36.0.236/24 brd 10.36.0.255 scope global secondary pubnet:3
       valid_lft forever preferred_lft forever
    inet 10.36.0.246/24 brd 10.36.0.255 scope global secondary pubnet:2
       valid_lft forever preferred_lft forever
[root@dbioda02 ~]#

Let’s try to log on using the VIP:

maw@DBI-LT-MAW2 ~ % ssh [email protected]
The authenticity of host '10.36.0.246 (10.36.0.246)' can't be established.
ECDSA key fingerprint is SHA256:eJyu/pxpVmMVRScZBVX5uvvnsN2ARhDdRAK3aLRKln4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.36.0.246' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last failed login: Wed Feb  8 11:31:39 CET 2023 from gateway on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Feb  8 11:29:09 2023


      Welcome on dbioda02, please select the environment:

              *** Environments menu ***
         - ODA environment - default -
         - DMK environment - start command: dbi -


[oracle@dbioda02 ~]$

Let’s try to relocate the VIP on node 1 and check that the new VIP IP is effectively started on node 1:

[root@dbioda02 ~]# ip addr sh | grep 10.36.0.246
    inet 10.36.0.246/24 brd 10.36.0.255 scope global secondary pubnet:2

[root@dbioda03 ~]$ ip addr sh | grep 10.36.0.246
[root@dbioda03 ~]$

[root@dbioda02 ~]# crsctl relocate resource dbvisitvippri -f
CRS-2673: Attempting to stop 'dbvisitvippri' on 'dbioda02'
CRS-2677: Stop of 'dbvisitvippri' on 'dbioda02' succeeded
CRS-2672: Attempting to start 'dbvisitvippri' on 'dbioda03'
CRS-2676: Start of 'dbvisitvippri' on 'dbioda03' succeeded

[root@dbioda02 ~]# ip addr sh | grep 10.36.0.246
[root@dbioda02 ~]#

[root@dbioda03 ~]$ ip addr sh | grep 10.36.0.246
    inet 10.36.0.246/24 brd 10.36.0.255 scope global secondary pubnet:3

Let’s relocate it after the test on node 0 from the cluster:

[root@dbioda02 ~]# crsctl relocate resource dbvisitvippri -f
CRS-2673: Attempting to stop 'dbvisitvippri' on 'dbioda03'
CRS-2677: Stop of 'dbvisitvippri' on 'dbioda03' succeeded
CRS-2672: Attempting to start 'dbvisitvippri' on 'dbioda02'
CRS-2676: Start of 'dbvisitvippri' on 'dbioda02' succeeded

Shared file system for dbvisit software

I’m going to create an ACFS File System for dbvisit software that will be mounted as /u01/app/dbvisit for oracle user. This ACFS file system is of course accessible from my both cluster nodes.

[grid@dbioda02 ~]$ asmcmd

ASMCMD> lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB   Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  NORMAL  N         512             512   4096  4194304  96018432  94185196          6001152        44092022              0             Y  DATA/
MOUNTED  NORMAL  N         512             512   4096  4194304   1525760   1520096           381440          569328              0             N  FLASH/
MOUNTED  NORMAL  N         512             512   4096  4194304  23998464  23904256          1499904        11202176              0             N  RECO/
MOUNTED  HIGH    N         512             512   4096  4194304    762880    740428           190720          183236              0             N  REDO/

ASMCMD> volcreate -G RECO -s 100G DBVISIT

ASMCMD> volinfo -G RECO -a
Diskgroup Name: RECO

	 Volume Name: DBVISIT
	 Volume Device: /dev/asm/dbvisit-269
	 State: ENABLED
	 Size (MB): 102400
	 Resize Unit (MB): 64
	 Redundancy: MIRROR
	 Stripe Columns: 8
	 Stripe Width (K): 1024
	 Usage:
	 Mountpath:

[root@dbioda02 ~]# mkfs.acfs /dev/asm/dbvisit-269
mkfs.acfs: version                   = 19.0.0.0.0
mkfs.acfs: on-disk version           = 46.0
mkfs.acfs: volume                    = /dev/asm/dbvisit-269
mkfs.acfs: volume size               = 107374182400  ( 100.00 GB )
mkfs.acfs: Format complete.

[root@dbioda02 ~]# mkdir -p /u01/app/dbvisit

[root@dbioda02 ~]# cd /u01/app/19.15.0.0/grid/bin/

[root@dbioda02 bin]# ./srvctl add filesystem -volume DBVISIT -diskgroup RECO -path /u01/app/dbvisit -fstype ACFS -autostart ALWAYS -mountowner oracle

[root@dbioda02 bin]# ./srvctl start filesystem -device /dev/asm/dbvisit-269

[root@dbioda02 bin]# df -h /u01/app/dbvisit
Filesystem            Size  Used Avail Use% Mounted on
/dev/asm/dbvisit-269  100G  816M  100G   1% /u01/app/dbvisit

Verify that Oracle SEHA is activated for the primary database

Of course Oracle SEHA needs to be activated on the primary database.

This can be confirmed with odacli:

[root@dbioda02 bin]# odacli describe-database -i bed8b9fb-214a-423e-b0e8-d8c084b45dd1 | grep -i Availability
      High Availability: true

And with srvctl as well:

oracle@dbioda02:/home/oracle/ [DBISEHA] srvctl config database -d DBISEHA | grep -i nodes
Configured nodes: dbioda03,dbioda02

oratab configuration

Dbvisit needs +ASM entries in respective /etc/oratab file from all nodes. On ODA those entries are never added. I do not really like updating this file on an ODA, but without this entry the Dbvisit configuration can not be created for my ASM database and is failing. So I have added respective entries for both primary nodes and standby nodes:

[oracle@dbioda02 ~]$ grep -i +asm /etc/oratab
+ASM1:/u01/app/19.15.0.0/grid:N

[oracle@dbioda03 ~]$ grep -i +asm /etc/oratab
+ASM2:/u01/app/19.15.0.0/grid:N

[oracle@dbi-oda-x8 ~]$ grep -i +asm /etc/oratab
+ASM1:/u01/app/19.17.0.0/grid:N

/etc/hosts

Knowing that my new VIP is not configured on the DNS, I have added it to the 3 nodes dbioda02, dbioda03, and dbi-oda-x8 (2 nodes for primary and one node for standby) /etc/hosts file:

[root@dbioda02 bin]# grep dbvisitvippri /etc/hosts
10.36.0.246 dbvisitvippri

And have added standby node to the /etc/hosts file from both primary nodes dbioda02 and dbioda03:

[root@dbioda02 bin]# grep dbi-oda-x8 /etc/hosts
10.36.0.241 dbi-oda-x8

Installing Dbvisit software on primary

I downloaded last package version dbvisit-standbymp11.2.1-linux.zip which I extracted on dbioda02 in the folder /home/oracle/software.

[oracle@dbioda02 software]$ unzip -q dbvisit-standbymp11.2.1-linux.zip

[oracle@dbioda02 software]$ tar -xf Dbvisit\ StandbyMP\ v11.2.1\ -\ Linux.tar.gz

I then installed Dbvisit software from dbioda02 running install-agent-v11.2.1 and providing following parameter:

  • The ACFS file system /u01/app/dbvisit as DBVISIT_BASE
  • Agent file transfer port to be 7890
  • The primary VIP dbvisitvippri for the host name
  • The standby node dbi-oda-x8 for the host hosting the Control Center
  • The Agent Communications Port to be 5533
  • A passphrase
[oracle@dbioda02 software]$ ./install-agent-v11.2.1
+----------------------------------------------------------------------+
|          ____  _                  _ _           __  __ ____          |
|         / ___|| |_ __ _ _ __   __| | |__  _   _|  \/  |  _ \         |
|         \___ \| __/ _' | '_ \ / _' | '_ \| | | | |\/| | |_) |        |
|          ___) | || (_| | | | | (_| | |_) | |_| | |  | |  __/         |
|         |____/ \__\__,_|_| |_|\__,_|_.__/ \__, |_|  |_|_|            |
|          Copyright 2022                   |___/   By Dbvisit         |
+----------------------------------------------------------------------+

Welcome to Dbvisit StandbyMP setup version v11.2.1.

? Please carefully read the end-user license agreement at https://dbvisit.com/eula. Do you agree to the terms of this agreement? Yes
? Which directory should the software be installed into? /u01/app/dbvisit

- - - You are now configuring the Dbvisit StandbyMP Agent - - -

The Agent will listen on the following discovered addresses:
 -  127.0.0.1
 -  192.168.16.24
 -  192.168.122.1
 -  10.36.0.232
 -  10.36.0.239
 -  10.36.0.236
 -  10.36.0.246
? Agent File Transfer Port: 7890
? Fully Qualified Domain Name for this host: dbvisitvippri
? Fully Qualified Domain Name for the Control Center: dbi-oda-x8
? Agent Communications Port: 5533
Each Dbvisit StandbyMP Agent and the Dbvisit StandbyMP Control Center must
be configured with the same passphrase. This is how we know that they are all
intended to be part of the same system. Please specify a strong passphrase - we
suggest at least 12 characters, containing at least 2 numbers and 2 symbols.
? Passphrase: ***********
? Confirm Passphrase: ***********

- - - Dbvisit StandbyMP Agent configuration finished - - -


- - - Ready to perform installation - - -

? Do you wish to proceed with the setup using the supplied configuration options? Proceed with setup

- - - Performing installation - - -

Copying software files to '/u01/app/dbvisit'...
Writing Agent configuration file '/u01/app/dbvisit/standbymp/conf/dbvagentmanager.ini'...

- - - Installation successful! - - -


To enable the installed Dbvisit StandbyMP components to run as system services, you will need to execute some commands as the "root" user in order to complete the setup.

To install the system service(s), you can run, substituting the name of the user to run as if it is different from the current user:
	sudo /u01/app/dbvisit/standbymp/bin/dbvagentmanager service install --user oracle
To start the system service(s), you can run:
	sudo /u01/app/dbvisit/standbymp/bin/dbvagentmanager service start

- - - Configuration Summary - - -

Install Directory:                                  /u01/app/dbvisit
Fully Qualified Domain Name for this host:          dbvisitvippri
Fully Qualified Domain Name for the Control Center: dbi-oda-x8
Agent Communications Port:                          5533
Agent File Transfer Port:                           7890

- - - Installation Summary - - -

The following actions have been performed:
 -  Installed Dbvisit StandbyMP Agent software into: /u01/app/dbvisit/standbymp
 -  Agent settings are available in the configuration file: /u01/app/dbvisit/standbymp/conf/dbvagentmanager.ini
 -  Generated new security certificates in: /u01/app/dbvisit/standbymp/certificates

- - - INSTALLATION SUCCESSFUL - - -

[oracle@dbioda02 software]$

dbvagentmanager relocate script

We will setup a script so the dbvagentmanager process gets automatically started on the appropriate nodes when the VIP got relocated. Of course, in our configuration, we only need to implement that script on the primary side knowing only the primary database will have High Availability. We will get this script named dbvcrs.sh from dbvisit website : https://dbvisit.atlassian.net/wiki/spaces/DSMP/pages/3500081153/Oracle+SEHA+and+RAC

I copied the script in the binary directory of Dbvisit StandbyMP:

maw@DBI-LT-MAW2 Downloads % scp dbvcrs.sh [email protected]:/u01/app/dbvisit/standbymp/bin/
[email protected]'s password:
dbvcrs.sh                                                                                                                                                                                                                   100% 1882    28.4KB/s   00:00

I gave appropriate permissions to the script:

[oracle@dbioda02 bin]$ chmod +x dbvcrs.sh                                                                                                                                                                                                                100% 1882    28.4KB/s   00:00

I tested the script. The script should provide following outputs:

[oracle@dbioda02 bin]$ ps -ef | grep [d]bv
[oracle@dbioda02 bin]$ 

[oracle@dbioda02 bin]$ ./dbvcrs.sh start dbvagentmanager
Starting Dbvisit dbvagentmanager
Submitted check for dbvagentmanager with result running correctly, return 0

[oracle@dbioda02 bin]$ ps -ef | grep [d]bv
oracle   21816     1  0 13:55 pts/0    00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run

[oracle@dbioda02 bin]$ ./dbvcrs.sh check dbvagentmanager
Submitted check for dbvagentmanager with result running correctly, return 0

[oracle@dbioda02 bin]$ ./dbvcrs.sh stop dbvagentmanager

[oracle@dbioda02 bin]$ ps -ef | grep [d]bv
[oracle@dbioda02 bin]$ 

[oracle@dbioda02 bin]$ ./dbvcrs.sh check dbvagentmanager
Submitted check for dbvagentmanager with result not running correctly, return 1

[oracle@dbioda02 bin]$ ./dbvcrs.sh start dbvagentmanager
Starting Dbvisit dbvagentmanager
Submitted check for dbvagentmanager with result running correctly, return 0

[oracle@dbioda02 bin]$ ps -ef | grep [d]bv
oracle   22990     1  1 13:55 pts/0    00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run

[oracle@dbioda02 bin]$ ./dbvcrs.sh clean dbvagentmanager

[oracle@dbioda02 bin]$ ps -ef | grep [d]bv
[oracle@dbioda02 bin]$ 

[oracle@dbioda02 bin]$ ./dbvcrs.sh check dbvagentmanager
Submitted check for dbvagentmanager with result not running correctly, return 1

As root I will now create resource for dbvagentmanager:

[root@dbioda02 ~]# . oraenv
ORACLE_SID = [+ASM1] ?
ORACLE_HOME = [/home/oracle] ? /u01/app/19.15.0.0/grid
The Oracle base remains unchanged with value /u01/app/grid

[root@dbioda02 ~]# crsctl add resource dbvagentmanager -type generic_application -attr "START_PROGRAM='/u01/app/dbvisit/standbymp/bin/dbvcrs.sh start dbvagentmanager',STOP_PROGRAM='/u01/app/dbvisit/standbymp/bin/dbvcrs.sh stop dbvagentmanager',CHECK_PROGRAMS='/u01/app/dbvisit/standbymp/bin/dbvcrs.sh check dbvagentmanager',CLEAN_PROGRAM='/u01/app/dbvisit/standbymp/bin/dbvcrs.sh clean dbvagentmanager', CHECK_INTERVAL=10,START_DEPENDENCIES='hard(dbvisitvippri) pullup(dbvisitvippri)',STOP_DEPENDENCIES='hard(dbvisitvippri)',ACL='owner:oracle:rwx,pgrp:oinstall:rwx,other::r--',PLACEMENT='favored',HOSTING_MEMBERS='dbioda02 dbioda03'"

With oracle user I’m now testing if the resource can be started:

[oracle@dbioda02 ~]$ . oraenv
ORACLE_SID = [oracle] ? +ASM1
ORACLE_HOME = [/home/oracle] ? /u01/app/19.15.0.0/grid
The Oracle base has been set to /u01/app/grid

[oracle@dbioda02 ~]$ ps -ef | grep [d]bv
[oracle@dbioda02 ~]$ crsctl start resource dbvagentmanager
CRS-2672: Attempting to start 'dbvagentmanager' on 'dbioda02'
CRS-2676: Start of 'dbvagentmanager' on 'dbioda02' succeeded

[oracle@dbioda02 ~]$ ps -ef | grep [d]bv
oracle   97351     1  3 14:43 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run

We will now test that with the relocation of the VIP the dbvagentmanager process is accordingly started on the respective mode:

[oracle@dbioda02 ~]$ ps -ef | grep [d]bv
oracle   97351     1  0 14:43 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run

[root@dbioda03 ~]# ps -ef | grep [d]bv
[root@dbioda03 ~]#

[oracle@dbioda02 ~]$ crsctl relocate resource dbvisitvippri -f
CRS-2673: Attempting to stop 'dbvagentmanager' on 'dbioda02'
CRS-2677: Stop of 'dbvagentmanager' on 'dbioda02' succeeded
CRS-2673: Attempting to stop 'dbvisitvippri' on 'dbioda02'
CRS-2677: Stop of 'dbvisitvippri' on 'dbioda02' succeeded
CRS-2672: Attempting to start 'dbvisitvippri' on 'dbioda03'
CRS-2676: Start of 'dbvisitvippri' on 'dbioda03' succeeded
CRS-2672: Attempting to start 'dbvagentmanager' on 'dbioda03'
CRS-2676: Start of 'dbvagentmanager' on 'dbioda03' succeeded

[oracle@dbioda02 ~]$ ps -ef | grep [d]bv
[oracle@dbioda02 ~]$

[root@dbioda03 ~]# ps -ef | grep [d]bv
oracle   42877     1  0 14:48 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run

As we can see, with the relocation of the VIP, the dbvagentmanager process got automatically started on the respective mode.

I relocated the VIP on the node 0:

[oracle@dbioda02 ~]$ crsctl relocate resource dbvisitvippri -f
CRS-2673: Attempting to stop 'dbvagentmanager' on 'dbioda03'
CRS-2677: Stop of 'dbvagentmanager' on 'dbioda03' succeeded
CRS-2673: Attempting to stop 'dbvisitvippri' on 'dbioda03'
CRS-2677: Stop of 'dbvisitvippri' on 'dbioda03' succeeded
CRS-2672: Attempting to start 'dbvisitvippri' on 'dbioda02'
CRS-2676: Start of 'dbvisitvippri' on 'dbioda02' succeeded
CRS-2672: Attempting to start 'dbvagentmanager' on 'dbioda02'
CRS-2676: Start of 'dbvagentmanager' on 'dbioda02' succeeded

Installing Dbvisit software on standby

Here we will run a normal installation, knowing we only have one ODA Node.

Create DBVISIT_BASE directory:

[root@dbi-oda-x8 ~]# mkdir /u01/app/dbvisit

[root@dbi-oda-x8 ~]# chown oracle:oinstall /u01/app/dbvisit

I installed the agent on the standby side

I then installed Dbvisit software from dbioda02 running install-agent-v11.2.1 providing following parameter:

  • /u01/app/dbvisit as DBVISIT_BASE
  • Agent file transfer port to be 7890
  • The node name dbi-oda-x8
  • The standby node dbi-oda-x8 for the host hosting the Control Center
  • The Agent Communications Port to be 5533
  • A passphrase
[oracle@dbi-oda-x8 software]$ ./install-agent-v11.2.1
+----------------------------------------------------------------------+
|          ____  _                  _ _           __  __ ____          |
|         / ___|| |_ __ _ _ __   __| | |__  _   _|  \/  |  _ \         |
|         \___ \| __/ _' | '_ \ / _' | '_ \| | | | |\/| | |_) |        |
|          ___) | || (_| | | | | (_| | |_) | |_| | |  | |  __/         |
|         |____/ \__\__,_|_| |_|\__,_|_.__/ \__, |_|  |_|_|            |
|          Copyright 2022                   |___/   By Dbvisit         |
+----------------------------------------------------------------------+
Welcome to Dbvisit StandbyMP setup version v11.2.1.
? Please carefully read the end-user license agreement at https://dbvisit.com/eula. Do you agree to the terms of this agreement? Yes
? Which directory should the software be installed into? /u01/app/dbvisit
- - - You are now configuring the Dbvisit StandbyMP Agent - - -
The Agent will listen on the following discovered addresses:
 -  127.0.0.1
 -  192.168.16.24
 -  10.36.0.241
 -  192.168.17.2
? Agent File Transfer Port: 7890
? Fully Qualified Domain Name for this host: dbi-oda-x8.dbi-lab.ch
? Fully Qualified Domain Name for the Control Center: dbi-oda-x8.dbi-lab.ch
? Agent Communications Port: 5533
Each Dbvisit StandbyMP Agent and the Dbvisit StandbyMP Control Center must
be configured with the same passphrase. This is how we know that they are all
intended to be part of the same system. Please specify a strong passphrase - we
suggest at least 12 characters, containing at least 2 numbers and 2 symbols.
? Passphrase: ***********
? Confirm Passphrase: ***********
- - - Dbvisit StandbyMP Agent configuration finished - - -
- - - Ready to perform installation - - -
? Do you wish to proceed with the setup using the supplied configuration options? Proceed with setup
- - - Performing installation - - -
Copying software files to '/u01/app/dbvisit'...
Writing Agent configuration file '/u01/app/dbvisit/standbymp/conf/dbvagentmanager.ini'...
- - - Installation successful! - - -
To enable the installed Dbvisit StandbyMP components to run as system services, you will need to execute some commands as the "root" user in order to complete the setup.
To install the system service(s), you can run, substituting the name of the user to run as if it is different from the current user:
	sudo /u01/app/dbvisit/standbymp/bin/dbvagentmanager service install --user oracle
To start the system service(s), you can run:
	sudo /u01/app/dbvisit/standbymp/bin/dbvagentmanager service start
- - - Configuration Summary - - -
Install Directory:                                  /u01/app/dbvisit
Fully Qualified Domain Name for this host:          dbi-oda-x8.dbi-lab.ch
Fully Qualified Domain Name for the Control Center: dbi-oda-x8.dbi-lab.ch
Agent Communications Port:                          5533
Agent File Transfer Port:                           7890
- - - Installation Summary - - -
The following actions have been performed:
 -  Installed Dbvisit StandbyMP Agent software into: /u01/app/dbvisit/standbymp
 -  Agent settings are available in the configuration file: /u01/app/dbvisit/standbymp/conf/dbvagentmanager.ini
 -  Generated new security certificates in: /u01/app/dbvisit/standbymp/certificates
- - - INSTALLATION SUCCESSFUL - - -

Install and start dbvagentmanager service:

[root@dbi-oda-x8 ~]# /u01/app/dbvisit/standbymp/bin/dbvagentmanager service install --user oracle

[root@dbi-oda-x8 ~]# service dbvagentmanager status
Redirecting to /bin/systemctl status dbvagentmanager.service
● dbvagentmanager.service - The Dbvisit StandbyMP Agent provides connectivity to databases on this computer. This Agent is used & managed by the Dbvisit StandbyMP Control Center.
   Loaded: loaded (/etc/systemd/system/dbvagentmanager.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

[root@dbi-oda-x8 ~]# service dbvagentmanager start
Redirecting to /bin/systemctl start dbvagentmanager.service

[root@dbi-oda-x8 ~]# service dbvagentmanager status
Redirecting to /bin/systemctl status dbvagentmanager.service
● dbvagentmanager.service - The Dbvisit StandbyMP Agent provides connectivity to databases on this computer. This Agent is used & managed by the Dbvisit StandbyMP Control Center.
   Loaded: loaded (/etc/systemd/system/dbvagentmanager.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-02-08 15:23:45 CET; 1s ago
 Main PID: 2077 (dbvagentmanager)
    Tasks: 13
   Memory: 26.7M
   CGroup: /system.slice/dbvagentmanager.service
           └─2077 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run
Feb 08 15:23:45 dbi-oda-x8 systemd[1]: Started The Dbvisit StandbyMP Agent provides connectivity to databases on this computer. This Agent is used & managed by the Dbvisit StandbyMP Control Center..
Feb 08 15:23:45 dbi-oda-x8 dbvagentmanager[2077]: Changing to directory '/u01/app/dbvisit/standbymp'
Feb 08 15:23:45 dbi-oda-x8 dbvagentmanager[2077]: Using log directory '/u01/app/dbvisit/standbymp/log'
Feb 08 15:23:45 dbi-oda-x8 dbvagentmanager[2077]: Setting database directory to '/u01/app/dbvisit/standbymp/db'
Feb 08 15:23:45 dbi-oda-x8 dbvagentmanager[2077]: Starting service *agentmanagersvc.agentManagerService

[root@dbi-oda-x8 ~]# ps -ef | grep [d]bv
oracle    2077     1  0 15:23 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run

Install Dbvisit StandbyMP Control Center

I installed the Dbvisit StandbyMP Control Center on the standby node dbi-oda-x8 providing :

  • /u01/app/dbvisit as DBVISIT_BASE
  • Control Center Web Server Port to be 4433
  • Agen Communications Port to be 5533
  • A passphrase
[oracle@dbi-oda-x8 software]$ ./install-control-v11.2.1
+----------------------------------------------------------------------+
|          ____  _                  _ _           __  __ ____          |
|         / ___|| |_ __ _ _ __   __| | |__  _   _|  \/  |  _ \         |
|         \___ \| __/ _' | '_ \ / _' | '_ \| | | | |\/| | |_) |        |
|          ___) | || (_| | | | | (_| | |_) | |_| | |  | |  __/         |
|         |____/ \__\__,_|_| |_|\__,_|_.__/ \__, |_|  |_|_|            |
|          Copyright 2022                   |___/   By Dbvisit         |
+----------------------------------------------------------------------+
Welcome to Dbvisit StandbyMP setup version v11.2.1.
? Please carefully read the end-user license agreement at https://dbvisit.com/eula. Do you agree to the terms of this agreement? Yes
? Which directory should the software be installed into? /u01/app/dbvisit
- - - You are now configuring the Dbvisit StandbyMP Control Center - - -
The Control Center will listen on the following discovered addresses:
 -  127.0.0.1
 -  192.168.16.24
 -  10.36.0.241
 -  192.168.17.2
? Control Center Web Server Port: 4433
? Agent Communications Port: 5533
Each Dbvisit StandbyMP Agent and the Dbvisit StandbyMP Control Center must
be configured with the same passphrase. This is how we know that they are all
intended to be part of the same system. Please specify a strong passphrase - we
suggest at least 12 characters, containing at least 2 numbers and 2 symbols.
? Passphrase: ***********
? Confirm Passphrase: ***********
- - - Dbvisit StandbyMP Control Center configuration finished - - -
- - - Ready to perform installation - - -
? Do you wish to proceed with the setup using the supplied configuration options? Proceed with setup
- - - Performing installation - - -
Copying software files to '/u01/app/dbvisit'...
Writing Control Center configuration file '/u01/app/dbvisit/standbymp/conf/dbvcontrol.ini'...
- - - Installation successful! - - -
To enable the installed Dbvisit StandbyMP components to run as system services, you will need to execute some commands as the "root" user in order to complete the setup.
To install the system service(s), you can run, substituting the name of the user to run as if it is different from the current user:
	sudo /u01/app/dbvisit/standbymp/bin/dbvcontrol service install --user oracle
To start the system service(s), you can run:
	sudo /u01/app/dbvisit/standbymp/bin/dbvcontrol service start
- - - Configuration Summary - - -
Install Directory:              /u01/app/dbvisit
Control Center Web Server Port: 4433
Agent Communications Port:      5533
- - - Installation Summary - - -
The following actions have been performed:
 -  Installed Dbvisit StandbyMP Control Center software into: /u01/app/dbvisit/standbymp
 -  Control Center settings are available in the configuration file: /u01/app/dbvisit/standbymp/conf/dbvcontrol.ini
 -  Generated new security certificates in: /u01/app/dbvisit/standbymp/certificates
- - - INSTALLATION SUCCESSFUL - - -

Install and start dbvcontrol service:

[root@dbi-oda-x8 ~]# /u01/app/dbvisit/standbymp/bin/dbvcontrol service install --user oracle

[root@dbi-oda-x8 ~]# service dbvcontrol status
Redirecting to /bin/systemctl status dbvcontrol.service
● dbvcontrol.service - The Dbvisit StandbyMP Control Center provides centralized coordination for Dbvisit StandbyMP Agent operations, as well as the web-based management console.
   Loaded: loaded (/etc/systemd/system/dbvcontrol.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

[root@dbi-oda-x8 ~]# service dbvcontrol start
Redirecting to /bin/systemctl start dbvcontrol.service

[root@dbi-oda-x8 ~]# service dbvcontrol status
Redirecting to /bin/systemctl status dbvcontrol.service
● dbvcontrol.service - The Dbvisit StandbyMP Control Center provides centralized coordination for Dbvisit StandbyMP Agent operations, as well as the web-based management console.
   Loaded: loaded (/etc/systemd/system/dbvcontrol.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-02-08 15:31:24 CET; 3s ago
 Main PID: 12525 (dbvcontrol)
    Tasks: 20
   Memory: 107.4M
   CGroup: /system.slice/dbvcontrol.service
           └─12525 /u01/app/dbvisit/standbymp/bin/dbvcontrol service run
Feb 08 15:31:24 dbi-oda-x8 systemd[1]: Started The Dbvisit StandbyMP Control Center provides centralized coordination for Dbvisit StandbyMP Agent operations, as well as the web-based management console..
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Changing to directory '/u01/app/dbvisit/standbymp'
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Using log directory '/u01/app/dbvisit/standbymp/log'
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Setting database directory to '/u01/app/dbvisit/standbymp/db'
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Starting service *natssvc.natsSvc
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Starting service *directorsvc.directorService
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Starting service *guisvc.guiService
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Starting service *notificationsvc.notificationService
Feb 08 15:31:24 dbi-oda-x8 dbvcontrol[12525]: Starting service *observersvc.observerService

[root@dbi-oda-x8 ~]# ps -ef | grep [d]bv
oracle    2077     1  0 15:23 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run
oracle   12525     1  0 15:31 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvcontrol service run
oracle   12583  2077  0 15:31 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvhelper -agentManagerId sieihpnp2rtm -directorId 3pheqx762v9xr -hostAddress dbi-oda-x8.dbi-lab.ch -natsAddress dbi-oda-x8.dbi-lab.ch -natsPort 5533 -configurationType Oracle -helperProcessKey oracle:sieihpnp2rtm

We can see that as we are now having a Control Center, we have the dbvcontrol process running on standby node and dbvhelper process running on both primary and standby nodes:

[root@dbi-oda-x8 ~]# ps -ef | grep [d]bv
oracle    2077     1  0 15:23 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run
oracle   12525     1  0 15:31 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvcontrol service run
oracle   12583  2077  0 15:31 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvhelper -agentManagerId sieihpnp2rtm -directorId 3pheqx762v9xr -hostAddress dbi-oda-x8.dbi-lab.ch -natsAddress dbi-oda-x8.dbi-lab.ch -natsPort 5533 -configurationType Oracle -helperProcessKey oracle:sieihpnp2rtm

[oracle@dbioda02 ~]$ ps -ef | grep [d]bv
oracle   74593     1  2 15:32 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvagentmanager service run
oracle   74633 74593  1 15:32 ?        00:00:00 /u01/app/dbvisit/standbymp/bin/dbvhelper -agentManagerId 2v7stu05tncsp -directorId 3pheqx762v9xr -hostAddress dbvisitvippri -natsAddress dbi-oda-x8 -natsPort 5533 -configurationType Oracle -helperProcessKey oracle:2v7stu05tncsp

Create ACFS directory for Dbvisit archive logs on both primary and standby cluster

We will create a new ACFS file system on both primary and standby cluster to record Dbvisit archive logs.

On primary from node 0:

[grid@dbioda02 ~]$ asmcmd

ASMCMD> volcreate -G RECO -s 60G DBVARCLOG

ASMCMD> volinfo -G RECO -a
Diskgroup Name: RECO
	 Volume Name: DBVARCLOG
	 Volume Device: /dev/asm/dbvarclog-269
	 State: ENABLED
	 Size (MB): 61440
	 Resize Unit (MB): 64
	 Redundancy: MIRROR
	 Stripe Columns: 8
	 Stripe Width (K): 1024
	 Usage:
	 Mountpath:
	 Volume Name: DBVISIT
	 Volume Device: /dev/asm/dbvisit-269
	 State: ENABLED
	 Size (MB): 102400
	 Resize Unit (MB): 64
	 Redundancy: MIRROR
	 Stripe Columns: 8
	 Stripe Width (K): 1024
	 Usage: ACFS
	 Mountpath: /u01/app/dbvisit

[root@dbioda02 ~]# mkfs.acfs /dev/asm/dbvarclog-269
mkfs.acfs: version                   = 19.0.0.0.0
mkfs.acfs: on-disk version           = 46.0
mkfs.acfs: volume                    = /dev/asm/dbvarclog-269
mkfs.acfs: volume size               = 64424509440  (  60.00 GB )
mkfs.acfs: Format complete.

[root@dbioda02 ~]# mkdir -p /u90/app/oracle/dbvisit_arch

[root@dbioda02 ~]# cd /u01/app/19.15.0.0/grid/bin

[root@dbioda02 bin]# ./srvctl add filesystem -volume DBVARCLOG -diskgroup RECO -path /u90/app/oracle/dbvisit_arch -fstype ACFS -autostart ALWAYS -mountowner oracle

[root@dbioda02 bin]# ./srvctl start filesystem -device /dev/asm/dbvarclog-269

[root@dbioda02 bin]# df -h /u90/app/oracle/dbvisit_arch
Filesystem              Size  Used Avail Use% Mounted on
/dev/asm/dbvarclog-269   60G  671M   60G   2% /u90/app/oracle/dbvisit_arch

On standby:

[grid@dbi-oda-x8 ~]$ asmcmd

ASMCMD> volcreate -G RECO -s 60G DBVARCLOG

ASMCMD> volinfo -G RECO -a
Diskgroup Name: RECO
	 Volume Name: DBVARCLOG
	 Volume Device: /dev/asm/dbvarclog-233
	 State: ENABLED
	 Size (MB): 61440
	 Resize Unit (MB): 64
	 Redundancy: MIRROR
	 Stripe Columns: 8
	 Stripe Width (K): 1024
	 Usage:
	 Mountpath:
	 Volume Name: RDOTESTNS
	 Volume Device: /dev/asm/rdotestns-233
	 State: ENABLED
	 Size (MB): 14336
	 Resize Unit (MB): 64
	 Redundancy: HIGH
	 Stripe Columns: 8
	 Stripe Width (K): 1024
	 Usage: ACFS
	 Mountpath: /u04/app/oracle/redo/TESTNS
	 Volume Name: RECO
	 Volume Device: /dev/asm/reco-233
	 State: ENABLED
	 Size (MB): 288768
	 Resize Unit (MB): 64
	 Redundancy: MIRROR
	 Stripe Columns: 8
	 Stripe Width (K): 1024
	 Usage: ACFS
	 Mountpath: /u03/app/oracle

[root@dbi-oda-x8 ~]# mkfs.acfs /dev/asm/dbvarclog-233
mkfs.acfs: version                   = 19.0.0.0.0
mkfs.acfs: on-disk version           = 46.0
mkfs.acfs: volume                    = /dev/asm/dbvarclog-233
mkfs.acfs: volume size               = 64424509440  (  60.00 GB )
mkfs.acfs: Format complete.

[root@dbi-oda-x8 ~]# mkdir -p /u90/app/oracle/dbvisit_arch

[root@dbi-oda-x8 ~]# cd /u01/app/19.17.0.0/grid/bin

[root@dbi-oda-x8 bin]# ./srvctl add filesystem -volume DBVARCLOG -diskgroup RECO -path /u90/app/oracle/dbvisit_arch -fstype ACFS -autostart ALWAYS -mountowner oracle

[root@dbi-oda-x8 bin]# ./srvctl start filesystem -device /dev/asm/dbvarclog-233

[root@dbi-oda-x8 bin]# df -h /u90/app/oracle/dbvisit_arch
Filesystem              Size  Used Avail Use% Mounted on
/dev/asm/dbvarclog-233   60G  431M   60G   1% /u90/app/oracle/dbvisit_arch

We will create appropriate subdirectories:

[oracle@dbioda02 ~]$ mkdir /u90/app/oracle/dbvisit_arch/DBISEHA

[oracle@dbi-oda-x8 ~]$ mkdir /u90/app/oracle/dbvisit_arch/DBISEHA

Duplicate primary database for standby

Standby database instance has been prepared on standby node using same Oracle Version as the primary database, that’s to say 19.15.0.0.220419.

Standby database has been created with RMAN duplication:

oracle@dbi-oda-x8:/home/oracle/ [DBISEHA] DBISEHA
********* dbi services Ltd. *********
STATUS                 : STARTED
VERSION                : 19.15.0.0.0
*************************************

oracle@dbi-oda-x8:/home/oracle/ [DBISEHA] rmanh
Recovery Manager: Release 19.0.0.0.0 - Production on Wed Feb 8 16:50:10 2023
Version 19.15.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target sys@DBISEHA
target database Password:
connected to target database: DBISEHA (DBID=1535732728)

RMAN> connect auxiliary sys@DBISEHA_STD
auxiliary database Password:
connected to auxiliary database: DBISEHA (not mounted)

RMAN> duplicate target database for standby from active database dorecover nofilenamecheck;
Starting Duplicate Db at 08-FEB-2023 16:51:11
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=21 device type=DISK
...
...
...
deleted archived log
archived log file name=+RECO/DBISEHA_STD/ARCHIVELOG/2023_02_08/thread_1_seq_4.346.1128271929 RECID=1 STAMP=1128271929
deleted archived log
archived log file name=+RECO/DBISEHA_STD/ARCHIVELOG/2023_02_08/thread_1_seq_5.345.1128271929 RECID=2 STAMP=1128271929
Deleted 2 objects
Finished Duplicate Db at 08-FEB-2023 16:52:18

oracle@dbi-oda-x8:/home/oracle/ [DBISEHA] DBISEHA
********* dbi services Ltd. *********
STATUS                 : MOUNTED
DB_UNIQUE_NAME         : DBISEHA_STD
OPEN_MODE              : MOUNTED
LOG_MODE               : ARCHIVELOG
DATABASE_ROLE          : PHYSICAL STANDBY
FLASHBACK_ON           : NO
FORCE_LOGGING          : YES
VERSION                : 19.15.0.0.0
CDB Enabled            : NO
*************************************

Create Dbvisit Database Configuration

I created the DDC (Dbvisit Database Configuration) using CLI.

We need to make sure that the VIP and the database instance is running on node 0:

[root@dbioda02 dbi]# crsctl status resource dbvisitvippri
NAME=dbvisitvippri
TYPE=app.appviptypex2.type
TARGET=ONLINE
STATE=ONLINE on dbioda02

[root@dbioda02 dbi]# ps -ef | grep [p]mon | grep -i dbiseha
oracle   18471     1  0 Jan27 ?        00:00:40 ora_pmon_DBISEHA

We will need exact nodes names, so get them:

[grid@dbioda02 ~]$ crsctl check cluster -all
**************************************************************
dbioda02:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
dbioda03:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************

[grid@dbi-oda-x8 ~]$ crsctl check cluster -all
**************************************************************
dbi-oda-x8:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************

I created the dbvisit configuration:

oracle@dbioda02:/u01/app/dbvisit/standbymp/oracle/ [DBISEHA] pwd
/u01/app/dbvisit/standbymp/oracle

oracle@dbioda02:/u01/app/dbvisit/standbymp/oracle/ [DBISEHA] ./dbvctl -o setup
=========================================================
     Dbvisit Standby Database Technology (11.2.1_0_g8a57214c)
           http://www.dbvisit.com
=========================================================
=>dbvctl only needs to be run on the primary server.
Is this the primary server?  [Yes]:
The following Dbvisit Database configuration (DDC) file(s) found on this
server:
     DDC
     ===
1)   Create New DDC
2)   Cancel
Please enter choice [] : 1
Is this correct?  [Yes]:
=========================================================
Dbvisit Standby setup begins.
=========================================================
The following Oracle instance(s) have been found on this server:
     SID            ORACLE_HOME
     ===            ===========
1)   DBITST1        /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1
2)   DBISEHA        /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_2
3)   Enter own ORACLE_SID and ORACLE_HOME
Please enter choice [] : 2
Is this correct?  [Yes]:
=>ORACLE_SID will be: DBISEHA
=>ORACLE_HOME will be: /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_2
------------------------------------------------------------------------------
Enter the the virtual hostname (linked to a Virtual IP) for primary database.
This virtual hostname is attached to a VIP that will be able to move between
the RAC nodes. Dbvisit Standby will only run on the server where this virtual
hostname (VIP) resource is running.
The Virtual Hostname (and VIP) should be configured as a resouce in clusterware
and must be enabled and started on one of the nodes before yo continue with the
setup.
NOTE: If you are not using a Virtual Hostname (Highly Recommended), Dbvisit
Standby can only be configured to run on one dedicated node in the RAC
configuration - specify the hosts name here if you do not have a Virtual
Hostname (attached to VIP) for the cluster configured.
=>SOURCE is []: dbvisitvippri
Your input: dbvisitvippri
Is this correct?  [Yes]:
Choice is dbvisitvippri
------------------------------------------------------------------------------
Please enter a filesystem directory that Dbvisit Standby use to store (archive)
log files.  This directory is not the same as the database recovery area or
archive destinations and should not be located in these areas.
The ARCHSOURCE directory is located on the primary server and will become the
ARCHDEST location when the primary database is converted to a standby database
during a Graceful Switchover operation.
This directory will ONLY contain (archive) log files related to this database.
It should not contain any other (non archive log) files.
Please ensure that this directory exists on
=>ARCHSOURCE is [/u01/app/oracle/dbvisit_arch/DBISEHA]: /u90/app/oracle/dbvisit_arch/DBISEHA
Your input: /u90/app/oracle/dbvisit_arch/DBISEHA
Is this correct?  [Yes]:
Choice is /u90/app/oracle/dbvisit_arch/DBISEHA
------------------------------------------------------------------------------
Enter primary node 1.
=>RAC1_HOST is [dbioda03]: dbioda02
Your input: dbioda02
Is this correct?  [Yes]:
Choice is dbioda02
------------------------------------------------------------------------------
Enter primary ASM instance for node dbioda03. Leave null for ACFS
=>RAC1_SID_ASM is []: +ASM1
Your input: +ASM1
Is this correct?  [Yes]:
Choice is +ASM1
------------------------------------------------------------------------------
Enter primary node 2.
=>RAC2_HOST is [dbioda02]: dbioda03
Your input: dbioda03
Is this correct?  [Yes]:
Choice is dbioda03
------------------------------------------------------------------------------
Enter primary ASM instance for node dbioda02. Leave null for ACFS
=>RAC2_SID_ASM is [+ASM1]: +ASM2
Your input: +ASM2
Is this correct?  [Yes]:
Choice is +ASM2
------------------------------------------------------------------------------
Do you want to use SSH to connect to the standby server?  Note that if you are
using SSH, passwordless SSH authentication between the hosts must already be
configured.  By default Dbvnet will be used.
=>USE_SSH is [N]:
Your input: N
Is this correct?  [Yes]:
Choice is N
------------------------------------------------------------------------------
Specify the DBVNET or SSH port number on the primary server. The default value
supplied is the dbvnet port 7890.  If you specified the use of SSH, please
specify the SSH port here.
=>NETPORT is [7890]:
Your input: 7890
Is this correct?  [Yes]:
Choice is 7890
------------------------------------------------------------------------------
Enter the standby database hostname.
If the standby database will be Oracle RAC enabled:
Enter the the Virtual Hostname (linked to a Virtual IP) for standby database.
This virtual hostname is attached to a VIP that will be able to move between
the RAC nodes. Dbvisit Standby will only run on the server where this virtual
hostname (VIP) resource is running.
The Virtual Hostname (and VIP) should be configured as a resouce in clusterware
and must be enabled and started on one of the nodes before yo continue with the
setup.  If you are not using a Virtual Hostname (Highly Recommended), Dbvisit
Standby can only be configured to run on one dedicated node in the RAC
configuration - specify the hosts name here if you do not have a Virtual
Hostname (attached to VIP) for the cluster configured.
For non-RAC configurations specify the standby database server name here.
=>DESTINATION is []: dbi-oda-x8
Your input: dbi-oda-x8
Is this correct?  [Yes]:
Choice is dbi-oda-x8
------------------------------------------------------------------------------
Specify the DBVNET or SSH port number on the standby server. The default value
supplied is the dbvnet port 7890.  If you specified the use of SSH, please
specify the SSH port here.
=>NETPORT_DR is [7890]:
Your input: 7890
Is this correct?  [Yes]:
Choice is 7890
------------------------------------------------------------------------------
Enter Dbvisit Standby installation directory on the standby server
=>DBVISIT_BASE_DR is [/u01/app/dbvisit/standbymp]: /u01/app/dbvisit/standbymp
Your input: /u01/app/dbvisit/standbymp
Is this correct?  [Yes]:
Choice is /u01/app/dbvisit/standbymp
------------------------------------------------------------------------------
Enter ORACLE_HOME directory on the standby server
=>ORACLE_HOME_DR is [/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_2]: /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_8
Your input: /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_8
Is this correct?  [Yes]:
Choice is /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_8
------------------------------------------------------------------------------
Enter DB_UNIQUE_NAME on the standby server
=>DB_UNIQUE_NAME_DR is [DBISEHA]: DBISEHA_STD
Your input: DBISEHA_STD
Is this correct?  [Yes]:
Choice is DBISEHA_STD
------------------------------------------------------------------------------
Will the standby database be a SEHA database?
=>RAC_DR is [N]:
Your input: N
Is this correct?  [Yes]:
Choice is N
------------------------------------------------------------------------------
Please enter the directory where Dbvisit Standby will transfer the (archive)
log files to on standby server.   This directory is not the same as the
database recovery area or archive destinations and should not be located in
these areas.
This directory should ONLY contain (archive) log files related to this
database. It should not contain any other (non archive log) files.
Please ensure that this directory exists on the standby server
=>ARCHDEST is [/u90/app/oracle/dbvisit_arch/DBISEHA]:
Your input: /u90/app/oracle/dbvisit_arch/DBISEHA
Is this correct?  [Yes]:
Choice is /u90/app/oracle/dbvisit_arch/DBISEHA
------------------------------------------------------------------------------
Enter ORACLE_SID on the standby server
=>ORACLE_SID_DR is [DBISEHA]:
Your input: DBISEHA
Is this correct?  [Yes]:
Choice is DBISEHA
------------------------------------------------------------------------------
Enter ASM instance name on the standby server, if your standby is using ASM.
If you are not using ASM on the standby or standby is ACFS leave the value
null.
=>ORACLE_SID_ASM_DR is []: +ASM1
Your input: +ASM1
Is this correct?  [Yes]:
Choice is +ASM1
------------------------------------------------------------------------------
Please specify the name of the Dbvisit Database configuration (DDC) file.
The DDC file is a plain text file that contains all the Dbvisit Standby
settings.
=>ENV_FILE is [DBISEHA]:
Your input: DBISEHA
Is this correct?  [Yes]:
Choice is DBISEHA
------------------------------------------------------------------------------
Provide license key.
=>LICENSE_KEY is []: *******************************************
Your input: *******************************************
Is this correct?  [Yes]:
Choice is *******************************************
------------------------------------------------------------------------------
Below are the list of configuration variables provided during the setup
process:
Configuration Variable             Value Provided
======================             ==============
ORACLE_SID                         DBISEHA
ORACLE_HOME
/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_2
SOURCE                             dbvisitvippri
ARCHSOURCE                         /u90/app/oracle/dbvisit_arch/DBISEHA
RAC1_THREAD                        1
RAC1_HOST                          dbioda02
RAC1_SID                           DBISEHA
RAC1_SID_ASM                       +ASM1
RAC2_THREAD                        1
RAC2_HOST                          dbioda03
RAC2_SID                           DBISEHA
RAC2_SID_ASM                       +ASM2
USE_SSH                            N
NETPORT                            7890
DESTINATION                        dbi-oda-x8
NETPORT_DR                         7890
DBVISIT_BASE_DR                    /u01/app/dbvisit/standbymp
ORACLE_HOME_DR
/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_8
DB_UNIQUE_NAME_DR                  DBISEHA_STD
RAC_DR                             N
ARCHDEST                           /u90/app/oracle/dbvisit_arch/DBISEHA
ORACLE_SID_DR                      DBISEHA
ORACLE_SID_ASM_DR                  +ASM1
ENV_FILE                           DBISEHA
LICENSE_KEY                        *******************************************
Are these variables correct?  [Yes]:
>>> Dbvisit Database configuration (DDC) file DBISEHA created.
>>> Dbvisit Database repository (DDR) DBISEHA created.
   Repository Version          11.0
   Software Version            11.0
   Repository Status           VALID
PID:6367
TRACE:dbvisit_install.log
oracle@dbioda02:/u01/app/dbvisit/standbymp/oracle/ [DBISEHA]

Sending and applying logs

I sent logs from primary database:

oracle@dbioda02:/u01/app/dbvisit/standbymp/oracle/ [DBISEHA] ./dbvctl -d DBISEHA
=============================================================
Dbvisit Standby Database Technology (11.2.1_0_g8a57214c) (pid 30710)
dbvctl started on dbvisitvippri: Wed Feb  8 17:43:09 2023
=============================================================
>>> Obtaining information from standby database (RUN_INSPECT=Y)... done
    Thread: 1 Archive log gap: 0. Transfer log gap: 5
>>> Sending heartbeat message... skipped
>>> First time Dbvisit Standby runs, Dbvisit Standby configuration will be copied to
    dbi-oda-x8...
>>> Performing a log switch... done
>>> Transferring Log file(s) from DBISEHA on dbvisitvippri to dbi-oda-x8:
    thread 1 sequence 6 (thread_1_seq_6.328.1128274995)... done
=============================================================
dbvctl ended on dbvisitvippri: Wed Feb  8 17:43:21 2023
=============================================================

I applied logs on the standby database:

oracle@dbi-oda-x8:/u01/app/dbvisit/standbymp/oracle/ [DBISEHA] ./dbvctl -d DBISEHA
=============================================================
Dbvisit Standby Database Technology (11.2.1_0_g8a57214c) (pid 55512)
dbvctl started on dbi-oda-x8: Wed Feb  8 17:44:54 2023
=============================================================
>>> Sending heartbeat message... skipped
>>> Applying Log file(s) from dbvisitvippri to DBISEHA on dbi-oda-x8:
    thread 1 sequence 6 (1_6_1127209532.arc)... done
    Last applied log(s):
    thread 1 sequence 6
    Next SCN required for recovery 3429450 generated at 2023-02-08:17:43:15 +01:00.
    Next required log thread 1 sequence 7
=============================================================
dbvctl ended on dbi-oda-x8: Wed Feb  8 17:44:59 2023
=============================================================

I checked report gap:

oracle@dbioda02:/u01/app/dbvisit/standbymp/oracle/ [DBISEHA] ./dbvctl -d DBISEHA -i
=============================================================
Dbvisit Standby Database Technology (11.2.1_0_g8a57214c) (pid 36127)
dbvctl started on dbvisitvippri: Wed Feb  8 17:45:38 2023
=============================================================
Dbvisit Standby log gap report for DBISEHA at 202302081745:
-------------------------------------------------------------
Description       | SCN          | Timestamp
-------------------------------------------------------------
Source              3429533        2023-02-08:17:45:37 +01:00
Destination         3429450        2023-02-08:17:43:15 +01:00
Standby database time lag (DAYS-HH:MI:SS): +00:02:22
Report for Thread 1
-------------------
SOURCE
Current Sequence 7
Last Archived Sequence 6
Last Transferred Sequence 6
Last Transferred Timestamp 2023-02-08 17:43:20
DESTINATION
Next Required Recovery Sequence 7
Transfer Log Gap 0
Apply Log Gap 0
=============================================================
dbvctl ended on dbvisitvippri: Wed Feb  8 17:45:41 2023
=============================================================

Conclusion

I have been setting up and testing a combination of the Oracle SEHA feature with last dbvisit StandbyMP solution having Oracle SEHA only running on the primary database. The standby database is a single node cluster. I might need to say it is a great combination providing High Availability and Disaster Recovery.

In a next blog, I will run some switchover between primary and standby as well as relocation of the instance between primary nodes.