Tuesday, March 5, 2013

Quick notes on restoring DB to a new host

Quick Notes on Restoring a DB to another host

Just had to do this, so decided to put it here where I know I'll be able to find it.

I had to copy  a V11.2.0.2 database from one linux box to another host, and the new version was 11.2.0.3.

Rman can do this with no issue, but you need to run the upgrade script after the restore. 

The databases were test, and were running in no archive log mode. 

This is what I did.

Shutdown the source database and restart it in mount mode.

Run rman and connect to the target, set the config and backup the controlfile. These are rough notes, you should be able to fill in the gaps.

shutdown immediate
startup mount
rman
connect target /

show all;

configure controlfile autobackup on;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u04/oraexport/orabackup/nmsmopdv_rman_%F';

configure channel device type disk format '/u04/oraexport/orabackup/nmsmopdv_rman_%U';

backup current controlfile;

backup database;

This will create the backup files in the /u04/oraexport/orabackup/ directory

scp the files to the target host. Preferably the same location, but if it is a different location it doesn't matter, there is a command to fix this.

While they are being scp'd, create the new database directories on the target host.

mkdir /u01/oradata/NMSMOPDV
mkdir /u01/app/oracle/admin/NMSMOPDV
mkdir /u02/oradata/NMSMOPDV
mkdir /u04/oradata/NMSMOPDV
mkdir /u05/oradata/NMSMOPDV

Create an initialisation parameter file in the $ORAC:LE_HOME/dbs directory with the relevant file and directory names (control file etc), and create an entry in the oratab for the new database.

On the target, run RMAN, restore the controlfile and then the database. Make sure you set the new database environment with . oraenv

rman
connect target /
startup nomount
restore controlfile from /u04/oraexport/orabackup/nmsmopdv_rman_c-3406859642-20130306-00';


You should see some messages, including these:

output file name=/u01/oradata/NMSMOPTS/NMSMOPTS_control01.ctl
output file name=/u02/oradata/NMSMOPTS/NMSMOPTS_control02.ctl


Mount the database then restore it

alter database mount
restore database;

If you see this:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 03/06/2013 10:19:05
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore

it means the files haven't been found by rman. You can just do this and reply "yes" at the prompt:

catalog start with '/u04/oraexport';


You should see this:

List of Cataloged Files
=======================
File Name: /u04/oraexport/nmsmopts_rman_c-3406859642-20130306-00
File Name: /u04/oraexport/nmsmopts_rman_c-3406859642-20130306-01
File Name: /u04/oraexport/nmsmopts_rman_03o3r6e3_1_1

and can run the restore again:

RMAN> restore database;

Starting restore at 06-MAR-13
using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u05/oradata/NMSMOPTS/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u05/oradata/NMSMOPTS/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u05/oradata/NMSMOPTS/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u05/oradata/NMSMOPTS/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u05/oradata/NMSMOPTS/NMSMOPTS_sams_op_data01.dbf
channel ORA_DISK_1: reading from backup piece /u04/oraexport/nmsmopts_rman_03o3r6e3_1_1
channel ORA_DISK_1: piece handle=/u04/oraexport/nmsmopts_rman_03o3r6e3_1_1 tag=TAG20130306T093707
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:26
Finished restore at 06-MAR-13

You should now be able to restart the database.

Because I was going from V11.2.0.2 to V11.2.0.3, I needed to do this:

SQL> startup upgrade;
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd

then it restarted normally. Do any tidying like creating an spfile.