You are on page 1of 8

12c Database : Step by Step standby creation using RMAN duplicate database

Step by Step standby creation using RMAN duplicate database


This post is about to create a standby database in container enabled database (Just want to check any
changes required from previous versions steps) All steps are similar like previous versions except we have to
create directory structures for PDB databases otherwise RMAN script will fail Please go through the steps to
create a standby database in same host. Environment is as follows

HostName: Geek DBA12c


Primary DB: DB12c
Standby DB: STBY12C

As all of you aware you donot required backups or filecopy to create standby from 11g onwards using
Duplicate database for standby using active database, which connects to primary creates an onfly image copy
backup and send to standby destination.

Further in 12c, this has been enhanced, the image copies can be send to destination host in small chunks
(section copies) which I will post later.

For now, here are the steps to create standby database.

Keep the Primary Database in Force Logging mode

oracle@Geek DBA12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun Sep 15 13:26:48 2013

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing
options

SQL> select force_logging from v$database;

FORCE_LOGGING
---------------------------------------
NO

SQL> alter database force logging;


Database altered.

SQL> exit

On Primary Database, Create Standby redologs

ALTER DATABASE ADD STANDBY LOGFILE


'/u01/app/oracle/oradata/DB12c/srl_redo04.log'
SIZE 52428800

ALTER DATABASE ADD STANDBY LOGFILE


'/u01/app/oracle/oradata/DB12c/srl_redo05.log'
SIZE 52428800

ALTER DATABASE ADD STANDBY LOGFILE


'/u01/app/oracle/oradata/DB12c/srl_redo06.log'
SIZE 52428800

Set Primary Database Parameters : DB12C

SQL> SHOW PARAMETER DB_NAME

NAME TYPE VALUE


------------------------------------ -----------
------------------------------
db_name string DB12c
SQL> SHOW PARAMETER DB_UNIQUE_NAME

NAME TYPE VALUE


------------------------------------ -----------
------------------------------
db_unique_name string DB12c
SQL> ALTER SYSTEM SET log_archive_config = 'dg_config=(DB12C,STBY12C)';

System altered.

SQL> ALTER SYSTEM SET log_archive_dest_2 = 'service=STBY12C async


valid_for=(online_logfile,primary_role) db_unique_name=STBY12C';

System altered.

Update the TNSNAMES.ora with standby tns entry;

# tnsnames.ora Network Configuration File:


/u01/app/oracle/product/12.1.0.1/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DB12C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12c.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DB12c)
)
)

PDB12C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12c.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb12c)
)
)

stby12c =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12c.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = STBY12C)
)
)

Update the Listener.ora for Standby Service to be registered with listener.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12c.localdomain)(PORT =
1521))
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = STBY12C)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
(SID_NAME = STBY12C)
)
)

Copy the primary password file to Standby site password file

[oracle@Geek DBA12c dbs]$ cp orapwDB12c orapwSTBY12C

Create a single entry init file for standby

[oracle@Geek DBA12c dbs]$ echo db_name=STBY12C >> initSTBY12C.ora


[oracle@Geek DBA12c dbs]$ cat initSTBY12C.ora
db_name=STBY12C
[oracle@Geek DBA12c dbs]$

Create a datafiles directory for standby

[oracle@Geek DBA12c dbs]$ cd $ORACLE_BASE/oradata


[oracle@Geek DBA12c oradata]$ ls -ltr
total 4
drwxr-x---. 5 oracle oinstall 4096 Sep 15 13:29 DB12c
[oracle@Geek DBA12c oradata]$ mkdir STBY12C
[oracle@Geek DBA12c oradata]$ ls -ltr
total 8
drwxr-x---. 5 oracle oinstall 4096 Sep 15 13:29 DB12c
drwxr-xr-x. 2 oracle oinstall 4096 Sep 15 13:42 STBY12C
[oracle@Geek DBA12c oradata]$

[oracle@Geek DBA12c admin]$ ls -ltr


total 4
drwxr-x---. 6 oracle oinstall 4096 Sep 2 08:28 DB12c
[oracle@Geek DBA12c admin]$ mkdir STBY12C
[oracle@Geek DBA12c admin]$ mkdir -p STBY12C/adump STBY12c/new STBY12C/pdbseed
STBY12C/pdb12c
[oracle@Geek DBA12c admin]$

Startup the Standby by with parameter file we have created.

[oracle@Geek DBA12c admin]$ export ORACLE_SID=STBY12C


[oracle@Geek DBA12c admin]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun Sep 15 13:52:40 2013

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup nomount pfile=$ORACLE_HOME/dbs/initSTBY12C.ora

ORACLE instance started.

Total System Global Area 217157632 bytes


Fixed Size 2286656 bytes
Variable Size 159386560 bytes
Database Buffers 50331648 bytes
Redo Buffers 5152768 bytes
SQL> SQL>

Connect to RMAN to TARGET (Primary) and Auxiliary Instance (Standby)

[oracle@Geek DBA12c admin]$ rman auxiliary /


Recovery Manager: Release 12.1.0.1.0 - Production on Sun Sep 15 14:07:27 2013

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

connected to auxiliary database: STBY12C (not mounted)

RMAN> connect target sys@db12c

target database Password:


connected to target database: DB12C (DBID=1279089071)

RMAN>

<strong># Run the RMAN Script below


</strong>
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
spfile
parameter_value_convert 'DB12c','STBY12C'
set db_unique_name='STBY12C'
set db_file_name_convert='/DB12c/','/STBY12C/'
set log_file_name_convert='/DB12c/','/STBY12C/'
set control_files='/u01/app/oracle/oradata/STBY12C/STBY12C1.ctl'
set log_archive_max_processes='5'
set fal_client='STBY12C'
set fal_server='DB12C'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(DB12C,STBY12C)'
set log_archive_dest_2='service=orcl ASYNC
valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=DB12C'
;
}

Standby database create completed,


To keep the length of this post short, I have copied the log to attachment, CLick here –>

Please see the RMAN memory script logfile Login To standby database and keep the standby in
real time apply mode

[oracle@Geek DBA12c stage]$ . oraenv


ORACLE_SID = [STBY12C] ? STBY12C
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@Geek DBA12c stage]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun Sep 15 16:34:00 2013

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing
options

SQL&gt; alter database recover managed standby database disconnect from


session using current logfile;

Database altered.

SQL&gt;

To check the standby working or not

On Primary, provide couple of manual switches

SQL&gt; Alter system switch logfile;


SQL&gt; Alter system switch logfile;
SQL&gt; Verify the latest sequence in primary database
SQL&gt; archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 90
Next log sequence to archive 92
Current log sequence 92
On Standby check, the status of MRP process

SQL&gt; select process,status,blocks,sequence# from v$managed_standby;

PROCESS STATUS BLOCKS SEQUENCE#


--------- ------------ ---------- ----------
ARCH CLOSING 2 88
ARCH CLOSING 6 90
ARCH CONNECTED 0 0
ARCH CLOSING 22 87
ARCH CLOSING 659 91
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 1 92
MRP0 APPLYING_LOG 102400 92

9 rows selected.

SQL&gt;

The standby is ready and sync with production database.

Next posts:-

1) 12C Network restore using service

2) 12C, rollforward of standby using service

You might also like