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)
| Item | Value |
| Database Name | mydb |
| RAC Instances | mydb1, mydb2 |
| Oracle Version | 19c |
| Backup Type | RMAN 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=mydbmemory_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 statussrvctl 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
- β
RESETLOGSis 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.