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.