Restoring Rman backup on a different node with different backup directory structures and different database directory structures .

Oracle Server – Enterprise Edition – Version: 10.1.0.2 to 11.1.0.8
Information in this document applies to any platform.
Goal

++ Rman backup of database is done on NODE 1.
++ The database has to be has to be restored from the Rman backup on NODE 2.
++ The directory structures for the backups and the database files are different on NODE 2.
++ The Rman backups have to put in new directory structure on NODE 2 unlike as they were on NODE 1.
++ Also the database has to be restored to a different directory structure on NODE 2.
Solution

ASSUMPTIONS
———————–
++ The backups on NODE 1 are done to ‘/node1/database/backup’
++ The database files on NODE 1 are in ‘/node1/database/prod’
++ The backups on NODE 2 will be in location ‘/node2/database/backup’
++ The database files on NODE 2 will be restored to ‘/node2/database/prod

Steps to acheive the goal:

1) Connect to the target database using rman and backup the database —> ON NODE 1
$ rman target /

Recovery Manager: Release 10.2.0.1.0 – Production on Tue Feb 13 00:29:33 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORA10G (DBID=3932056136)

RMAN> backup database plus archivelog;

Starting backup at 13-FEB-07
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=143 recid=109 stamp=614392105
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_annnn_TAG20070213T002825_2x21kbds
_.bkp tag=TAG20070213T002825 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 13-FEB-07

Starting backup at 13-FEB-07
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00003 name=/node1/database/prod/sysaux01.dbf
input datafile fno=00001 name=/node1/database/prod/system01.dbf
input datafile fno=00002 name=/node1/database/prod/undotbs01.dbf
input datafile fno=00004 name=/node1/database/prod/users01.dbf
input datafile fno=00005 name=/node1/database/prod/1.dbf
input datafile fno=00006 name=/node1/database/prod/sysaux02.dbf
input datafile fno=00007 name=/node1/database/prod/undotbs02.dbf
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_nnndf_TAG20070213T002827_2x21kd12
_.bkp tag=TAG20070213T002827 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 13-FEB-07

Starting backup at 13-FEB-07
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=144 recid=110 stamp=614392165
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_annnn_TAG20070213T002925_2x21m6ty
_.bkp tag=TAG20070213T002925 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 13-FEB-07

Starting Control File and SPFILE Autobackup at 13-FEB-07
piece handle=/u01/oracle/product/ora10g/dbs/c-3932056136-20070213-02 comment=NONE
Finished Control File and SPFILE Autobackup at 13-FEB-07

RMAN> exit

2) Move the following files to the NODE 2:

+ The database backup pieces to location ‘/node2/database/backup’
+ Controlfile backup piece to the location ‘/node2/database/backup’
+ The parameter file i.e init.ora file to the default location i.e $ORACLE_HOME/dbs

3) Edit the PFILE on NODE 2 to change the environment specific parameters like .
user_dump_dest =
background_dump_dest =
control_files =

4) Once the PFILE is suitably modified invoke Rman on the NODE 2 after setting the Oracle environment variables and start the database in nomount mode:

[oracle@test-br test]$ export ORACLE_HOME=/u01/oracle/product/ora10g
[oracle@test-br test]$ export ORACLE_SID=ora10g
[oracle@test-br test]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@test-br test]$ rman target /
Recovery Manager: Release 10.2.0.1.0 – Production on Tue Feb 13 00:36:55 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database (not started)
RMAN> startup nomount
Oracle instance started
Total System Global Area 205520896 bytes
Fixed Size 1218508 bytes
Variable Size 75499572 bytes
Database Buffers 121634816 bytes
Redo Buffers 7168000 bytes

5) Restore the controlfile from the backup piece.
RMAN> restore controlfile from ‘/node2/database/backup/c-3932056136-20070213-02’;
Starting restore at 13-FEB-07
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete,
elapsed time: 00:00:02
output filename=/node2/database/prod/control01.ctl
Finished restore at 13-FEB-07

6) Mount the database
RMAN > alter database mount

7) Now catalog the backup pieces that were shipped from NODE 1

RMAN> catalog backuppiece ‘/node2/database/backup/o1_mf_annnn_TAG20070213T002925_2x21m6ty_.bkp’;

RMAN> catalog backuppiece ‘/node2/database/backup/o1_mf_annnn_TAG20070213T002825_2x21kbds_.bkp’;

RMAN> catalog backuppiece ‘/node2/database/backup/o1_mf_nnndf_TAG20070213T002827_2x21kd12_.bkp’;

This feature of cataloging backup pieces is available from ORACLE 10g versions. Prior to Oracle 10g we were not able to catalog the backup pieces. For more information on cataloging options refer the metalink note 470463.1

8) Get to know the last sequence available in the archivelog backup using the following command.This will help us in recovering the database till that archivelog.

RMAN > list backup of archivelog all;

Let us assume the last sequence of last archivelog in the backup is 50.

9) Rename the Redologfiles,so that they can be created in new locations when opened the database is opened in resetlogs

SQL> alter database rename file ‘/node1/database/prod/redo01.log’ to ‘/node2/database/prod/redo01.log’;
……
……
……

10) Now restore the datafiles to new locations and recover. Since we are recovering the database here till the archivelog sequence 50 the sequence number in the SET UNTIL SEQUENCE clause should be 50 (+1)

RMAN> run
{
set until sequence 51;
set newname for datafile 1 to ‘/node2/database/prod/sys01.dbf’;
set newname for datafile 2 to ‘/node2/database/prod/undotbs01.dbf’;
set newname for datafile 3 to ‘/node2/database/prod/sysaux01.dbf’;
set newname for datafile 4 to ‘/node2/database/prod/users01.dbf’;
set newname for datafile 5 to ‘/node2/database/prod/1.dbf’;
set newname for datafile 6 to ‘/node2/database/prod/sysaux02.dbf’;
set newname for datafile 7 to ‘/node2/database/prod/undotbs02.dbf’;
restore database;
switch datafile all;
recover database;
alter database open resetlogs;
}

Advertisements

4 Responses

  1. Hi, Maxwell:

    My boss has me do RMAN database backup in one server, then restore it in another server. I like your

    article, “Restoring Rman backup on a different node with different backup directory structures and

    different database directory structures” at

    https://maxwellmiranda.wordpress.com/2010/01/07/restoring-rman-backup-on-a-different-node-with-differen

    t-backup-directory-structures-and-different-database-directory-structures/

    I have some questions when I follow your steps:

    1. Should I do your step 4) to step 10) in NODE2? If so, what database should I log in, unless there

    has already been a database in NODE2 before I restore the database in NODE1? Should I first create a

    database in NODE2 before I restore the backup files?

    2. in your step 2), Move the following files to the NODE 2: the parameter file i.e init.ora file to

    the default location i.e $ORACLE_HOME/dbs. Is the “init.ora file” my “init.ora.919201081531” in NODE1?

    3. in your step 3), What is the “PFILE”? Is it my “init.ora.7172010153025” in NODE2 or my

    “init.ora.919201081531” from NODE1? In my init.ora file there is only control_files parameter.

    4. What is the database look like in NODE2 after I restore the bacukup files? Will the database in

    NODe2 be same with the database in NODE1?

    I guess you must be busy, but I hope I can hear from you soon.
    Thank you very much.
    Sincerely,

    Fenying

    • 1) you are restoring the database from node 1 to node 2. the database name has to be same….there is no need to create a database on node 2…you just have to start the instance…..remember that if you set the DBID, then it has to be same as the database id on node 1.

      2)yes the init ora default location is $oracle_home/dbs

      3) you are correct..mode the init ora from node 1 to node 2

      4) the database on node 2 will be exactly same as node 1….as it is restored from the backup of node 1

  2. Hi,

    The article been of great use .

    I am using rman catalog. I have some doubts.

    I am trying to create clone of my production DB.

    Once I do the restore recovery on Node2 , this will have the same DBID ? . If I register this test DB on catalog there will be two databases with the same DBID. Does it cause any problem ?

    Your advice highly appreciated.

    Maliyackal

    • YOu cannot register two databases with the same DBID…you can use a oracle provided NID utility to change the DBID of the clone database.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: