Blog

How to duplicate 19c database on remote server 

Using RMAN’s Active Duplicate feature?


Task: 

Task is to clone a database called TESTDB to CLONEDB using RMAN’s Active Duplicate feature.


Source and Destination is as follows:

Subject

Source

Destination

IP Address:

192.168.0.197

192.168.0.198

Database Name:

TESTDB

CLONEDB

Database Status

OPEN

Not Available yet

Database Version:

19.0.0

19.0.0

ORACLE_BASE:

data/app/oracle

/data/app/oracle

ORACLE_HOME:

/data/app/oracle/product/19C/dbhome_3

/data/app/oracle/product/19C/dbhome

Listener Name:

LISTENER

LISTENER

Listener Port:

1521

1521

Listener Status

Up

Up


On Source Database Server:

No

Description

Command / Details / Screenshots

1

Login to Source Database Srver and set oracle environment. 

. oraenv → TESTDB

2

Create passwordfile if not already created.

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=”abc123″ format=12 force=y

ls -1 $ORACLE_HOME/dbs/orapw$ORACLE_SID

3

Send Passwordfile to destination server.

scp orapwTESTDB oracle@192.168.0.198:/data/app/oracle/product/19C/dbhome/dbs/orapwTESTDB

 

4

Update tnsnames.ora file with both source and database connection string

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

TESTDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.197)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = TESTDB)

    )

  )

CLONEDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.198)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = CLONEDB)

    )

  )

5

Verify connection string

tail -4 tnsnames.ora

tnsping TESTDB

tnsping CLONEDB


On Destination Server:

6

Putty to Destination server with credentials

7

Add CLONEDB database entry in oratab

cat >> /etc/oratab << EOF

CLONEDB:/data/app/oracle/product/19C/dbhome:N

EOF

# Verify ORACLE_SID is available in /etc/oratab file

grep $ORACLE_SID /etc/oratab

8

Add Static server in listener.ora file

cd $ORACLE_HOME/network/admin

vi listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC=

      (GLOBAL_DBNAME = CLONEDB)

      (ORACLE_HOME = /data/app/oracle/product/19C/dbhome)

      (SID_NAME = CLONEDB)

    )

  )

9

Reload listener

lsnrctl reload listener

# Verify Service is registered

lsnrctl status listener |grep $ORACLE_SID

10

Set oracle environment to destination database.

. oraenv → CLONEDB

11

Update tnsnames.ora file with both source and database connection string

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

TESTDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.197)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = TESTDB)

    )

  )

CLONEDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.198)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = CLONEDB)

    )

  )

12

Verify connection string

tail -4 tnsnames.ora

tnsping TESTDB

tnsping CLONEDB

13

Make changes in init.ora to reflect new database name.Replace TESTDB to CLONEDB

cd $ORACLE_HOME/dbs

vi init$ORACLE_SID.ora

DB_NAME=CLONEDB

ESC

:wq!

14

Create all database directories for .

[oracle@stand dbs]$ mkdir -p /data/app/oracle/admin/CLONEDB/adump

[oracle@stand dbs]$ mkdir-p/data/app/oracle/oradata/CLONEDB

[oracle@stand dbs]$ mkdir -p /data/app/oracle/oradata/CLONEDB

[oracle@stand dbs]$ mkdir -p /data/app/oracle/oradata/CLONEDB

[oracle@stand dbs]$ mkdir -p /data/app/oracle

[oracle@stand dbs]$ mkdir -p /data/app/oracle/product/19C/dbhome/dbs/arch

15

Startup database in nomount mode

sqlplus / as sysdba

startup nomount;

exit;

16

Connect to auxiliary instance with rman and start duplicating database

rman target sys/abc123@TESTDB auxiliary sys/abc123@CLONEDB

duplicate target  database to CLONEDB

from active database

SPFILE

parameter_value_convert (‘TESTDB’,’CLONEDB’)

set log_archive_dest_1=’location=/data/app/oracle/product/19C/dbhome/dbs/arch’

NOFILENAMECHECK;

exit;

17

Verify database is up and running

. oraenv → CLONEDB

sqlplus / as sysdba

col db_unique_name format a14

col created format a20

Select name, dbid, db_unique_name, to_char(created,’DD-MON-YY HH24:MI:SS’) as created  from v$database;

Select instance_name, status from v$instance;

exit;

Follow me

Contact us for Training/ Job Support

Caution: Your use of any information or materials on this website is entirely at your own risk. It is provided for educational purposes only. It has been tested internally, however, we do not guarantee that it will work for you. Ensure that you run it in your test environment before using.