Skip to content

Instantly share code, notes, and snippets.

@sravanrox
Created September 13, 2016 22:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sravanrox/6e2bacd5413da1276ce8009742c9a1eb to your computer and use it in GitHub Desktop.
Save sravanrox/6e2bacd5413da1276ce8009742c9a1eb to your computer and use it in GitHub Desktop.
ASM DB Rman Backup script
#/bin/sh
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
DATE=`/bin/date +%m%d%Y%H%M%S`
DOW=`date +%A | tr -s '[:upper:]' '[:lower:]'`
LOG=/home/oracle/logs
page_dba=xxx@gmail.com
NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS'
export NLS_DATE_FORMAT
ORACLE_SID=dbname
export ORACLE_SID
ORAENV_ASK=NO
RMAN_LOG_FILE=${LOG}/dbname_daily_backup.sh.${DATE}.out
if [ -f "$RMAN_LOG_FILE" ]
then
rm -f "$RMAN_LOG_FILE"
fi
echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export ORACLE_HOME
ORACLE_USER=oracle
RMAN=$ORACLE_HOME/bin/rman
echo >> $RMAN_LOG_FILE
echo "RMAN: $RMAN" >> $RMAN_LOG_FILE
echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE
echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE
echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE
if [ "$DOW" = "sunday" ]
then
echo "Full backup requested" >> $RMAN_LOG_FILE
RMAN_COMMAND="backup as compressed backupset INCREMENTAL LEVEL 0 DATABASE"
else
echo "Default - incremental backup requested" >> $RMAN_LOG_FILE
RMAN_COMMAND="backup as compressed backupset INCREMENTAL LEVEL 1 DATABASE"
fi
CMD_STR="
$RMAN target / msglog $RMAN_LOG_FILE append << EOF
run
{
show all;
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
delete noprompt expired archivelog all;
${RMAN_COMMAND};
sql 'alter system archive log current';
BACKUP AS COMPRESSED backupset ARCHIVELOG ALL DELETE INPUT;
BACKUP CURRENT CONTROLFILE;
}
EOF
"
# Initiate the command string
echo "$CMD_STR" >> $RMAN_LOG_FILE
if [ "$CUSER" = "root" ]
then
echo " dbname backup job start at `/bin/date`" | mail -s " dbname Database Backup Notification" $page_dba
su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE
RSTAT=$?
else
echo " dbname backup job start at `/bin/date`" | mail -s " dbname Database Backup Notification" $page_dba
sh -c "$CMD_STR" >> $RMAN_LOG_FILE
RSTAT=$?
fi
# ---------------------------------------------------------------------------
# Log the completion of this script.
# ---------------------------------------------------------------------------
if [ "$RSTAT" = "0" ]
then
LOGMSG="ended successfully"
echo " dbname backup completed Successfully end`/bin/date`" | mail -s " dbname Database END Backup Notification: SUCCESS" $page_dba
else
echo " dbname backup Failed please contact DBA immediately `/bin/date`" | mail -s " dbname Database END Backup Notification: FAILED" $page_dba
LOGMSG="ended in error"
fi
echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
echo "Start delete obsolete backup " >> $RMAN_LOG_FILE
$RMAN target / msglog $RMAN_LOG_FILE append << EOF
allocate channel for maintenance type disk;
delete noprompt obsolete device type disk;
release channel;
EOF
echo "Complete delete obsolete backup " >> $RMAN_LOG_FILE
echo "Sync with recovery catalog"
$RMAN target / catalog user/password@catalog msglog $RMAN_LOG_FILE append << EOF
resync catalog;
EOF
exit $RSTAT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment