As you might know Dbvisit StandbyMP is a great Disaster Recovery solution for Oracle SE databases. Dbvisit recently communicated, providing now, a Test Drive system for customer to easily try the product and for partner to easily have a Demo environment. In less than 2 minutes, an environment with a Control Center host and multiple database server hosts with either Oracle or SQL Server is made available. The Dbvisit StandbyMP product is already pre-installed and ready to be used. Let’s have a try!

We need to use the following link : https://testdrive.dbvisit.com/.

We need to enter our name and email address.

And to click “Launch test drive”.

The process of setting the lab is starting.

And is really taking less than 2 minutes to setup!

We now have a lab for 2 hours to test and play with Dbvisit StandbyMP.

Using Control Center to setup the Dbvisit configuration

And I can click on the link and start the Control Center.

I created a new Oracle configuration.

Using Control Center to setup the Oracle Standby Database

In the dashboard, I clicked on Setup Now.

I could directly ssh the primary host with the primary database and check used space.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
maw@DBI-LT-MAW2 ~ % ssh oracle@oracle1-2a33707ef81949f1.mp-standby.com
The authenticity of host 'oracle1-2a33707ef81949f1.mp-standby.com (54.79.30.38)' can't be established.
ECDSA key fingerprint is SHA256:DpFwIUpbaidFWJG0R41nQ4DLw17BJQRl+CSse9yPaEo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'oracle1-2a33707ef81949f1.mp-standby.com,54.79.30.38' (ECDSA) to the list of known hosts.
oracle@oracle1-2a33707ef81949f1.mp-standby.com's password:
Last login: Fri Feb 24 08:06:57 2023
The Oracle base has been set to /u01/app/oracle
 
oracle@localhost[/home/oracle]: df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p3   15G   11G  3.4G  77% /
devtmpfs        7.7G     0  7.7G   0% /dev
tmpfs           7.7G     0  7.7G   0% /dev/shm
tmpfs           7.7G  8.6M  7.7G   1% /run
tmpfs           7.7G     0  7.7G   0% /sys/fs/cgroup
/dev/nvme1n1    9.8G  2.6G  6.7G  28% /u02
/dev/nvme0n1p1  976M  164M  746M  18% /boot
tmpfs           1.6G     0  1.6G   0% /run/user/54321
tmpfs           1.6G     0  1.6G   0% /run/user/1000
oracle@localhost[/home/oracle]:

And check the database files.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
oracle@localhost[/home/oracle]: sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 24 08:32:52 2023
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> select SUM(BYTES/1024/1024/1024) from v$datafile;
 
SUM(BYTES/1024/1024/1024)
-------------------------
           1.74316406
 
SQL> select SUM(BYTES/1024/1024/1024) from v$tempfile;
 
SUM(BYTES/1024/1024/1024)
-------------------------
           .03125
 
SQL> select name from v$datafile;
 
NAME
--------------------------------------------------------------------------------
/u02/data/SRC/system01.dbf
/u02/data/SRC/sysaux01.dbf
/u02/data/SRC/undotbs01.dbf
/u02/data/SRC/users01.dbf
 
SQL> select name from v$tempfile;
 
NAME
--------------------------------------------------------------------------------
/u02/data/SRC/temp01.dbf

I created directories on both primary and standby hosts to store database backup files in order to create the standby.

1
2
oracle@localhost[/home/oracle]: sudo mkdir /u02/backup
oracle@localhost[/home/oracle]: sudo chown oracle:oinstall /u02/backup

I completed the configuration before starting the standby database creation.

Creation of the standby database started.

To finally have our standby database created.

And we can confirm login on it with sqlplus using a new ssh session on the standby host.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
oracle@localhost[/home/oracle]: ps -ef | grep [p]mon
oracle    6560     1  0 08:44 ?        00:00:00 ora_pmon_SRC
 
oracle@localhost[/home/oracle]: . oraenv
ORACLE_SID = [oracle] ? SRC
The Oracle base has been set to /u01/app/oracle
 
oracle@localhost[/home/oracle]: sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 24 09:01:32 2023
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> select host_name, instance_name, status from v$instance;
 
HOST_NAME  INSTANCE_NAME    STATUS
---------- ---------------- ------------
oracle2    SRC          MOUNTED
 
SQL> select name, open_mode, database_role from v$database;
 
NAME      OPEN_MODE        DATABASE_ROLE
--------- -------------------- ----------------
SRC   MOUNTED          PHYSICAL STANDBY
 
SQL>

Send/apply archive log with the GUI between primary and standby

I can start a log shipping and apply.

The standby is synchronised with the primary.

Graceful switchover

Let’s do a graceful switchover between primary and standby database.

And switchover has been completed successfully. Oracle2 is now the primary database.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
oracle@localhost[/home/oracle]: sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 24 09:24:38 2023
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> set line 300
SQL> col host_name for a30
SQL> col host_name for a10
SQL> select host_name, instance_name, status from v$instance;
 
HOST_NAME  INSTANCE_NAME    STATUS
---------- ---------------- ------------
oracle2    SRC          OPEN
 
SQL> select name, open_mode, database_role from v$database;
 
NAME      OPEN_MODE        DATABASE_ROLE
--------- -------------------- ----------------
SRC   READ WRITE           PRIMARY
 
SQL>

Snapshot database

Let’s create a Test/Dev Snapshot database on the new standby host (oracle1).

Unfortunately, this is not possible.

Because there is no LVM volume on the VM, which is a snapshot requirement.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
oracle@localhost[/home/oracle]: ps -ef | grep [p]mon
oracle   12036     1  0 09:21 ?        00:00:00 ora_pmon_SRC
oracle@localhost[/home/oracle]: df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p3   15G   11G  3.1G  78% /
devtmpfs        7.7G     0  7.7G   0% /dev
tmpfs           7.7G     0  7.7G   0% /dev/shm
tmpfs           7.7G  8.7M  7.7G   1% /run
tmpfs           7.7G     0  7.7G   0% /sys/fs/cgroup
/dev/nvme1n1    9.8G  2.1G  7.2G  23% /u02
/dev/nvme0n1p1  976M  164M  746M  18% /boot
tmpfs           1.6G     0  1.6G   0% /run/user/54321
tmpfs           1.6G     0  1.6G   0% /run/user/1000
tmpfs           1.6G     0  1.6G   0% /run/user/0

Activate the standby (failover)

Let’s simulate that our primary database running on oracle2 crashes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
oracle@localhost[/home/oracle]: sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 24 09:36:45 2023
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> select name, open_mode, database_role from v$database;
 
NAME      OPEN_MODE        DATABASE_ROLE
--------- -------------------- ----------------
SRC   READ WRITE           PRIMARY
 
SQL> shutdown abort;
ORACLE instance shut down.
SQL>

The observer automatically saw that the primary is not available any more.

The observer is informing us that as our selected emergency action is set to notification only (observer only), it will not do an automatic failover.

We will do it ourself and activate the standby database running on oracle1 host.

Currently oracle1 node is standby.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
oracle@localhost[/home/oracle]: sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 24 09:43:50 2023
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> select name, open_mode, database_role from v$database;
 
NAME      OPEN_MODE        DATABASE_ROLE
--------- -------------------- ----------------
SRC   MOUNTED          PHYSICAL STANDBY
 
SQL> select host_name from v$instance;
 
HOST_NAME
----------------------------------------------------------------
oracle1
 
SQL>

Let’s run the failover (standby activation).

As we can see, the oracle1 database has been activated and is now the primary database.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
SQL> select host_name from v$instance;
select host_name from v$instance
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 14221
Session ID: 8 Serial number: 53938
 
 
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
oracle@localhost[/home/oracle]: sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 24 09:51:10 2023
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> select host_name from v$instance;
 
HOST_NAME
----------------------------------------------------------------
oracle1
 
SQL> select name, open_mode, database_role from v$database;
 
NAME      OPEN_MODE        DATABASE_ROLE
--------- -------------------- ----------------
SRC   READ WRITE           PRIMARY
 
SQL>

Summary

This is a quite good environment Dbvisit is providing us to test and play with the product. We can quite test everything, just not the snapshot features. Having access to both hosts in ssh, I could also create another database if I would like to.