Oracle RMAN production script

From MyWiki
Revision as of 09:04, 11 October 2016 by George2 (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
#!/bin/bash
#
# First attempt at ONLINE RMAN backup scripts - by xxxxxxxxx modified by xxxxxxxxx July 2010
#
# remark xxxxxxxxx, restore without catalog must use DBID, here is the current <db_name> DBID=xxxxxxxxxxx
#
# Make sure only oracle can run our script
if [ "$(id -u)" != "101" ]; then
   echo "This script must be run as user Oracle \n" 1>&2
   exit 1
fi
#
#
#set ORACLE_HOME
ORACLE_HOME=/xxxxxx/app/oracle/product/11
ORACLE_SID=xxxxxxxx
export ORACLE_HOME ORACLE_SID
dayofweek=`date +%a`
#
BACKUP_LOCATION=/rman_nfs
BACKUP_LOGS=/rman_nfs/logs/rman_backup`date +%Y%m%d`.log
 
if [ "$dayofweek" = "Thu" ]; then
   backuptype="BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG delete all input"
else
   backuptype="RECOVER copy of database with tag 'incremental_backup' until time 'sysdate-7'; BACKUP INCREMENTAL LEVEL 1 FOR RECOV
ER OF COPY WITH TAG 'incremental_backup' DATABASE PLUS ARCHIVELOG delete all input"
fi
 
echo =========================
echo Backup Started : $(date)
echo =========================
before="$(date +%s)"
### Dont' shutdown oracle as we are doing ONLINE BACKUP
#$ORACLE_HOME/bin/dbshut $ORACLE_HOME >& $ORACLE_HOME/dbshut.log
$ORACLE_HOME/bin/rman target / log=${BACKUP_LOGS} <<EOF
RUN
{
         CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
         CONFIGURE COMPRESSION ALGORITHM 'ZLIB';
         CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;
         CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '${BACKUP_LOCATION}/database_f%t_s%s_s%p';
         CONFIGURE BACKUP OPTIMIZATION ON;
         CONFIGURE CONTROLFILE AUTOBACKUP ON;
         CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${BACKUP_LOCATION}/controlfile_%F';
         allocate CHANNEL m1 TYPE DISK FORMAT '${BACKUP_LOCATION}/database_f%t_s%s_s%p';
         CROSSCHECK BACKUP;
         CROSSCHECK ARCHIVELOG ALL;
         # backup recovery area;  only backup recovery area to local tape drive
         DELETE NOPROMPT FORCE EXPIRED BACKUP;
         DELETE NOPROMPT FORCE EXPIRED ARCHIVELOG ALL;
         DELETE NOPROMPT FORCE OBSOLETE;
         ${backuptype};
         BACKUP CURRENT CONTROLFILE;
         release CHANNEL m1;
}
EXIT
EOF
 
after="$(date +%s)"
elapsed_seconds="$(expr $after - $before)"
echo ""
echo =========================
echo Backup Ended : $(date)
echo =========================
echo Elapsed time: $(date -d "1970-01-01 $elapsed_seconds sec" +%H:%M:%S)
 
 
if grep -q "error" $BACKUP_LOGS 1> /dev/null
then
  echo ""
  echo "Error! RMAN backup error"
  echo "====="
  cat $BACKUP_LOGS
  echo "====="
  ### email us for failure backup with the attachment of the $BACKUP_LOGS
else
  echo ""
  echo "Success RMAN Backup -" .$BACKUP_LOGS
  echo "====="
  cat $BACKUP_LOGS
  echo "====="
  ### email us for successful backup with the attachment of the $BACKUP_LOGS
fi
 
exit