Oracle Database, Recovery Manager (RMAN) backups are mainly of two types:
Full Backup and Incremental Backup (Level 0, Level 1).
Level 1 can be Differential or Cumulative.
RMAN Full Backup
A Full Backup copies all blocks of the database datafiles, regardless of whether they changed or not.
Backs up entire database
Includes used + unused blocks
Does not act as a base for incremental backups
Larger backup size
Syntax
Backup database; ## FRA Location
Backup database plus archivelog;
Backup database format ='/backup/rman/Bak_%d_%T_%U.bkp'
Backup database format ='/backup/rman/Bak_%d_%T_%U.bkp' plus archivelog format ='/backup/rman/Arch_%d_%T_%U.bkp';
RMAN Incremental Backup
Incremental backups copy only changed blocks since a previous backup.
Two levels of backups
Level 0
Level 1
Level 0 Backup
A Level 0 backup is the base backup for incremental strategy.
Copies all used blocks
Acts as base for Level 1 backups
Similar to full backup but supports incremental chain
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE format ='/backup/rman/Bak_L0_%d_%T_%U.bkp';
Level 0 = foundation backup
Level 1 Backup
Level 1 backs up only blocks changed since the Level 0 backup or previous Level 1 backup.
Two types exist:
Differential
Cumulative
Level 1 Differential Backup
Backs up blocks changed since the last incremental backup (Level 0 or Level 1).
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE format ='/backup/rman/Bak_L0_%d_%T_%U.bkp';
Level 0 (Sunday)
|---- Level 1 Differential (Mon)
|---- Level 1 Differential (Tue)
|---- Level 1 Differential (Wed)
|---- Level 1 Differential (Thu)
|---- Level 1 Differential (Fri)
|---- Level 1 Differential (Sat)
Level 1 Cumulative Backup
Backs up all blocks changed since the last Level 0 backup.
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE format ='/backup/rman/Bak_L0_%d_%T_%U.bkp';
Level 0 (Sunday)
|---- Level 1 Cum (Mon -Changes from since Sun)
|---- Level 1 Cum (Tue -Changes from since Sun)
|---- Level 1 Cum (Wed -Changes from since Sun)
|---- Level 1 Cum (Thu -Changes from since Sun)
|---- Level 1 Cum (Fri -Changes from since Sun)
|---- Level 1 Cum (Sat -Changes from since Sun)
Backup Archive Log
RMAN> Backup archivelog all;
RMAN> Backup archivelog all format='/backup/rman/Arch_%d_%T_%U.bkp';
Crontab Schedule :
crontab -e
# Sunday Level 0 Backup at 2 AM
0 2 * * 0 /u01/scripts/rman_level0.sh >> /u01/scripts/logs/l0_backup.log 2>&1
# Monday–Saturday Level 1 Cumulative Backup at 2 AM
0 2 * * 1-6 /u01/scripts/rman_level1_cum.sh >> /u01/scripts/logs/l1_cum_backup.log 2>&1
#Sunday – Level 0 Backup Script
#!/bin/bash
export ORACLE_SID=PROD
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 0 DATABASE TAG 'WEEKLY_SUN_L0';
BACKUP ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL c1;
}
EXIT;
EOF
# Weekdays – Level 1 Differential Script
#!/bin/bash
export ORACLE_SID=PROD
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 1 DATABASE TAG 'DAILY_L1';
BACKUP ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL c1;
}
EXIT;
EOF
Sunday Level 0 RMAN Script
#!/bin/bash
export ORACLE_SID=PRODDB
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 0 DATABASE
TAG 'WEEKLY_L0'
FORMAT '/backup/rman/L0_%d_%T_%U.bkp';
BACKUP ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL c1;
}
EXIT;
EOF
#Weekdays Level 1 Cumulative Script
# %d = Database, %T = Date Time and %U= 8 number
#!/bin/bash
export ORACLE_SID=PROD
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE
TAG 'DAILY_L1_CUM'
FORMAT '/backup/rman/L1C_%d_%T_%U.bkp';
BACKUP ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL c1;
}
EXIT;
EOF
export ORACLE_SID=PROD
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
No comments:
Post a Comment