Friday, February 20, 2009

RMAN incremental COLD Backup and Restore

Here's a brief overview of how to do a cold backup with RMAN and restore/duplicate it.


1. RMAN FULL COLD Backup.

rman target / catalog rman/rman@prman
run
{
STARTUP FORCE DBA;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
BACKUP INCREMENTAL LEVEL 0 DATABASE include current controlfile;
ALTER DATABASE OPEN;
}


2. RMAN Incremental COLD Backup.

rman target / catalog rman/rman@prman
run
{
STARTUP FORCE DBA;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
BACKUP INCREMENTAL LEVEL 1 DATABASE include current controlfile;
ALTER DATABASE OPEN;
}




3. RMAN Duplicate to restore the cold backup to a different server with a different Name.

rman target sys/password@ catalog rman/rman@rman
RMAN> connect auxiliary /
run
{
ALLOCATE AUXILIARY CHANNEL ch00 TYPE 'SBT_TAPE';
SEND 'NB_ORA_SERV=,NB_ORA_CLIENT=';
set newname for datafile 1 to '/uXX/oradata//system01.dbf';
set newname for datafile 2 to '/uXX/oradata//undotbs01.dbf';
set newname for datafile 3 to '/uXX/oradata//sysaux01.dbf';
set newname for datafile 4 to '/uXX/oradata//users01.dbf';
set newname for tempfile 1 to '/uXX/oradata//temp01.dbf';
duplicate target database to
LOGFILE
GROUP 1 ('/uXX/oradata//redo01a.log') SIZE 50M REUSE,
GROUP 2 ('/uXX/oradata//redo02a.log') SIZE 50M REUSE,
GROUP 3 ('/uXX/oradata//redo03a.log') SIZE 50M REUSE;
release channel ch00;
}


RMAN Duplicate for a cold backup will automatically use "Recover NOREDO", since it knows that its a cold backup and hence does not look for online-redo-logs.


4. Restore the database to the same server.

run
{
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
SEND 'NB_ORA_SERV=,NB_ORA_CLIENT=';
#set until time "to_date('18-JUN-08 11:56:38','DD-MON-YY HH24:MI:SS')";
restore controlfile;
sql 'alter database mount';
restore database;
recover database noredo; ==> This is to tell RMAN that its a cold backup restore
and do not look for online-redo-logs.
}