Even if you have a complete outage of your system and your database is not registered in a RMAN backup catalog, but having a good backup concept, it is possible to restore your database successfully.

All the information you need for a restore is stored in the controlfiles. So you have to take a look in backuplogs:

Starting backup at 10:27:09–19.10.2009
using channel ORA_DISK1
channel ORA_DISK1: starting full datafile backupset
channel ORA_DISK1: specifying datafile(s) in backupset
including current SPFILE in backupset
including current controlfile in backupset                    <------
.
.
.
channel ORA_DISK1: starting piece 1 at 10:27:11–19.10.2009
channel ORA_DISK1: finished piece 1 at 10:28:26–19.10.2009
piece handle=/home/oracle/Backup/TEST9/full_online_TEST9_0bks69jt1_1 comment=NONE  <--------
channel ORA_DISK1: backup set complete, elapsed time: 00:01:17
Finished backup at 10:28:26–19.10.2009

In my backup concept, I do a manual backup of the spfile and the controlfile at the end of every backup and name it like this, so it`s also easy to find.

Using RMAN it`s possible to start a DUMMY-instance without an existing SPFILE. So first we have to restore the SPFILE:

shell>> export NLS_DATE_FORMAT=”HH24:MI:SS-DD.MM.YYYY”
shell>> rman target /

startup nomount;
restore spfile from '/home/oracle/Backup/TEST9/spfile_TEST9_0eks69o6_1_1';
shutdown immediate;
startup nomount;

So now we have the destination where to restore the controlfile from the spfile and can do the rest:

restore controlfile from '/home/oracle/Backup/TEST9/controlfile_TEST9_0dks69nh1_1';
alter database mount;

Maybe you have done archivelog backups after the full-online-backup, then you can now catalog them to the current controlfile:

catalog start with '/home/oracle/Backup/TEST9/*';

Now you can restore and recover the database:

restore database;
recover database;
alter database open resetlogs;

Of course, you can do all these steps in one single run-block:

shell>> export NLS_DATE_FORMAT=”HH24:MI:SS-DD.MM.YYYY”
shell>> rman target /

run{
startup nomount;
restore spfile from '/home/oracle/Backup/TEST9/spfile_TEST9_0eks69o6_1_1';
shutdown immediate;
startup nomount;
restore controlfile from '/home/oracle/Backup/TEST9/controlfile_TEST9_0dks69nh1_1';
alter database mount;
catalog start with '/home/oracle/Backup/TEST9/*';
restore database;
recover database;
}