Oracle RAC Cold Backup Using RMAN — Step by Step
A complete walkthrough of taking a cold (offline) backup on an Oracle RAC cluster using RMAN. Covers shutdown, mount state, compressed backupset, controlfile copy, SPFILE backup, and pfile creation.
Overview
A cold backup (offline backup) means backing up Oracle database files while the database is in MOUNT state — not open to users. This guarantees data consistency since no transactions are running during the backup.
In a RAC (Real Application Clusters) environment, you shut down all instances but keep one instance in mount mode to perform the RMAN backup.
Environment
- Oracle RAC — 6-node cluster
- NFS mount for backup storage (verify sufficient space with
df -hbeforehand) - RMAN backup utility
- OS: RHEL / HP-UX
Step 1 — Check Available Space
Before starting, verify the NFS backup mount has sufficient free space.
df -h
# Confirm NFS backup location is mounted and has enough space
# Example: 15T total, 8.8T free is healthy for this operationStep 2 — Create Backup Directory
# Create working directory on local node
mkdir -p /tmp/fmo_coldbkp
chmod 777 /tmp/fmo_coldbkp
cd /tmp/fmo_coldbkpCreate this directory on the node where you will run RMAN from.
Step 3 — Shutdown the Database
Switch to the target database and perform a clean shutdown.
# Connect as SYSDBA
sqlplus / as sysdbaSHUTDOWN IMMEDIATE;
-- Bring to mount state (files closed, not open)
STARTUP MOUNT;
EXIT;Step 4 — Stop All Instances, Start One in Mount
In RAC, stop the entire database cluster, then start just one instance in mount mode for RMAN.
# Stop all RAC instances
srvctl stop database -d PRODDB -f
# Start only node3 instance in MOUNT mode
srvctl start instance -d PRODDB -i PRODDB3 -o mountVerify instance status — only one should be running:
# Expected output:
Instance PRODDB1 is not running on node1
Instance PRODDB2 is not running on node2
Instance PRODDB3 is running on node3 ← backup node
Instance PRODDB4 is not running on node4
Instance PRODDB5 is not running on node5
Instance PRODDB6 is not running on node6Only one instance in mount state is sufficient for RMAN to access all datafiles in a RAC cluster via shared storage (ASM).
Step 5 — Connect to RMAN
rman target /Step 6 — Backup the Full Database (Compressed)
Take a compressed backupset of all datafiles. Compressed backupsets significantly reduce storage usage.
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE
FORMAT '/oracle/backup/FMO_COLD_BKP/%u'
TAG 'FRESHDB';RMAN will process all tablespaces — SYSTEM, SYSAUX, TOOLS, and all UNDO tablespaces (one per RAC instance):
Starting backup at 25-JUL-2022
allocated channel: ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
input datafile file number=00001 name=+PRODDB_DATA/DATAFILE/system.dbf
input datafile file number=00002 name=+PRODDB_DATA/DATAFILE/sysaux.dbf
input datafile file number=00003 name=+PRODDB_DATA/DATAFILE/sys_undots.dbf
input datafile file number=00004 name=+PRODDB_DATA/DATAFILE/tools.dbf
input datafile file number=00005 name=+PRODDB_DATA/DATAFILE/undo01.dbf
input datafile file number=00006 name=+PRODDB_DATA/DATAFILE/undo02.dbf
...
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:46
Finished backup at 25-JUL-2022Step 7 — Backup the Control File
RMAN> BACKUP AS COPY CURRENT CONTROLFILE
FORMAT '/oracle/backup/FMO_COLD_BKP/controlfile_PRODDB_copy.ctl';Step 8 — Backup the SPFILE
RMAN> BACKUP AS COPY SPFILE
FORMAT '/oracle/backup/FMO_COLD_BKP/snapcf_spfile_PRODDB.bck';Step 9 — Additional Control File Backup
RMAN> BACKUP CURRENT CONTROLFILE
FORMAT '/oracle/backup/FMO_COLD_BKP/control_PRODDB.bck';Taking both a copy and a standard backup of the controlfile gives you two recovery paths — always good practice for critical databases.
Step 10 — Create PFILE from SPFILE
Exit RMAN and create a text-based parameter file as an additional safety measure.
sqlplus / as sysdbaCREATE PFILE='/oracle/backup/FMO_COLD_BKP/pfile_PRODDB_25Jul2022.ora'
FROM SPFILE;
-- Output: File created.Step 11 — Open the Database
ALTER DATABASE OPEN;# Start all RAC instances
srvctl start database -d PRODDBStep 12 — Verify Backup Files
ls -ltr /oracle/backup/FMO_COLD_BKP/Expected output — confirm all files are present and non-zero:
-rw-r----- oracle dba 72278016 backupset_piece
-rw-r----- oracle dba 18857984 controlfile_PRODDB_copy.ctl
-rw-r----- oracle dba 114688 snapcf_spfile_PRODDB.bck
-rw-r----- oracle dba 18939904 control_PRODDB.bck
-rw-r--r-- oracle dba 2509 pfile_PRODDB_25Jul2022.oraKey Takeaways
- Always use
SHUTDOWN IMMEDIATE— neverSHUTDOWN ABORTbefore a cold backup - In RAC, only one instance in MOUNT state is needed — RMAN accesses shared ASM storage
- Use TAG on backups (e.g.,
FRESHDB) for easy identification during restore/recovery - COMPRESSED BACKUPSET can reduce backup size by 40–70% depending on data
- Always back up controlfile + SPFILE separately — critical for complete database recovery
- Creating a PFILE from SPFILE gives a human-readable parameter backup