Creating a Standby on 21c [Single Instance]
Tags: tutorial, oracle, 21c, database
Published: 2021-09-28 07:50:58

For this post, I just wanted to test the same DBCA option [we saw in the past](https://project42.site/create-single-instance-standby-using-dbca-12-2-version/) to create Standby but this time on 21c.

The first thing I have to clarify is that I will be using rac1-node1 to host the 21c primary database (cdb21) and rac1-node2 to host our new Standby (cdbst21).

The installation of 21c DB_HOME is as simple as has been for last few versions, so I will skip it (you can see how to do it checking this [21c post]([https://project42.site/installing-oracle-21c-database-on-linux-single-instance/](https://project42.site/installing-oracle-21c-database-on-linux-single-instance/)))

Once we have the Oracle home, we need to setup tnsnames.ora file for the DBCA to be able to connect to our primary database service.

If you follow the news, you will notice that 21c is the first version that comes with read-only Oracle Home by default, which makes some of the old files location not possible. You can read more on this from this [Fernando Simon's Post]([https://www.fernandosimon.com/blog/21c-rooh/](https://www.fernandosimon.com/blog/21c-rooh/))

For my test, I just copied the tnsnames.ora file I have in the Primary host to the standby host

```bash

-- Primary host

[oracle@rac1-node1 ~]$ scp -pr /u01/app/oracle/homes/OraDB21Home1/network/admin/tnsnames.ora rac1-node2:/u01/app/oracle/homes/OraDB21Home1/network/admin/tnsnames.ora

tnsnames.ora 100% 408 490.6KB/s 00:00

[oracle@rac1-node1 ~]$

-- Standby host

[oracle@rac1-node2 ~]$ cat /u01/app/oracle/homes/OraDB21Home1/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/homes/OraDB21Home1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

LISTENER_CDB21 =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-node1)(PORT = 1521))

CDB21 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-node1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = cdb21)

)

)

[oracle@rac1-node2 ~]$

```

Now that we got the tnsnames.ora file ready, we can create the standby using dbca.

The command I will be using is the same that worked back on 12.2 version and that you can see on [this old post]([https://project42.site/create-single-instance-standby-using-dbca-12-2-version/](https://project42.site/create-single-instance-standby-using-dbca-12-2-version/))

```bash

[oracle@rac1-node2 ~]$ . oraenv

ORACLE_SID = [oracle] ? cdbst21

ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/21.0.0/dbhome_1

The Oracle base has been set to /u01/app/oracle

[oracle@rac1-node2 ~]$

[oracle@rac1-node2 ~]$ tnsping cdb21

TNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 12-SEP-2021 17:40:12

Copyright (c) 1997, 2021, Oracle. All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-node1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cdb21)))

OK (0 msec)

[oracle@rac1-node2 ~]$

[oracle@rac1-node2 ~]$ dbca -silent -createDuplicateDB \

> -gdbname cdb21 -sid cdbst21 \

> -initParams db_create_file_dest='/u01/oradata/' \

> -primaryDBConnectionString rac1-node1:1521/cdb21 \

> -sysPassword "Welcome1" \

> -createAsStandby \

> -dbUniqueName cdbst21

Prepare for db operation

22% complete

Listener config step

44% complete

Auxiliary instance creation

67% complete

RMAN duplicate

89% complete

Post duplicate database operations

100% complete

Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdbst21/cdbst21.log" for further details.

[oracle@rac1-node2 ~]$

```

In order for the primary database to be able to connect to the standby, we need to add the information into the Primary node tnsnames.ora file as you can see below:

```bash

[oracle@rac1-node1 ~]$ cat /u01/app/oracle/homes/OraDB21Home1/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/homes/OraDB21Home1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

LISTENER_CDB21 =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-node1)(PORT = 1521))

CDB21 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-node1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = cdb21)

)

)

CDBST21 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-node2)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = cdbst21)

)

)

[oracle@rac1-node1 ~]$

```

What we have to do now, is to create and enable (yes, I sometimes forget you have to enable it....) our Dataguard configuration on DG broker:

```bash

[oracle@rac1-node1 dbs]$ dgmgrl

DGMGRL for Linux: Release 21.0.0.0.0 - Production on Sun Sep 12 17:52:46 2021

Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.

Welcome to DGMGRL, type "help" for information.

DGMGRL> connect sys/Welcome1@cdb21

Connected to "cdb21"

Connected as SYSDBA.

DGMGRL> CREATE CONFIGURATION DG_BROKER_CONFIG AS PRIMARY DATABASE IS "cdb21" CONNECT IDENTIFIER IS "cdb21";

Connected to "cdb21"

Configuration "dg_broker_config" created with primary database "cdb21"

DGMGRL>

DGMGRL> ADD DATABASE "cdbst21" AS CONNECT IDENTIFIER IS "cdbst21" MAINTAINED AS PHYSICAL;

Database "cdbst21" added

DGMGRL>

DGMGRL> show configuration

Configuration - dg_broker_config

Protection Mode: MaxPerformance

Members:

cdb21 - Primary database

cdbst21 - Physical standby database

Fast-Start Failover: Disabled

Configuration Status:

DISABLED

DGMGRL> enable configuration

Enabled.

DGMGRL>

```

And ***voilà!***, our 21c Standby is ready for use :)

```bash

-- Standby Alerlog:

2021-09-12T17:55:55.215081+01:00

TT02 (PID:31812): All non-current ORLs have been archived [krsy.c:2195]

2021-09-12T17:55:55.229840+01:00

PR00 (PID:31769): Media Recovery Log /u01/oradata/CDB21/FRA/CDBST21/archivelog/2021_09_12/o1_mf_1_9_jmwd8on0_.arc [krd.c:9408]

2021-09-12T17:55:55.447581+01:00

Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY

2021-09-12T17:55:55.733940+01:00

Resize operation completed for file# 3, fname /u01/oradata/CDB21/CDBST21/datafile/o1_mf_sysaux_jmwch9nb_.dbf, old size 614400K, new size 634880K

PR00 (PID:31769): Media Recovery Waiting for T-1.S-10 (in transit) [krsm.c:6185]

2021-09-12T17:55:55.852791+01:00

Recovery of Online Redo Log: Thread 1 Group 4 Seq 10 Reading mem 0

Mem# 0: /u01/oradata/CDB21/CDBST21/onlinelog/o1_mf_4_jmwcjhq1_.log

Mem# 1: /u01/oradata/CDB21/FRA/CDBST21/onlinelog/o1_mf_4_jmwcjj2p_.log

-- Swithed logs on primary to make sure is all fine

SQL> select thread#,max(sequence#) from v$archived_log where first_time > sysdate -1 and status ='A' group by thread# order by thread#;

THREAD# MAX(SEQUENCE#)

---------- --------------

1 9

SQL> alter system archive log current;

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> select thread#,max(sequence#) from v$archived_log where first_time > sysdate -1 and status ='A' group by thread# order by thread#;

THREAD# MAX(SEQUENCE#)

---------- --------------

1 12

SQL>

2021-09-12T18:01:03.917829+01:00

Recovery of Online Redo Log: Thread 1 Group 5 Seq 12 Reading mem 0

Mem# 0: /u01/oradata/CDB21/CDBST21/onlinelog/o1_mf_5_jmwcjjyj_.log

Mem# 1: /u01/oradata/CDB21/FRA/CDBST21/onlinelog/o1_mf_5_jmwcjk8o_.log

2021-09-12T18:01:08.841412+01:00

rfs (PID:32296): Opened LNO:4 for DBID:2834326897 B-1080656818.T-1.S-13 [krsr.c:18143]

2021-09-12T18:01:08.841639+01:00

ARC2 (PID:30356): Archived Log entry 6 added for B-1080656818.T-1.S-12 ID 0x7ff9a8eff571 LAD:1 [krse.c:4933]

2021-09-12T18:01:08.901532+01:00

PR00 (PID:31769): Media Recovery Waiting for T-1.S-13 (in transit) [krsm.c:6185]

2021-09-12T18:01:08.902611+01:00

Recovery of Online Redo Log: Thread 1 Group 4 Seq 13 Reading mem 0

Mem# 0: /u01/oradata/CDB21/CDBST21/onlinelog/o1_mf_4_jmwcjhq1_.log

Mem# 1: /u01/oradata/CDB21/FRA/CDBST21/onlinelog/o1_mf_4_jmwcjj2p_.log

DGMGRL> show database cdbst21

Database - cdbst21

Role: PHYSICAL STANDBY

Intended State: APPLY-ON

Transport Lag: 0 seconds (computed 1 second ago)

Apply Lag: 0 seconds (computed 1 second ago)

Average Apply Rate: 30.00 KByte/s

Real Time Query: ON

Instance(s):

cdbst21

Database Status:

SUCCESS

DGMGRL>

```

As mentioned, nothing particular different than didnt work already on previous versions.

Hope you've enjoyed the post and be ready for more posts about Oracle Database 21c :)