Backup and Recovery with RMAN
42.1 Backup Concepts
Physical (files) vs logical (Data Pump) backups.
Consistent (cold) vs inconsistent (hot/online) backups. Hot backups require ARCHIVELOG mode.
Full vs incremental (level 0, level 1 differential, level 1 cumulative).
Backup sets (RMAN proprietary, compressed, skip unused blocks) vs image copies (exact file copies).
RPO / RTO drive the strategy.
42.2 RMAN Basics
rman target /
rman target sys@ORCL catalog rman_owner@RCAT # with a recovery catalogRMAN> SHOW ALL;
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/%d_%T_%U';42.3 Taking Backups
Block change tracking speeds up incremental backups: ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u02/bct.f';
Incrementally updated backups (merge into image copies) for fast SWITCH TO COPY recovery.
Recovery catalog (separate DB) vs control-file-only repository. Stored scripts.
Media management: SBT_TAPE channels, Oracle Database Backup Cloud Service, Zero Data Loss Recovery Appliance (ZDLRA).
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE TAG 'weekly_l0';
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE TAG 'daily_l1'; -- differential
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;
RMAN> BACKUP TABLESPACE users;
RMAN> BACKUP PLUGGABLE DATABASE pdb1;
RMAN> BACKUP AS COPY DATABASE;
RMAN> BACKUP CURRENT CONTROLFILE; BACKUP SPFILE;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE; -- check for corruption without a backup
RMAN> BACKUP SECTION SIZE 32G DATAFILE 5; -- multisection for big files42.4 Reporting and Maintenance
RMAN> LIST BACKUP SUMMARY;
RMAN> LIST BACKUP OF DATABASE COMPLETED AFTER 'SYSDATE-7';
RMAN> REPORT NEED BACKUP;
RMAN> REPORT OBSOLETE;
RMAN> DELETE OBSOLETE;
RMAN> CROSSCHECK BACKUP; DELETE EXPIRED BACKUP;
RMAN> CATALOG START WITH '/backup/old/';SELECT start_time, end_time, status, input_type, output_bytes_display FROM v$rman_backup_job_details ORDER BY start_time DESC;42.5 Recovery Scenarios
Data Recovery Advisor (LIST FAILURE, ADVISE FAILURE, REPAIR FAILURE) is deprecated in 21c+, but you'll still see it.
RMAN DUPLICATE (active or backup-based) creates clones and standbys.
Test your restores regularly. RESTORE DATABASE VALIDATE; and RESTORE ... PREVIEW.
-- 1. Complete database recovery
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
-- 2. Lost datafile (database stays open)
RMAN> ALTER DATABASE DATAFILE 5 OFFLINE;
RMAN> RESTORE DATAFILE 5; RECOVER DATAFILE 5;
RMAN> ALTER DATABASE DATAFILE 5 ONLINE;
-- 3. Point-in-time recovery (incomplete)
RMAN> RUN {
SET UNTIL TIME "TO_DATE('2025-10-24 10:27:00','YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE; RECOVER DATABASE; }
RMAN> ALTER DATABASE OPEN RESETLOGS;
-- 4. Lost control file
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS;
-- 5. Lost SPFILE
RMAN> STARTUP FORCE NOMOUNT; RESTORE SPFILE FROM AUTOBACKUP;
-- 6. Block media recovery
RMAN> RECOVER DATAFILE 7 BLOCK 233; RECOVER CORRUPTION LIST;
-- 7. Tablespace PITR (TSPITR), PDB PITR
RMAN> RECOVER PLUGGABLE DATABASE pdb1 UNTIL TIME "SYSDATE-1/24" AUXILIARY DESTINATION '/tmp/aux';
-- 8. Table recovery from backup (12c)
RMAN> RECOVER TABLE shop.orders UNTIL TIME "SYSDATE-1" AUXILIARY DESTINATION '/tmp/aux'
REMAP TABLE shop.orders:orders_recovered;
-- 9. Lost redo log gr
…RMAN> DUPLICATE TARGET DATABASE TO testdb FROM ACTIVE DATABASE SPFILE SET db_unique_name='testdb' NOFILENAMECHECK;42.6 Backup Strategy Example
Incremental level 0 + archivelogs Incremental level 1 (differential) + archivelogs
Controlfile and SPFILE autobackup, FRA, offsite/cloud copy, wallet backup