t1ls1jdb@nmsjs1d1(1110) t1ls1jd1 /opt/app/t1ls1jdb/oracle$ more /home/oracle/oraadmin/rman_backup.sh
#!/bin/ksh
#
# ******************************************************************
# * NOTICE *
# *** NOT FOR USE OR DISCLOSURE OUTSIDE THE AT&T COMPANIES ****
# ******************************************************************
# Copyright 2009. AT&T. All rights reserved.
# ******************************************************************
# *
# * Module name : rman_backup.sh
# *
# * Module description: Backup the database using RMAN.
# *
# * Date created :
# *
# * Author :
# *
# * Modification History : Pratul Malhotra
# * --------------------------------------------------------------
# *
# *******************************************************************
#
#set -x
#
# Format Log File for Backups
#
format_backup_logfile_name()
{
# Create Backup Log Directory if it does not Exist
#
if [ ! -d ${BACKUPSLOG_DIR} ]
then
mkdir -p ${BACKUPSLOG_DIR}
fi
if [ ${ARCHIVEONLY} = Y ]
then
LOGFILE=${BACKUPSLOG_DIR}/DB_Arch_Backup_`date +%Y%m%d%H%M`.log
elif [ ${INCREMENTALONLY} = Y ]
then
LOGFILE=${BACKUPSLOG_DIR}/DB_Incremental_Backup_`date +%Y%m%d%H%M`.log
else
LOGFILE=${BACKUPSLOG_DIR}/DB_Full_Backup_`date +%Y%m%d%H%M`.log
fi
}
#
# List Contents of Backup Directory
#
list_bkup_dir()
{
BkupDir=${1}
if [ -d ${BkupDir} ]
then
log "Listing ${BkupDir}"
ls -lisart ${BkupDir} | tee -a ${LOGFILE}
fi
}
#
# Check for Hanging Backup
#
check_for_hanging_backup()
{
Oracle_Sid=${1}
Start_Date=${2}
# Create Lock File for this backup to help determine if backup is hanging
#
LockFile=/tmp/backup.${Oracle_Sid}.${Start_Date}.lck
touch ${LockFile}
BkupTimeLimit=`get_dbmodes_value ${Oracle_Sid} BKUPTIMELIMIT 60`
log "ORACLE_SID = ${Oracle_Sid} : BKUPTIMELIMIT = ${BkupTimeLimit}"
# Start background process to sleep for $BKUPTIMELIMIT minutes and then verify
# the backup for this SID has completed using the lock file created above
# (if the lock file still exists after sleeping, then the backup must have hung)
${ADMIN_DIR}/check_backup_status.sh ${Oracle_Sid} ${BkupTimeLimit} ${LockFile} &
}
#
# Cleanup after the Backup Ends
#
end_backup()
{
Oracle_Sid=${1}
Start_Date=${2}
# Remove Lock File created to determine if backup is hanging
#
LockFile=/tmp/backup.${Oracle_Sid}.${Start_Date}.lck
rm -f ${LockFile}
}
#
# Backup the Online Redo Logs for Cold Backups
#
bkup_redo_logs()
{
Oracle_Sid=${1}
BkupDir=${2}
log "Backing up online redo logs"
RedoLogsDir=`get_dbmodes_value ${Oracle_Sid} REDOLOGSDIR N`
RedoLogDirList=`echo ${RedoLogsDir} | sed "s/,/ /g"`
for Field in ${RedoLogDirList}
do
for RedoLog in `ls ${Field}/*redo*`
do
RedoTarget=${BkupDir}/`basename ${RedoLog}`.`date +%Y%m%d%H%M`
cp ${RedoLog} ${RedoTarget} | tee -a ${LOGFILE}
compress ${RedoTarget} | tee -a ${LOGFILE}
done
done
}
#
# Disable Previous Backups
#
disable_backups()
{
log "Disabling previous backups"
${ORACLE_HOME}/bin/sqlplus -s '/ as sysdba' @${SQL_DIR}/disable_backups.sql | tee -a ${LOGFILE}
rm -f /tmp/disable_backups.lst
rm -f /tmp/disable_backups.sql
}
#
# Backup the Database to Tape
#
bkup_db_to_tape()
{
BACKUP_POLICY=$1
NB_ORACLE_SERVER=`grep SERVER /usr/openv/netbackup/bp.conf | grep -v _SERVER | cut -d "=" -f2 | tr -d " "`
# BKRETENT is the number of days to keep backups.
# If BKRETENT is not set in dbmodes.txt then set the default REDUNDANCY to 31.
#
BKRETENT=`get_dbmodes_value ${ORACLE_SID} TAPERETENT 31`
log "ORACLE_SID = ${ORACLE_SID} : Backup Retention = ${BKRETENT} days"
TAG_DATE_FORMAT=%Y_%m_%d_%H%M
TAG_DATE=`date +${TAG_DATE_FORMAT}`
log "ORACLE_SID = ${ORACLE_SID} : Copying the database backup sets to tape using Veritas NetBackkup"
unset NLS_DATE_FORMAT
# export NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS'
${ORACLE_HOME}/bin/rman target / catalog ${RMANDB_USERNAME}/${RMANDB_PASSWORD}@rmancatc.snt.bst.bls.com << EOF >> ${LOGFILE}
CONFIGURE RETENTION POLICY TO NONE;
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
CONFIGURE DEVICE TYPE SBT_TAPE BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE BACKUP OPTIMIZATION ON;
run {
allocate channel 't1' type 'SBT_TAPE' PARMS='ENV=(NB_ORA_SERV=${NB_ORACLE_SERVER},
NB_ORA_CLIENT=$HOST,NB_ORA_POLICY=${BACKUP_POLICY},NB_ORA_SCHED=Default-Application-Backup)';
allocate channel 't2' type 'SBT_TAPE' PARMS='ENV=(NB_ORA_SERV=${NB_ORACLE_SERVER},
NB_ORA_CLIENT=$HOST,NB_ORA_POLICY=${BACKUP_POLICY},NB_ORA_SCHED=Default-Application-Backup)';
allocate channel 't3' type 'SBT_TAPE' PARMS='ENV=(NB_ORA_SERV=${NB_ORACLE_SERVER},
NB_ORA_CLIENT=$HOST,NB_ORA_POLICY=${BACKUP_POLICY},NB_ORA_SCHED=Default-Application-Backup)';
allocate channel 't4' type 'SBT_TAPE' PARMS='ENV=(NB_ORA_SERV=${NB_ORACLE_SERVER},
NB_ORA_CLIENT=$HOST,NB_ORA_POLICY=${BACKUP_POLICY},NB_ORA_SCHED=Default-Application-Backup)';
backup backupset all;
release channel t1;
release channel t2;
release channel t3;
release channel t4;
}
allocate channel for maintenance device type 'SBT_TAPE'
PARMS='ENV=(NB_ORA_SERV=${NB_ORACLE_SERVER},NB_ORA_CLIENT=$HOST,NB_ORA_POLICY=${BACKUP_POLICY},NB_ORA_SCHED=Default-Application-Backup)';
DELETE NOPROMPT FORCE OBSOLETE RECOVERY WINDOW OF 31 DAYS;
release channel ;
# report obsolete ;
# delete force noprompt obsolete device type 'SBT_TAPE' ;
# crosscheck backup device type 'SBT_TAPE' ;
# delete force noprompt expired backup device type 'SBT_TAPE' ;
# list backup summary device type disk ;
list backup summary device type 'SBT_TAPE' ;
exit;
EOF
Status=${?}
return ${Status}
}
#
# Get Backup Directories
#
get_bkup_dirs()
{
case `hostname` in
nmsjs6d1|nmsjs6d2|nmsjs6d3|nmsjs6d4)
BACKUPDIR=+JBBOS_RECOVERY
BACKUPDIR1=+JBBOS_RECOVERY
BACKUPDIR2=+JBBOS_RECOVERY
BACKUPDIR3=+JBBOS_RECOVERY
BACKUPDIR4=+JBBOS_RECOVERY
;;
n5004002|n5004005|g0212021)
BACKUPDIR=/orabackup1/dumpdata
BACKUPDIR1=/orabackup1/dumpdata
BACKUPDIR2=/orabackup2/dumpdata
BACKUPDIR3=/orabackup3/dumpdata
BACKUPDIR4=/orabackup4/dumpdata
;;
sogbuat1)
BACKUPDIR=/orabackup01/dumpdata
BACKUPDIR1=/orabackup01/dumpdata
BACKUPDIR2=/orabackup02/dumpdata
BACKUPDIR3=/orabackup03/dumpdata
BACKUPDIR4=/orabackup04/dumpdata
;;
optiersb)
BACKUPDIR=/pac/optier/bkup/orabkup01/dumpdata01
BACKUPDIR1=/pac/optier/bkup/orabkup01/dumpdata01
BACKUPDIR2=/pac/optier/bkup/orabkup01/dumpdata01
BACKUPDIR3=/pac/optier/bkup/orabkup01/dumpdata01
BACKUPDIR4=/pac/optier/bkup/orabkup01/dumpdata01
;;
ads00620|ads00621|ads00644|ads00645|ads00616|ads00617|ads00648|ads00649|nmsf1n1|nmsf1n2|nmsf1n3|nmsf1n4|nmsf1n5|nmsf1n6|nmsf1n7|nmsf1n8|nmsp2n1|nmsp2n2|nmsp2n3|nm
sp2n4)
BACKUPDIR=/orabackup01/dumpdata
BACKUPDIR1=${BACKUPDIR}
BACKUPDIR2=${BACKUPDIR}
BACKUPDIR3=${BACKUPDIR}
BACKUPDIR4=${BACKUPDIR}
;;
ads00641|ads00642|lstst06|lstst11|nrsb_fs5|nrsb_fs6|ads00610|ads00609)
BACKUPDIR=/pac/${ORACLE_SID}/bkup/orabkup01/dumpdata01
BACKUPDIR1=/pac/${ORACLE_SID}/bkup/orabkup01/dumpdata01
BACKUPDIR2=/pac/${ORACLE_SID}/bkup/orabkup01/dumpdata02
BACKUPDIR3=/pac/${ORACLE_SID}/bkup/orabkup01/dumpdata03
BACKUPDIR4=/pac/${ORACLE_SID}/bkup/orabkup01/dumpdata04
;;
bcsldt10)
BACKUPDIR=/pac/${ORACLE_SID}/bkup/orabkup01/dumpdata01
BACKUPDIR1=${BACKUPDIR}
BACKUPDIR2=${BACKUPDIR}
BACKUPDIR3=${BACKUPDIR}
BACKUPDIR4=${BACKUPDIR}
;;
*)
# BACKUPDIR=/pac/cam/bkup/orabkup01/dumpdata01
BACKUPDIR=`get_Backup_Dir ${ORACLE_SID}`
BACKUPDIR1=${BACKUPDIR}
BACKUPDIR2=${BACKUPDIR}
BACKUPDIR3=${BACKUPDIR}
BACKUPDIR4=${BACKUPDIR}
;;
esac
}
#
# Backup the Database
#
bkup_db_to_disk()
{
# BKRETENT is the number of days to keep backups.
# If BKRETENT is not set in dbmodes.txt then set the default REDUNDANCY to 5.
#
BKRETENT=`get_dbmodes_value ${ORACLE_SID} BKRETENT 5`
log "ORACLE_SID = ${ORACLE_SID} : Backup Retention = ${BKRETENT} days"
SPFILEFLAG=`get_spfile_flag`
log "ORACLE_SID = ${ORACLE_SID} : spfileflag=${SPFILEFLAG}"
TAG_DATE_FORMAT=%Y_%m_%d_%H%M
TAG_DATE=`date +${TAG_DATE_FORMAT}`
log "ORACLE_SID = ${ORACLE_SID} : Backing up the database with RMAN"
export NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS'
${ORACLE_HOME}/bin/rman target / catalog ${RMANDB_USERNAME}/${RMANDB_PASSWORD}@rmancatc.snt.bst.bls.com << EOF >> ${LOGFILE}
# Note: You cannot assign a tag to a backup of the current control file.
#
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${BACKUPDIR}/cf_%F';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF ${BKRETENT} DAYS;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE BACKUP OPTIMIZATION OFF;
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' CLEAR;
run {
crosscheck backup device type disk ;
crosscheck archivelog all;
crosscheck backup of archivelog all spfile;
delete force noprompt obsolete device type disk;
delete force noprompt expired backup device type disk;
delete force noprompt expired archivelog all device type disk;
delete force noprompt backupset device type disk completed before 'sysdate-${BKRETENT}';
# CR Copy ALTER between blocks
# Oracle auto does a LOG SWITCH as part of BACKUP block
#
sql 'alter system switch logfile';
sql 'alter system archive log current';
allocate channel c1 device type disk format='${BACKUPDIR1}/${TAG_DATE}_dbf_s%s_p%p';
allocate channel c2 device type disk format='${BACKUPDIR2}/${TAG_DATE}_dbf_s%s_p%p';
allocate channel c3 device type disk format='${BACKUPDIR3}/${TAG_DATE}_dbf_s%s_p%p';
allocate channel c4 device type disk format='${BACKUPDIR4}/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c1 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c2 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c3 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c4 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
backup
incremental level 0
filesperset 4
# format '${BACKUPDIR}/${TAG_DATE}_dbf_s%s_p%p'
database
tag = '${TAG_DATE}_bkup_db'
include current controlfile for standby;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
exit;
# ${SPFILEFLAG} ;
# exit;
# list backup summary device type disk ;
EOF
Status=${?}
return ${Status}
}
#
# Incremental Level 1 Backup of the Database (Below Logic is appended by Pankaj)
#
incremental_bkup_db_to_disk()
{
# BKRETENT is the number of days to keep backups.
# If BKRETENT is not set in dbmodes.txt then set the default REDUNDANCY to 5.
#
BKRETENT=`get_dbmodes_value ${ORACLE_SID} BKRETENT 5`
log "ORACLE_SID = ${ORACLE_SID} : Backup Retention = ${BKRETENT} days"
SPFILEFLAG=`get_spfile_flag`
log "ORACLE_SID = ${ORACLE_SID} : spfileflag=${SPFILEFLAG}"
TAG_DATE_FORMAT=%Y_%m_%d_%H%M
TAG_DATE=`date +${TAG_DATE_FORMAT}`
log "ORACLE_SID = ${ORACLE_SID} : Backing up the database with RMAN"
export NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS'
${ORACLE_HOME}/bin/rman target / catalog ${RMANDB_USERNAME}/${RMANDB_PASSWORD}@rmancatc.snt.bst.bls.com << EOF >> ${LOGFILE}
# Note: You cannot assign a tag to a backup of the current control file.
#
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${BACKUPDIR}/cf_%F';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF ${BKRETENT} DAYS;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE BACKUP OPTIMIZATION OFF;
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' CLEAR;
run {
crosscheck backup device type disk ;
crosscheck archivelog all;
crosscheck backup of archivelog all spfile;
delete force noprompt obsolete device type disk;
delete force noprompt expired backup device type disk;
delete force noprompt expired archivelog all device type disk;
# CR Copy ALTER between blocks
# Oracle auto does a LOG SWITCH as part of BACKUP block
#
sql 'alter system switch logfile';
sql 'alter system archive log current';
allocate channel c1 device type disk format='${BACKUPDIR1}/${TAG_DATE}_dbf_s%s_p%p';
allocate channel c2 device type disk format='${BACKUPDIR2}/${TAG_DATE}_dbf_s%s_p%p';
allocate channel c3 device type disk format='${BACKUPDIR3}/${TAG_DATE}_dbf_s%s_p%p';
allocate channel c4 device type disk format='${BACKUPDIR4}/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c1 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c2 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c3 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
# allocate channel c4 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_dbf_s%s_p%p';
backup
incremental level 1
filesperset 4
# format '${BACKUPDIR}/${TAG_DATE}_dbf_s%s_p%p'
database
tag = '${TAG_DATE}_bkup_db'
include current controlfile for standby;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
exit;
# ${SPFILEFLAG} ;
# exit;
# list backup summary device type disk ;
EOF
Status=${?}
return ${Status}
}
#
# Backup the Archived Logs
#
bkup_arch_to_disk()
{
# BKRETENT is the number of days to keep backups.
# If BKRETENT is not set in dbmodes.txt then set the default REDUNDANCY to 5.
#
BKRETENT=`get_dbmodes_value ${ORACLE_SID} BKRETENT 5`
log "ORACLE_SID = ${ORACLE_SID} : Backup Retention = ${BKRETENT} days"
TAG_DATE_FORMAT=%Y_%m_%d_%H%M
TAG_DATE=`date +${TAG_DATE_FORMAT}`
log "ORACLE_SID = ${ORACLE_SID} : Backing up the archived logs with RMAN"
export NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS'
${ORACLE_HOME}/bin/rman target / catalog ${RMANDB_USERNAME}/${RMANDB_PASSWORD}@rmancatc.snt.bst.bls.com << EOF >> ${LOGFILE}
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${BACKUPDIR}/cf_%F';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF ${BKRETENT} DAYS;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE BACKUP OPTIMIZATION OFF;
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' CLEAR;
run {
crosscheck backup device type disk ;
crosscheck archivelog all device type disk;
# crosscheck backup of archivelog all spfile;
delete force noprompt obsolete device type disk;
delete force noprompt expired backup device type disk;
delete force noprompt expired archivelog all device type disk;
delete force noprompt backupset device type disk completed before 'sysdate-${BKRETENT}';
# CR Copy ALTER between blocks
# ?? Oracle auto does a LOG SWITCH as part of BACKUP block
# Oracle does an ALTER SYSTEM ARCHIVE LOG CURRENT as part of the BACKUP ARCHIVELOG block
#
sql 'alter system switch logfile';
sql 'alter system archive log current';
allocate channel c1 device type disk format='${BACKUPDIR1}/${TAG_DATE}_arc_s%s_p%p';
allocate channel c2 device type disk format='${BACKUPDIR2}/${TAG_DATE}_arc_s%s_p%p';
allocate channel c3 device type disk format='${BACKUPDIR3}/${TAG_DATE}_arc_s%s_p%p';
allocate channel c4 device type disk format='${BACKUPDIR4}/${TAG_DATE}_arc_s%s_p%p';
# allocate channel c1 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_arc_s%s_p%p';
# allocate channel c2 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_arc_s%s_p%p';
# allocate channel c3 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_arc_s%s_p%p';
# allocate channel c4 device type disk format='/pac/cam/bkup/orabkup01/dumpdata01/${TAG_DATE}_arc_s%s_p%p';
backup
incremental level 0
filesperset 4
# format '${BACKUPDIR}/${TAG_DATE}_arc_s%s_p%p'
archivelog all delete input
# archivelog all
tag = '${TAG_DATE}_bkup_arch';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
# sql 'alter database backup controlfile to trace';
crosscheck archivelog all device type disk;
delete force noprompt obsolete device type disk;
}
list backup summary device type disk ;
exit;
EOF
Status=${?}
return ${Status}
}
#
# Get the Overall Backup Status
#
get_bkup_status()
{
Prev_Status=${1}
Status_Code=${2}
New_Status=${Prev_Status}
if [ ${Prev_Status} = INPROGRESS ]
then
if [ ${Status_Code} -eq 0 ]
then
New_Status=SUCCESSFUL
else
New_Status=UNSUCCESSFUL
fi
else
if [ ${Prev_Status} != UNSUCCESSFUL -a ${Status_Code} != 0 ]
then
New_Status=WARNING
fi
fi
echo ${New_Status}
}
###########################################
#
# Main
#
###########################################
ARCHIVEONLY=N
BKUPTOTAPE=N
INCREMENTALONLY=N
RMANDB_USERNAME=rman102
RMANDB_PASSWORD=cat
USAGE="USAGE - `basename ${0}` [-a] archiveonly [-s SID] [-i] incremental [-t] tape backup [-d] data domain backup [-h] help"
while getopts :aitdhs: opt;
do
case "${opt}" in
a) ARCHIVEONLY=Y
;;
i) INCREMENTALONLY=Y
;;
t) BKUPTOTAPE=T
T_MODE=1
;;
d) BKUPTOTAPE=D
D_MODE=1
;;
h) echo ""
echo " $USAGE"
echo ""
echo " -a archive log backup only"
echo " -s if you have multiple database on one server"
echo " and only want to backup one - REQUIRES an argument."
echo " -i incrmental backup only"
echo " -t tape backup"
echo " -d data domain backup"
echo " -h display help"
echo ""
exit
;;
s) ORACLE_SID_LIST=$OPTARG
CMD_LINE_SID=Y
;;
*) echo ""
echo " $USAGE"
echo ""
echo " -a archive log backup only"
echo " -s if you have multiple database on one server"
echo " and only want to backup one - REQUIRES an argument."
echo " -i incrmental backup only"
echo " -t tape backup"
echo " -d data domain backup"
echo " -h display help"
echo ""
exit
;;
esac
done
if [ -x /usr/ucb/whoami ]
then
WHOAMI=/usr/ucb/whoami
else
WHOAMI=whoami
fi
#if [ `${WHOAMI}` = oracle ]
#then
. ~oracle/oracle_env
#else
if [ -x ~/.local ]
then
. ~/.local
else
echo "###################################"
echo "# ERROR - ~/.local does not exist #"
echo "###################################"
exit
fi
#fi
#
# Define the LOGFILE
#
format_backup_logfile_name
if [ T_MODE -eq 1 ] && [ D_MODE -eq 1 ]
then
echo "#######################################################" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Tape Mode and Data Domain Mode are exclusive - Pick One" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "$USAGE" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "#######################################################" >> ${LOGFILE}
exit -1
fi
# Load Common Functions
#
. ${ADMIN_DIR}/common_functions.sh
# Set the Date Format
#
DATE_FORMAT=%Y%m%d%H%M
# Set the Oracle Environment
#
# Get the list of ORACLE_SIDs
#
if [ -z ${CMD_LINE_SID} ]
then
ORACLE_SID_LIST=`list_oracle_sids`
fi
log "HOST = ${HOST}"
for ORACLE_SID in ${ORACLE_SID_LIST}
do
# Determine whether SID should be Processed
#
#PROCESS_FLAG=`get_process_flag ${ORACLE_SID}`
if [ ${ORACLE_SID} = 'rman' ]
then
PROCESS_FLAG = N
fi
log "ORACLE_SID = ${ORACLE_SID} : Process Flag = ${PROCESS_FLAG}"
if [ ${PROCESS_FLAG} = N ]
then
log "Skipping backup of ${ORACLE_SID}"
else
log "ORACLE_SID = ${ORACLE_SID} : Processing ..."
if [ -x /usr/ucb/whoami ]
then
WHOAMI=/usr/ucb/whoami
else
WHOAMI=whoami
fi
# if [ `${WHOAMI}` = oracle ]
# then
# . ~oracle/oracle_env ${ORACLE_SID}
# else
# . ~/oracle/local/bin/oraprof ${ORACLE_SID}
# fi
. ~oracle/oracle_env ${ORACLE_SID}
. ~/oracle/local/bin/oraprof ${ORACLE_SID}
START_DATE=`date +'%Y%m%d%H%M%S'`
BKUPDISABLE=`get_dbmodes_value ${ORACLE_SID} BKUPDISABLE N`
if [ ${BKUPDISABLE} = Y ]
then
log "Backups disabled for Host = ${HOST} : ORACLE_SID = ${ORACLE_SID}"
REPORT_STATUS='DISABLED'
${ADMIN_DIR}/insert_backup_status.sh ${ORACLE_SID} ${REPORT_STATUS} ${START_DATE} ${START_DATE} | tee -a ${LOGFILE}
else
DBMODE=`get_dbmodes_value ${ORACLE_SID} DBMODE PRIMARY`
log "ORACLE_SID = ${ORACLE_SID} : DBMODE = ${DBMODE}"
if [ ${DBMODE} = STANDBY ]
then
log "SID=${ORACLE_SID} : Skipping backup for Standby Database"
REPORT_STATUS='STANDBY'
${ADMIN_DIR}/insert_backup_status.sh ${ORACLE_SID} ${REPORT_STATUS} ${START_DATE} ${START_DATE} | tee -a ${LOGFILE}
else
ORACLE_HOME=`get_Oracle_Home ${ORACLE_SID}`
log "ORACLE_SID = ${ORACLE_SID} : ORACLE_HOME = ${ORACLE_HOME}"
# BACKUPDIR=`get_Backup_Dir ${ORACLE_SID}`
get_bkup_dirs
log "ORACLE_SID = ${ORACLE_SID} : Backup Directory = ${BACKUPDIR}"
log "ORACLE_SID = ${ORACLE_SID} : Backup Directory 1 = ${BACKUPDIR1}"
log "ORACLE_SID = ${ORACLE_SID} : Backup Directory 2 = ${BACKUPDIR2}"
log "ORACLE_SID = ${ORACLE_SID} : Backup Directory 3 = ${BACKUPDIR3}"
log "ORACLE_SID = ${ORACLE_SID} : Backup Directory 4 = ${BACKUPDIR4}"
BKUPTYP=`get_dbmodes_value ${ORACLE_SID} BKUPTYP ONLINE`
log "ORACLE_SID = ${ORACLE_SID} : BKUPTYP = ${BKUPTYP}"
REPORT_STATUS='INPROGRESS'
${ADMIN_DIR}/insert_backup_status.sh ${ORACLE_SID} ${REPORT_STATUS} ${START_DATE} | tee -a ${LOGFILE}
# Start background process to sleep for $BKUPTIMELIMIT minutes and then verify
# the backup for this SID has completed using the lock file created above
# (if the lock file still exists after sleeping, then the backup must have hung)
#
# check_for_hanging_backup ${ORACLE_SID} ${START_DATE}
STATUS=0
# List Contents of Backup Directory before Backup
#
list_bkup_dir ${BACKUPDIR}
log "Starting ${BKUPTYPE} Backup"
# Initialize Report Status
#
# REPORT_STATUS=UNKNOWN
# Incremental Backup Of The Database
#
if [ ${INCREMENTALONLY} = Y ]
then
incremental_bkup_db_to_disk
# echo "Doing Incremental Backup" $INCREMENTALONLY $ARCHIVEONLY
STATUS=${?}
# Log the Exit Code
#
log "ORACLE_SID = ${ORACLE_SID} : Incremental Backup of database completed with return code of ${STATUS}"
REPORT_STATUS=`get_bkup_status ${REPORT_STATUS} ${STATUS}`
log "ORACLE_SID = ${ORACLE_SID} : Report Status = ${REPORT_STATUS}"
ARCHIVEONLY=Y
fi
if [ ${ARCHIVEONLY} != Y ]
then
# Full Backup Of The Database
#
bkup_db_to_disk
#echo "Doing Full Backup" $INCREMENTALONLY $ARCHIVEONLY
STATUS=${?}
# Log the Exit Code
#
log "ORACLE_SID = ${ORACLE_SID} : Backup of database completed with return code of ${STATUS}"
REPORT_STATUS=`get_bkup_status ${REPORT_STATUS} ${STATUS}`
log "ORACLE_SID = ${ORACLE_SID} : Report Status = ${REPORT_STATUS}"
fi
# Backup the Archived Logs
#
bkup_arch_to_disk
STATUS=${?}
# Log the Exit Code
#
log "ORACLE_SID = ${ORACLE_SID} : Backup of archived logs completed with return code of ${STATUS}"
REPORT_STATUS=`get_bkup_status ${REPORT_STATUS} ${STATUS}`
log "ORACLE_SID = ${ORACLE_SID} : Report Status = ${REPORT_STATUS}"
if [ ${BKUPTOTAPE} = T ]
then
log "ORACLE_SID = ${ORACLE_SID} : Backup sets will be transferred to tape"
# Transfer the Database Backup Sets to Tape
#
bkup_db_to_tape Oracle-RMAN
STATUS=${?}
# Log the Exit Code
#
log "ORACLE_SID = ${ORACLE_SID} : Transfer of backup sets to tape completed with return code of ${STATUS}"
REPORT_STATUS=`get_bkup_status ${REPORT_STATUS} ${STATUS}`
log "ORACLE_SID = ${ORACLE_SID} : Report Status = ${REPORT_STATUS}"
fi
if [ ${BKUPTOTAPE} = D ]
then
log "ORACLE_SID = ${ORACLE_SID} : Backup sets will be transferred to tape"
# Transfer the Database Backup Sets to Data Domain
#
bkup_db_to_tape Oracle-RMAN-DD
STATUS=${?}
# Log the Exit Code
#
log "ORACLE_SID = ${ORACLE_SID} : Transfer of backup sets to Data Domain completed with return code of ${STATUS}"
REPORT_STATUS=`get_bkup_status ${REPORT_STATUS} ${STATUS}`
log "ORACLE_SID = ${ORACLE_SID} : Report Status = ${REPORT_STATUS}"
fi
# Copy init.ora File to Alternate Location
# ??? Do we need or want to do this ???
# ??? Umesh and Romayne say yes ???
#
# if [ -s ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora ]
# then
# cp ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora ${BACKUPDIR}/init${ORACLE_SID}.ora.`date +%d-%m-%Y.%H:%M:%S`
# cp ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora ${BACKUPDIR}/${TAG_DATE}_init${ORACLE_SID}
# fi
# Copy Password File to Alternate Location
# ??? Do we need or want to do this ???
# if [ -s ${ORACLE_HOME}/dbs/orapw${ORACLE_SID} ]
# then
# cp ${ORACLE_HOME}/dbs/orapw${ORACLE_SID} ${BACKUPDIR}/orapw${ORACLE_SID}.`date +%d-%m-%Y.%H:%M:%S`
# cp ${ORACLE_HOME}/dbs/orapw${ORACLE_SID} ${BACKUPDIR}/${TAG_DATE}_orapw${ORACLE_SID}
# fi
# Set the Status for Report
if [ ${REPORT_STATUS} = UNSUCCESSFUL ]
then
#BKUPFAILALERT=`get_dbmodes_value ${ORACLE_SID} BKUPFAILALERT N`
BKUPFAILALERT=`get_dbmodes_value ${ORACLE_SID} BKUPFAILALERT`
log "ORACLE_SID = ${ORACLE_SID} : BKUPFAILALERT = ${BKUPFAILALERT}"
if [ ${BKUPFAILALERT} = Y ]
then
${ADMIN_DIR}/send_mail.sh critical "Backup Failure" "${HOST}:${ORACLE_SID}:Backup Failed"
fi
fi
# Log the Backup Status
#
log "RMAN: The Full Online Backup of ${ORACLE_SID} was ${REPORT_STATUS}"
# List Contents of Backup Directory after Backup
#
list_bkup_dir ${BACKUPDIR}
fi
# Cleanup after the Backup is done
#
end_backup ${ORACLE_SID} ${START_DATE}
# 06/08/2006 SRF - replaced call to report_backup_status.sh with call to update_backup_status.sh
# which updates the record written earlier in this script (key is HOST, SID
# and START DATE) - adding the END DATE and changing the STATUS
${ADMIN_DIR}/update_backup_status.sh ${ORACLE_SID} ${REPORT_STATUS} ${START_DATE} | tee -a ${LOGFILE}
# 07/02/2008 - The script update_rman_transition_status.sh is called to update the backup type used
# by the database,this information is used to track the transition of backups
# to RMAN.
${ADMIN_DIR}/update_rman_transition_status.sh ${HOST} ${ORACLE_SID} RMAN | tee -a ${LOGFILE}
fi
fi
done
#
# Exit the Script with the Exit Status
#
exit ${STATUS}