Wednesday, February 4, 2015

How to restore an RMAN cold backup on a new server

RMAN

HOW TO RESTORE AN RMAN COLD BACKUP ON A NEW SERVER. ( SAME OS, SAME ORACLE VERSION )


How to restore an RMAN cold backup on a new server. ( same OS, same Oracle version )


You have to restore your database from scratch to a new server with a new Oracle Home, your old database is not available anymore.

I had a similar situation today. A server with hostname X was going to be replaced by another server with the same hostname X.
At the moment I had to restore the database on the new server the old server was not available anymore so the duplicate target database technology was not possible. I had planned downtime of a few hours.


Prior to the shutdown of the old database server I made a cold backup and I installed the same Oracle version on the same OS on the new database server ( requirement ). I had the good luck to have the same filesystem for both datafiles and rman backup pieces ( which were made on disk )



STEP 1 : THE SERVER PARAMETER FILE

I copy passwordfile and server parameter file into the new $ORACLE_HOME/dbs

oracle@myhost ~$ cp spfilePLATINUM.ora $ORACLE_HOME/dbs
oracle@myhost ~$ cp orapwPLATINUM $ORACLE_HOME/dbs


I create an ascii file from the server parameter file and have some adjustements made and validations done ( like user_dump_dest ... )
oracle@myhost dbs$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jul 1 12:31:15 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> create pfile from spfile;

File created.

SQL> exit
Disconnected

oracle@myhost dbs$ ls -ltr
total 40
-rw-r-----  1 oracle oinstall  8385 Sep 11  1998 init.ora
-rw-r--r--  1 oracle oinstall 12920 May  3  2001 initdw.ora
-rw-r-----  1 oracle oinstall  3584 Jul  1 12:30 spfilePLATINUM.ora
-rw-r-----  1 oracle oinstall  1536 Jul  1 12:30 orapwPLATINUM
-rw-r--r--  1 oracle oinstall  1097 Jul  1 12:31 initPLATINUM.ora

oracle@myhost dbs$ vi initPLATINUM.ora -- ( and I adjust the parameters )


STEP 2 : STARTUP NOMOUNT


Startup nomount since I haven' t a control file yet. 

oracle@myhost dbs $ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jul 1 12:33:57 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> create spfile from pfile;

File created.

SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1895825408 bytes
Fixed Size                  2073632 bytes
Variable Size             436210656 bytes
Database Buffers         1442840576 bytes
Redo Buffers               14700544 bytes
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

STEP 3 : RESTORE CONTROL FILES


I connect with RMAN, set the right dbid and restore the controlfiles. 

oracle@myhost dbs$ rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on Wed Jul 1 12:34:56 2009

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

connected to target database: PLATINUM (not mounted)


RMAN> set dbid 706111982;

executing command: SET DBID

RMAN> restore controlfile from '/u01/backup/CT_4bkisua9_1_1';

Starting restore at 01-JUL-09
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=321 devtype=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output filename=/u01/oradata/PLATINUM/control01.ctl
output filename=/u01/oradata/PLATINUM/control02.ctl
output filename=/u01/oradata/PLATINUM/control03.ctl
Finished restore at 01-JUL-09

STEP 4 : MOUNT THE DATABASE


Once the control files are restored I can mount the database.

RMAN> sql "alter database mount";

sql statement: alter database mount
released channel: ORA_DISK_1

STEP 5 : VERIFICATION AVAILABILITY OF BACKUP


Now I validate whether the backups known in the controlfile are there. remember that I restored the lastest backups to exactly the same location.
I use the rman below RMAN command' s

RMAN > list backup summary; --- which backups should have been made and are logically known in the control file ? 
RMAN > list backup TAG='xyz' --- Is this the backup i would like to restore ?
RMAN > crosscheck backup TAG='xyz' --- is this backup available ?


RMAN > list backup summary;
output not posted
RMAN > list backup TAG='TAG20090630T154910'; 
List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

137     Full    115.50M    DISK        00:00:48     30-JUN-09
        BP Key: 137   Status: AVAILABLE  Compressed: YES  Tag: TAG20090630T154910
        Piece Name: /u01/backup/db_49kisu3m_1_1
  List of Datafiles in backup set 137
  File LV Type Ckp SCN    Ckp Time  Name
  ---- — ---- ---------- --------- ----
  1       Full 2108954    30-JUN-09 /u01/oradata/PLATINUM/system01.dbf
  2       Full 2108954    30-JUN-09 /u01/oradata/PLATINUM/undotbs01.dbf
  3       Full 2108954    30-JUN-09 /u01/oradata/PLATINUM/sysaux01.dbf
  4       Full 2108954    30-JUN-09 /u01/oradata/PLATINUM/users01.dbf
  5       Full 2108954    30-JUN-09 /u01/oradata/PLATINUM/silver.dbf
  6       Full 2108954    30-JUN-09 /u01/oradata/PLATINUM/gold.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

138     Full    1.06M      DISK        00:00:01     30-JUN-09        
BP Key: 138   Status: AVAILABLE  Compressed: YES 
Tag: TAG20090630T154910         Piece Name: /u01/backup/db_4akisu5e_1_1  
Control File Included: Ckp SCN: 2108954      Ckp time: 30-JUN-09  
SPFILE Included: Modification time: 30-JUN-09
RMAN > crosscheck backup TAG='TAG20090630T154910';
output not posted

STEP 6 : RESTORE THE BACKUP


I restore the lastest backup. Since it concerns a cold backup I do not have to recover it, it is consistent.

RMAN> restore database from TAG='TAG20090630T154910' 
Starting restore at 01-JUL-09 
using channel ORA_DISK_1 channel ORA_DISK_1:
starting datafile backupset restore channel ORA_DISK_1:
specifying datafile(s) to restore from backup set 
restoring datafile 00001 to /u01/oradata/PLATINUM/system01.dbf 
restoring datafile 00002 to /u01/oradata/PLATINUM/undotbs01.dbf 
restoring datafile 00003 to /u01/oradata/PLATINUM/sysaux01.dbf 
restoring datafile 00004 to /u01/oradata/PLATINUM/users01.dbf 
restoring datafile 00005 to /u01/oradata/PLATINUM/silver.dbf 
restoring datafile 00006 to /u01/oradata/PLATINUM/gold.dbf 
channel ORA_DISK_1: reading from backup piece /u01/backup/db_49kisu3m_1_1 channel
ORA_DISK_1: restored backup piece 1 piece handle=/u01/backup/db_49kisu3m_1_1 tag=TAG20090630T154910 
channel ORA_DISK_1: restore complete, elapsed time: 00:00:56 
Finished restore at 01-JUL-09

STEP 7 : OPEN THE DATABSE WITH RESETLOGS


RMAN> sql "alter database open resetlogs";
sql statement: alter database open resetlogs

STEP 8 :  MANAGE LISTENER.ORA, TNSNAMES.ORA AND PASSWORDFILE


I moved the tnsnames.ora and listener into the new $ORACLE_HOME/network/admin


oracle@myhost ~ $ cp tnsnames.ora $ORACLE_HOME/network/admin
oracle@myhost ~ $ cp listener.ora $ORACLE_HOME/network/admin
oracle@myhost ~ $ cp orapwPLATINUM $ORACLE_HOME/dbs

No comments: