RMAN Sample Script

 EXAMPLE : 1

export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 <<Has to be change>>
export ORACLE_SID=TEST2 <<Has to be change>>
export PATH=$ORACLE_HOME/bin:$PATH
fdate=`date "+%d-%b-%Y"`
ddate=`date -d "-5 days" "+%d-%b-%Y"`
BACKUP_LOCATION=/mnt/backup/TEST2_BACKUP; <<Has to be change>>
export BACKUP_LOCATION
BACKLOGDIR=/mnt/backup/TEST2_BACKUP <<Has to be change>>
export BACKLOGDIR
LOGFILE=$BACKLOGDIR/RMAN_`date +%d%m%Y-%H%M`.log
export LOGFILE;
cd $BACKUP_LOCATION
mkdir RMAN_$fdate
echo " RMAN PROD_DATABASE backup started at `date`" >> $LOGFILE

$ORACLE_HOME/bin/rman nocatalog <<EOF | tee $LOGFILE
connect target /

run {
allocate channel d1 type disk;
allocate channel d2 type disk;
backup as compressed backupset filesperset 5 incremental level 0 database format 
'$BACKUP_LOCATION/RMAN_$fdate/%d_data_full_%s_%p_%u' plus archivelog format '$BACKUP_LOCATION/RMAN_$fdate/Arch_%d_%u';
backup current controlfile format '$BACKUP_LOCATION/RMAN_$fdate/%d_control_%s_%p_%u';
release channel d1;
release channel d2;
}
EOF


EXAMPLE : 2

export ORACLE_HOME=/IFSDBT/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=IFSTST
export PATH=$ORACLE_HOME/bin:$PATH
fdate=`date "+%d-%b-%Y"`
ddate=`date -d "-5 days" "+%d-%b-%Y"`
BACKUP_LOCATION=/IFSDBT/RMAN/RMAN_BACKUP 
export BACKUP_LOCATION
BACKLOGDIR=/IFSDBT/RMAN/log
export BACKLOGDIR
LOGFILE=$BACKLOGDIR/RMAN_`date +%d%m%Y-%H%M`.log
export LOGFILE;
cd $BACKUP_LOCATION
mkdir RMAN_$fdate
echo " RMAN PROD_DATABASE backup started at `date`" >> $LOGFILE

$ORACLE_HOME/bin/rman nocatalog <<EOF | tee $LOGFILE
connect target /

run {
   ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT '$BACKUP_LOCATION/RMAN_$fdate/full_db_%d_%T_%U.bkp';
    BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL FORMAT '$BACKUP_LOCATION/RMAN_$fdate/arch_%d_%T_%U.bkp' DELETE INPUT;
    BACKUP CURRENT CONTROLFILE FORMAT '$BACKUP_LOCATION/RMAN_$fdate/controlfile_%d_%T_%U.ctl';
    BACKUP SPFILE FORMAT '$BACKUP_LOCATION/RMAN_$fdate/spfile_%d_%T_%U.bkp';
    CROSSCHECK BACKUP;
    CROSSCHECK ARCHIVELOG ALL;
    REPORT OBSOLETE;
    DELETE NOPROMPT OBSOLETE;
    DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DEVICE TYPE DISK;
    DELETE NOPROMPT EXPIRED BACKUP;
    DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
    RELEASE CHANNEL c1;
}
EOF


EXAMPLE : 3

#!/bin/bash

# Set Oracle environment variables
ORACLE_HOME=/IFSDBT/app/oracle/product/19.3.0/dbhome_1
ORACLE_SID=IFSTST
PATH=$ORACLE_HOME/bin:$PATH
LOG_DIR=/IFSDBT/RMAN/RMAN_BACKUP/log
BACKUP_DIR=/IFSDBT/RMAN/RMAN_BACKUP
DATE=$(date +%Y%m%d_%H%M%S)

# Create backup and log directories if they don't exist
mkdir -p $BACKUP_DIR
mkdir -p $LOG_DIR

# Log file for RMAN output
LOGFILE=$LOG_DIR/full_backup_$DATE.log

# Run RMAN backup
rman target / <<EOF > $LOGFILE
RUN {
    ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT '$BACKUP_DIR/full_db_%d_%T_%U.bkp';
    BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL FORMAT '$BACKUP_DIR/arch_%d_%T_%U.bkp' DELETE INPUT;
    BACKUP CURRENT CONTROLFILE FORMAT '$BACKUP_DIR/controlfile_%d_%T_%U.ctl';
    BACKUP SPFILE FORMAT '$BACKUP_DIR/spfile_%d_%T_%U.bkp';
CROSSCHECK BACKUP;
    CROSSCHECK ARCHIVELOG ALL;
    REPORT OBSOLETE;
    DELETE NOPROMPT OBSOLETE;
    DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DEVICE TYPE DISK;
    DELETE NOPROMPT EXPIRED BACKUP;
    DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
    RELEASE CHANNEL c1;
}
EOF

# Check if any errors occurred during backup
if grep -i "ORA-" $LOGFILE; then
    echo "Backup failed. Check the log file for details: $LOGFILE"
else
    echo "Backup completed successfully. Log file: $LOGFILE"
fi


Comments

Popular posts from this blog

Managing Oracle Data Files – Resizing and Adding

Oracle Database Basic Consepts (Start / Stop / Check Database Status)

Kubernetes Administration – Essential Commands for IFS Cloud