Skip to Content

I did this experiment where I took backup with BRTOOLS + RMAN and use it build a new system where restore and recovery done by plain RMAN Tool.

I didn’t find any document for this on portal , so I am creating this doc for those who wants to do this experiment..

If anyone knows the doc from SAP on this topics please let me know…

Take a backup on Source server / DB


Init profile name in dbs: BR_RMAN_initMID.sap

IMP parameters:

backup_mode = full

backup_dev_type = disk

disk_copy_cmd = rman_set

Backup Location: /nasbackup/MID_BR_RMAN_FULL

Backup command:

brbackup -p BR_RMAN_initMID.sap -d disk -t online -m full -k yes -e 0 -l E

>>>>>>>>> Backup Part Ends Here <<<<<<<<<<<<<<<<

On Target Server

Please use a test server for doing this experiment.

Scenario: Different Host, Different DB_NAME, can have Different datafile location, homogeneous system (same OS Family)

Source Info:

DB_NAME=MID

Datafile path : /oracle/MID/sapdata1-4

Target Info:

DB_NAME=T01

Datafile path : /oracle/T01/sapdata1-4  (we can have anything here, as we are using RMAN for restore.. its easy to do it)

Step 1) IF you old test database on server, drop that test database including the datafiles and content.

Step 2) Note that at first we have to restore / recover db as is (with same old db_name=MID but different paths) then we change database name to make it T01.. read this line couple of times..

Important parameters in initfile:

db_name = MID

control_files = (/oracle/T01/origlogA/cntrl/cntrlMID.dbf, /oracle/T01/origlogB/cntrl/cntrlMID.dbf, /oracle/T01/sapdata1/cntrl/cntrlMID.dbf)

background_dump_dest = /oracle/T01/saptrace/background

user_dump_dest       = /oracle/T01/saptrace/usertrace

core_dump_dest       = /oracle/T01/saptrace/background

log_archive_dest     = /oracle/T01/oraarch/T01arch

Step 2: Make thesource db backup available to target system

Here our backup is copied on : /oracle/T01/sapdata8/MID_BR_RMAN_FULL

Note that I use sapdata8 as it was empty.. none of my datafile is going to be restored on sapdata8.. You can copy it anywhere as per availability.


Step 3: Restore Process

Start DB in NOMOUNT with changed initMID.ora or initT01.ora (SID in initfile or ORACLE_SID env parameter is not involved yet in this)

SQL > startup nomount;

You can provide pfile path also, here I am sure that I have only one initMID.ora file and that is the correct one. (Still my ORACLE_SID is MID so this command will choose initMID.ora)

Restore Control file:

BRBACKUP takes the SnapShot backup if controfile so just copy the controlfile from backup to controlfile location.

cp -pv cntrlMID.dbf /oracle/T01/origlogA/cntrl/

cp -pv cntrlMID.dbf /oracle/T01/origlogB/cntrl/

cp -pv cntrlMID.dbf /oracle/T01/sapdata1/cntrl/

Then Mount DB

SQL > alter database mount;

Note: As we copied source controlfile, it will have all backup related path info..so while restoring it will keep on looking for all those backup source path and archvielog paths.. At this point controlfile do not have any info of new backup location.

So, I choose to clear all those stuff from controlfile and catalog new location where backup is available.

RMAN> list backup;   shows backup from source.. Clean it up

RMAN> list archivelog all;

RMAN> crosscheck backup

RMAN> delete expired backup;

RMAN> delete expired archivelog all;

Now add new info to control file for copied backup and archives.

RMAN> catalog start with ‘/oracle/T01/sapdata8/MID_BR_RMAN_FULL’;

Make sure that you have desired directory structure created.

Restore Script:

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

allocate channel c4 type disk;

SET NEWNAME FOR DATAFILE 1  to ‘/oracle/T01/sapdata1/system_1/system.data1’ ;

SET NEWNAME FOR DATAFILE 2  to ‘/oracle/T01/sapdata1/undo_1/undo.data1’ ;

SET NEWNAME FOR DATAFILE 3  to ‘/oracle/T01/sapdata1/sysaux_1/sysaux.data1’ ;

SET NEWNAME FOR DATAFILE 4  to ‘/oracle/T01/sapdata2/sr3_1/sr3.data1’ ;

SET NEWNAME FOR DATAFILE 5  to ‘/oracle/T01/sapdata2/sr3_2/sr3.data2’ ;

SET NEWNAME FOR DATAFILE 6  to ‘/oracle/T01/sapdata2/sr3_3/sr3.data3’ ;

SET NEWNAME FOR DATAFILE 7  to ‘/oracle/T01/sapdata2/sr3_4/sr3.data4’ ;

SET NEWNAME FOR DATAFILE 8  to ‘/oracle/T01/sapdata3/sr3700_1/sr3700.data1’ ;

SET NEWNAME FOR DATAFILE 9  to ‘/oracle/T01/sapdata3/sr3700_2/sr3700.data2’ ;

SET NEWNAME FOR DATAFILE 10  to ‘/oracle/T01/sapdata3/sr3700_3/sr3700.data3’ ;

SET NEWNAME FOR DATAFILE 11  to ‘/oracle/T01/sapdata3/sr3700_4/sr3700.data4’ ;

SET NEWNAME FOR DATAFILE 12  to ‘/oracle/T01/sapdata4/sr3usr_1/sr3usr.data1’ ;

SET NEWNAME FOR DATAFILE 13  to ‘/oracle/T01/sapdata4/sr3db_1/sr3db.data1’ ;

SET NEWNAME FOR DATAFILE 14  to ‘/oracle/T01/sapdata4/sr3db_2/sr3db.data2’ ;

SET NEWNAME FOR DATAFILE 15  to ‘/oracle/T01/sapdata4/sr3db_3/sr3db.data3’ ;

SET NEWNAME FOR DATAFILE 16  to ‘/oracle/T01/sapdata2/sr3_5/sr3.data5’ ;

SET NEWNAME FOR DATAFILE 17  to ‘/oracle/T01/sapdata2/sr3_6/sr3.data6’ ;

SET NEWNAME FOR DATAFILE 18  to ‘/oracle/T01/sapdata2/sr3_7/sr3.data7’ ;

SET NEWNAME FOR DATAFILE 19  to ‘/oracle/T01/sapdata3/sr3700_5/sr3700.data5’ ;

SET NEWNAME FOR DATAFILE 20  to ‘/oracle/T01/sapdata3/sr3700_6/sr3700.data6’ ;

SET NEWNAME FOR DATAFILE 21  to ‘/oracle/T01/sapdata3/sr3700_7/sr3700.data7’ ;

SET NEWNAME FOR DATAFILE 22  to ‘/oracle/T01/sapdata3/sr3700_8/sr3700.data8’ ;

SET NEWNAME FOR DATAFILE 23  to ‘/oracle/T01/sapdata1/system_2/system.data2’ ;

SET NEWNAME FOR DATAFILE 24  to ‘/oracle/T01/sapdata3/sr3700_9/sr3700.data9’ ;

SET NEWNAME FOR DATAFILE 25  to ‘/oracle/T01/sapdata3/sr3700_10/sr3700.data10’ ;

SET NEWNAME FOR DATAFILE 26  to ‘/oracle/T01/sapdata3/sr3700_11/sr3700.data11’ ;

SET NEWNAME FOR DATAFILE 27  to ‘/oracle/T01/sapdata3/sr3700_12/sr3700.data12’ ;

SET NEWNAME FOR DATAFILE 28  to ‘/oracle/T01/sapdata3/sr3700_13/sr3700.data13’ ;

SET NEWNAME FOR DATAFILE 29  to ‘/oracle/T01/sapdata3/sr3700_14/sr3700.data14’ ;

SET NEWNAME FOR DATAFILE 30  to ‘/oracle/T01/sapdata2/sr3_8/sr3.data8’ ;

SET NEWNAME FOR DATAFILE 31  to ‘/oracle/T01/sapdata2/sr3_9/sr3.data9’ ;

SET NEWNAME FOR DATAFILE 32  to ‘/oracle/T01/sapdata2/sr3_10/sr3.data10’ ;

SET NEWNAME FOR DATAFILE 33  to ‘/oracle/T01/sapdata3/sr3700_15/sr3700.data15’ ;

SET NEWNAME FOR DATAFILE 34  to ‘/oracle/T01/sapdata3/sr3700_16/sr3700.data16’ ;

SET NEWNAME FOR DATAFILE 35  to ‘/oracle/T01/sapdata3/sr3700_17/sr3700.data17’ ;

SET NEWNAME FOR DATAFILE 36  to ‘/oracle/T01/sapdata3/sr3700_18/sr3700.data18’ ;

SET NEWNAME FOR TEMPFILE 1  to ‘/oracle/MID/sapdata1/temp_1/temp.data1’ ;

set until sequence 5325 thread 1;

restore database;

switch datafile all;

}

Note that: I am doing Point time Recovery

Set until clause may not be neccesary while doing RESTORE, but still I use it.

Step 4) Recover the Database

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

allocate channel c4 type disk;

set until sequence 5325 thread 1;

recover database;

}

Step 5 ) Rename Online Redolog files


alter database rename file ‘/oracle/MID/origlogA/log_g11m1.dbf’ to ‘/oracle/T01/origlogA/log_g11m1.dbf’;

alter database rename file ‘/oracle/MID/mirrlogA/log_g11m2.dbf’ to ‘/oracle/T01/mirrlogA/log_g11m2.dbf’;

alter database rename file ‘/oracle/MID/origlogB/log_g12m1.dbf’ to ‘/oracle/T01/origlogB/log_g12m1.dbf’;

alter database rename file ‘/oracle/MID/mirrlogB/log_g12m2.dbf’ to ‘/oracle/T01/mirrlogB/log_g12m2.dbf’;

alter database rename file ‘/oracle/MID/origlogA/log_g13m1.dbf’ to ‘/oracle/T01/origlogA/log_g13m1.dbf’;

alter database rename file ‘/oracle/MID/mirrlogA/log_g13m2.dbf’ to ‘/oracle/T01/mirrlogA/log_g13m2.dbf’;

alter database rename file ‘/oracle/MID/origlogB/log_g14m1.dbf’ to ‘/oracle/T01/origlogB/log_g14m1.dbf’;

alter database rename file ‘/oracle/MID/mirrlogB/log_g14m2.dbf’ to ‘/oracle/T01/mirrlogB/log_g14m2.dbf’;

Step 6) Open DB with RESETLOGS


RMAN > alter database open resetlogs.

Step 7) Create a new temp tablespace, make it default and drop old one.


SQL> create temporary tablespace PSAPTEMP2 tempfile ‘/oracle/T01/sapdata1/temp_1/temp.data1’ size 4096m;

SQL> alter database default temporary tablespace PSAPTEMP2;

SQL> drop tablespace PSAPTEMP including contents and datafiles;

Now database is OPEN in R/W mode (as normal DB).. As of now DB_name is MID and ORACLE_SID is T01

Now we have to change the db name.. there are two methods to do this..

Step 7) Change DB Name

You can Oracle nid tool to chnage database name, Here I am doing it by creating controlfile.

considering your db in open now.

Take a controlfile backup to trace

SQL> alter database backup controlfile to trace as ‘/oracle/T01/manual_ctl.sql’;

Then Shutdown database

SQL>shut immediate;

Now DB is down, go to each controlfile location and move controlfile to new name..

So that in next step it can create new controlfile for T01.

krqat01:orat01 76> pwd

/oracle/T01/origlogB/cntrl

krqat01:orat01 77> ls

cntrlMID.dbf

krqat01:orat01 78> mv cntrlMID.dbf cntrlMID.dbf.old

krqat01:orat01 79> ls

cntrlMID.dbf.old


Now edit the controlfile trace textfile. Here we will choose second option.

  1. i.e. RESETLOG

edit file to have change like this.

———————————————————————————————————–

CREATE CONTROLFILE SET DATABASE “T01” RESETLOGS  ARCHIVELOG

    MAXLOGFILES 255

    MAXLOGMEMBERS 3

    MAXDATAFILES 254

    MAXINSTANCES 50

    MAXLOGHISTORY 1168

.

..

‘/oracle/T01/sapdata3/sr3700_17/sr3700.data17’,

‘/oracle/T01/sapdata3/sr3700_18/sr3700.data18’

CHARACTER SET UTF8

;

————————————————————————————————————-


Note that Change SET keyword from REUSE.

Note : Now we have to change db_name in initT01.ora to new SID i.e db_name=T01


Note: We have removed the “startup nomount” from edited controlfile trace file.


So, now start instance in nomount mode

SQL> startup nomount;

SQL> @manual_ctl.sql

Control file created.

SQL> alter database open resetlogs;

Database altered.

SQL> show parameter db_name

NAME                                 TYPE        VALUE

———————————— ———– ——————————

db_name                              string      T01


>>>>>>>>>>>>>>> Doc Ends Here <<<<<<<<<<<<<

To report this post you need to login first.

3 Comments

You must be Logged on to comment or reply to a post.

  1. Stefan Koehler

    Why making it so complex, if you are already using native RMAN?

    RMAN DUPLICATE make it such easier and automatic. By the way there is a tool called “nid” to change the DB name or DBID without all of that control file stuff.

    (0) 
    1. sunil chavan Post author

      Thank you very much for your reply…

      I know i am making it more complex and that’s what I was trying to do.

      Yes, It can be very much simpler thing with RMAN duplicate and nid. BUT I wanted to do with more complex way so that I can have more control over the procedure. I may use the simpler method when I will do it Real Time Scenario.

      I start document header with “Experiment’ bcoz I intentionally wanted to take backup from BRTool+Rman and restore from plain RMAN.. Theoretically I knew that it will work, but I wanted to do it and document it..

      anyways.. Thanks for your comment.. Please keep watch on my further docs and suggest me improvisation.

      (0) 
  2. Premraj Furtado

    Dear Sunil…

    Thanks for sharing the information about rman backups and restoartion for SAP Databases…!!

    We are trying the same experiment but RMAN backups are configured on TAPE using Netbackup

    backup_mode = full

    backup_dev_type = rman_util

    tape_copy_cmd = rman

    Backup policy of SAP type at Backup server

    Backups are successfully completed.

    While restoration , I am not able to use same backup policy in RMAN without BRTOOL ( like it is possible if DISK level backup )So I have to use brrestore to restore the RMAN backups taken on TAPE.

    Question here is, How do I use “SET NEWNAME” commands while doing the restoration of RMAN TAPE Backups using BRRESTORE command?

    .

    init.sap file can have variuos rman related parameters like – channels , maxbackuppiece etc , do we have any option or workaround by which “SET NEWNAME” can be used ?

    (0) 

Leave a Reply