Sunday, September 9, 2018

RMAN FULL BACKUP


rman_db_full_backup.sh

#!/bin/ksh
# Author : DBA
# Description : This script will perform full database backup
#               including Datafiles,cf files and archive files
# Date : 30-Aug-2012
# Parameters :
#       1: Backup location
# If no parameters givenn bckup will be taken at
# /backup/rman_9f46//oracle
#############################################################
#set -x
. /p01/PROD/oracle/product/12.1.0.2/PROD1_HOST01.env
export DB_NAME=`echo ${ORACLE_SID} | cut -c 1-8`
#export DATE=`date '+%Y%m%d'`
export DATE=`date '+%Y%m%d_%H%M%S'`
export TARGET_CONNECT_STR=/
export LOG_DIR=${ORACLE_HOME}/rman_scripts/logs

if [ $# -gt 1 ]; then
   echo " Script Failed: Usage Error!"
   echo " Expected Usage: $0 backup_location "
   echo "                   OR                    "
   echo " Expected Usage: $0 "
   echo " backup_location -- Target location of the backup. "
   echo " If no parameters given, backup will be located at /backup/rman_9f46/${DB_NAME}/oracle "
   exit 1
elif [ $# -eq 1 ]; then
   export BKP_DIR=$1
else
   export BKP_DIR=/backup/rman_9f46/${DB_NAME}/oracle
fi


if [ -d ${LOG_DIR} ]; then
RMAN_LOG_FILE=${LOG_DIR}/rman_${DB_NAME}_${DATE}.log
#snapshot_path=${LOG_DIR}/snapcf_${DB_NAME}_${DATE}.f
else
mkdir -p ${ORACLE_HOME}/rman_scripts/logs
#snapshot_path=${LOG_DIR}/snapcf_${DB_NAME}_${DATE}.f
fi

#snapshot_set=$(echo " set snapshot controlfile name to @" $snapshot_path  "@;" |sed -e s/@\ /\ \'/g -e s/\ \@/\'/)

pmon_count=`ps -ef|grep pmon|grep -c $ORACLE_SID`
if [ $pmon_count -eq 0 ]; then
        echo " Database is down"
        exit;
fi

mkdir -p ${BKP_DIR}/${DATE}/db
chmod -R  770 ${BKP_DIR}/${DATE}
export bkpdbdir=${BKP_DIR}/${DATE}/db


CMD="

rman msglog ${RMAN_LOG_FILE} append <connect target $TARGET_CONNECT_STR

${snapshot_set}

RUN {

sql 'alter system archive log current';
  # Backup Datafiles
  ALLOCATE CHANNEL ch00 TYPE DISK;
  ALLOCATE CHANNEL ch01 TYPE DISK;
  ALLOCATE CHANNEL ch02 TYPE DISK;
  ALLOCATE CHANNEL ch03 TYPE DISK;
  ALLOCATE CHANNEL ch04 TYPE DISK;
  ALLOCATE CHANNEL ch05 TYPE DISK;
  ALLOCATE CHANNEL ch06 TYPE DISK;
  ALLOCATE CHANNEL ch07 TYPE DISK;
BACKUP AS COMPRESSED BACKUPSET DATABASE FILESPERSET 15 FORMAT '$bkpdbdir/%d_db_u%u_s%s_p%p_t%t_db' TAG '$DB_NAME' INCLUDE CURRENT CONTROLFILE;

# Restore Point

sql 'create restore point ${DB_NAME}_${DATE}';
# For an offline backup, remove the following sql statement
sql 'alter system archive log current';

# Backup Archived Logs

BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '$bkpdbdir/arch-s%s-p%p-t%t-arch';
# Control file backup

BACKUP CURRENT CONTROLFILE FORMAT '$bkpdbdir/bk_u%u_s%s_p%p_t%t_bk' TAG '$DB_NAME';

  RELEASE CHANNEL ch00;
  RELEASE CHANNEL ch01;
  RELEASE CHANNEL ch02;
  RELEASE CHANNEL ch03;
  RELEASE CHANNEL ch04;
  RELEASE CHANNEL ch05;
  RELEASE CHANNEL ch06;
  RELEASE CHANNEL ch07;
}
EOF
"

echo Script $0 > $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE


sh -c "$CMD" >> $RMAN_LOG_FILE
RSTAT=$?

if [ "$RSTAT" = "0" ]
then
LOGMSG="Backup completed successfully"
(echo "${DB_NAME} Backup Sucessful"; uuencode $RMAN_LOG_FILE $RMAN_LOG_FILE)| mailx -s "${DB_NAME} Backup Sucessful" oracle@XX.com
else
 LOGMSG=" Backup Failed with error."
(echo "${DB_NAME} Backup Failed please refer log file"; uuencode $RMAN_LOG_FILE $RMAN_LOG_FILE)| mailx -s "${DB_NAME} Backup Failed" oracle@oracle.com
fi

echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo "RMAN backup logfile $RMAN_LOG_FILE"


1 comment:

  1. This comment has been removed by a blog administrator.

    ReplyDelete