Oracle RAC 19c: Restore Control Files and SPFILE Using RMAN

Scenario: Control Files and SPFILE Lost in Oracle RAC

This blog explains how to recover an Oracle 19c RAC database when:

  • โŒ All Control Files are lost
  • โŒ SPFILE is lost
  • โœ… Datafiles are safe
  • โœ… RMAN autobackup is available

๐Ÿ‘‰ Storage type: File System (NOT ASM)

Environment (Example)

ItemValue
Database Namemydb
RAC Instancesmydb1, mydb2
Oracle Version19c
Backup TypeRMAN Autobackup
Temporary Path/tmp
DB Files Path/oradata/mydb/


Recovery Objective

โœ” Restore SPFILE

โœ” Restore Control Files

โœ” Recover database

โœ” Start all RAC instances

STEP-BY-STEP EASY RECOVERY

STEP 1: Stop All RAC Instances

srvctl stop database -d mydb -o abort

Check status:

srvctl status database -d mydb

๐Ÿ“Œ Database should show STOPPED on all nodes.


STEP 2: Create a Temporary PFILE

Create a simple PFILE:

vi /tmp/initmydb.ora

Add minimum required parameters:

db_name=mydb
memory_target=2G

Save and exit.


STEP 3: Start One Instance in NOMOUNT

Login to SQL*Plus on any one node:

startup nomount pfile='/tmp/initmydb.ora';

๐Ÿ“Œ Only one instance should be started.

STEP 4: Restore SPFILE from RMAN Autobackup

Connect RMAN:

rman target /
set dbid=3132869757;
restore spfile to '/tmp/spfile_mydb.ora' from autobackup;

STEP 5: Restart Database Using SPFILE

Shutdown database after that startup at nomount state

shutdown immediate;
Startup nomount;

STEP 6: Restore Control Files and Recover Database

-- Restore control files:
restore controlfile from autobackup;
-- Mount database:
alter database mount;
-- Recover database:
recover database;
-- Open database:
alter database open resetlogs;

STEP 7: Copy SPFILE to Shared Location

-- Copy SPFILE to shared directory (used by RAC):
cp /tmp/spfile_mydb.ora /oradata/mydb/
-- Update RAC configuration:
srvctl modify database -d mydb -spfile /oradata/mydb/spfile_mydb.ora
-- Verify:
srvctl config database -d mydb

STEP 8: Start Remaining RAC Instance

-- Check current status
srvctl status database -d mydb
-- Start second instance:
srvctl start instance -d mydb -i mydb2
--Final check:
srvctl status database -d mydb


โœ… Both RAC instances are RUNNING.


Key Notes (Very Important)

  • โœ” Restore SPFILE first, then control files
  • โœ” Use only one instance during recovery
  • โœ” RESETLOGS is mandatory
  • โœ” SPFILE must be on shared storage
  • โœ” Datafiles were not restored (already intact)

Conclusion

This is a real-time Oracle RAC recovery scenario used in production.
With RMAN autobackup, even complete loss of control files and SPFILE can be recovered safely.

This entry was posted in Oracle on by .
Unknown's avatar

About SandeepSingh

Hi, I am working in IT industry with having more than 15 year of experience, worked as an Oracle DBA with a Company and handling different databases like Oracle, SQL Server , DB2 etc Worked as a Development and Database Administrator.

Leave a Reply