Link to home
Start Free TrialLog in
Avatar of la_colibri
la_colibri

asked on

Can you look at this shell script and tell me where my backups are being saved?

Can you look at this shell script and tell me where my backups are being saved? Thanks I am not knowledgeable with shell scripts and can't understand it very well.

 
# Initialize variables. 
#
ORACLE_SID=ADCORPRD                                    # what we are backing
trace="N"                                              # for debugging
name=`whoami`
t_date=`date +'%m%d%y%H%M'`              
 
ORATAB_FILE=/etc/oratab                                # oratab file location
PATH=/bin:/etc:/usr/bin:/usr/sbin:/usr/local/bin:/home/backup/bin
 
SRC_SYSTEM=gcunx2
DST_SYSTEM=hqunx2
SCRIPT_DIR=/home/scripts/backup/hot/$ORACLE_SID
SCRIPT_DIR1=/home/scripts/notify
LOG_DIR=/home/scripts/backup/hot/$ORACLE_SID/log
LOG_FILE=/home/scripts/backup/hot/$ORACLE_SID/log/$ORACLE_SID.$t_date
 
ARCHIVE_LOG_DEST=""
 
 
########################################################################
if [ -z $SCRIPT_DIR ] ; then
   echo "SCRIPT_DIR not set, Exiting"
   exit 5
else
  if ! [ -d $SCRIPT_DIR ] ; then
    echo "SCRIPT_DIR nonexistant or Invalid. Exiting"
    exit 4
  fi
fi
 
cd $SCRIPT_DIR
 
########################################################################
# Quick sanity check to make sure we are running as oracle.
 
if [ $name != 'oracle' ] ; then
  echo "You must be oracle to run this program"
  exit 1
fi
 
########################################################################
# Make sure that the instance name exists in the oratab file to
# insure that the variables get set correctly. If not bail out now.
 
grep $ORACLE_SID $ORATAB_FILE > /dev/null
ret_val=$?
if [ $ret_val -ne 0 ] ; then                             # No Oratab entry
  echo "Invalid SID $ORACLE_SID in ORATAB,  Exiting"
  exit 4
fi
 
## Check to see that the ORACLE_SID variable contains something meaningful
if [ -z $ORACLE_SID ] ; then
  echo "Oracle SID not set or Invalid. Exiting"
  exit 5
fi
 
 
########################################################################
#
# Have oracle script set the appropriate shell variables
#
export ORAENV_ASK="NO"                                 # set oracle paths etc
. /usr/local/bin/oraenv
 
#####################################################################
# Remove stuff left over since last run.
#
rm -f errfile                                # last error file
rm -f ex_hotbackup.sql                       # last command file
 
 
#####################################################################
# Query Oracle to determine directories where things are located.
# Determine where the User Dump Files are located
# First determine where trace file is located.
 
USER_DUMP_DEST=`sqlplus -s / << EOF
set feedback off;
set echo off;
set heading off;
set pagesize 0;
select value from v\\$parameter where name = 'user_dump_dest';
quit;
EOF
`
if [ -z $USER_DUMP_DEST ] ; then
   echo "USER_DUMP_DEST not set, Exiting"
   exit 5
else
  if ! [ -d $USER_DUMP_DEST ] ; then
    echo "USER_DUMP_DEST nonexistant or Invalid. Exiting"
    exit 5
  fi
fi
 
 
#####################################################################
# Backup the current control file to trace in case we need it.
if [ $trace = 'Y' ] ; then
  echo "Creating and Backing up Trace Control file"
  read a
fi
 
sqlplus -s / << EOF
set feedback off;
set echo off;
alter database backup controlfile to trace;
quit;
EOF
> /dev/null
 
# Now move the tracefile we just created to the backup directory.
# Look in the user dump dest (where Oracle writes controlfile), and 
# find the 10 newest files and examine each to see if it is a controlfile.
# Copy the first backup controlfile to destination directory.
 
ls -1t $USER_DUMP_DEST/*.trc | head | while read t_file
do
  grep -l "CREATE CONTROLFILE DATABASE" $t_file > /dev/null  # is a ctl file?
  retval=$?
  if [ $retval -eq 1 ]; then                                 # yep, copy it
    fname=backup_controlfile.$ORACLE_SID
    mv $t_file  $SCRIPT_DIR/$fname
    rcp $SCRIPT_DIR/$fname $DST_SYSTEM:$SCRIPT_DIR/$fname
    if ! [ -s $SCRIPT_DIR/$fname ]; then
      echo "Warning: Controlfile could not be copied "
    fi
    break;
  fi
done
 
 
############################################################################
# Generate script to take each tablespace offline, and 
# back up all the datafiles that comprise the tablespace.
#
if [ $trace = 'Y' ] ; then
  echo "Generating Scriptfile for hotbackup"
  read a
fi
 
sqlplus -s / @gen_hotbackup.sql | awk -f gen_hotbackup.awk -v dest_sys=$DST_SYSTEM > ex_hotbackup.sql
 
#####################################################################
# test to see if the SQL we just created actually exists
 
if ! [ -s $SCRIPT_DIR/ex_hotbackup.sql ] ; then
  echo "Backup Script missing or 0 length. Exiting"
  exit 7
fi
 
#####################################################################
# test to see if the SQL we just created contains any errors 
 
if [ -s $SCRIPT_DIR/ex_hotbackup.sql ] ; then
  grep 'ORA-' $SCRIPT_DIR/ex_hotbackup.sql > /dev/null
  ret_val=$?
  if [ $ret_val -eq 0 ] ; then
    echo "Backup Script Contains Errors. See $SCRIPT_DIR/ex_hotbackup.sql. Exiting"
    exit 8
  fi
else
  echo "Backup Datafile missing or 0 length. Exiting"
  exit 8
fi
 
 
 
#####################################################################
# here is where the main portion of the backup gets done. Go ahead and
# run the script we just created.
 
echo "BACKUP Started at `date`" > $LOG_FILE
 
if [ $trace = 'Y' ] ; then
  echo "Executing Backup SQL"
fi
 
sqlplus -s / @$SCRIPT_DIR/ex_hotbackup.sql  >> $LOG_FILE
 
echo "BACKUP Ended at `date`" >> $LOG_FILE
 
grep 'ORA-' $LOG_FILE > /dev/null
ret_val=$?
if [ $ret_val -eq 0 ] ; then
    echo "WARNING Backup Script Contains Errors." 
    echo "See $LOG_FILE Exiting"
fi
 
#####################################################################
# Force a log switch, and then copy all but the last file to the destination
if [ $trace = 'Y' ] ; then
  echo "Forcing a log switch"
  #read a
fi
 
SWITCH=`sqlplus -s / << EOF
set feedback off;
set echo off;
set heading off;
set pagesize 0;
alter system switch logfile;
quit;
EOF
`
 
#####################################################################
# test to see if the errfile created by the script exists
if ! [ -s $SCRIPT_DIR/errfile ] ; then
  echo "Warning errfile missing or 0 length"
  exit 9
fi
 
###################################
# Notify of success if notify.good exists
#
 
ret_val=`cat errfile | awk '{ x+=$1} END{print x}'`
if [ $ret_val -eq 0 ] ; then
   SUBJ="$ORACLE_SID Hotbackup Successful"
   if [ -s $SCRIPT_DIR1/notify.good ] ; then               
    cat $LOG_FILE | sed -e '/^$/d'|mail -s "$SUBJ" `cat $SCRIPT_DIR1/notify.good`
  fi
else
   SUBJ="$ORACLE_SID Hotbackup FAILURE"
   if [ -s $SCRIPT_DIR1/notify.list ] ; then               
    echo $SUBJ | mail -s "$SUBJ" `cat $SCRIPT_DIR1/notify.list`
   fi
    cat $LOG_FILE | sed -e '/^$/d'|mail -s "$SUBJ" `cat $SCRIPT_DIR1/notify.list`
fi
 
#
#####################################################################
# Remove any log files created by this script that are older than 10 days
find $SCRIPT_DIR/log  \( -name "$ORACLE_SID.*" \) -mtime +10 -exec rm {} \;
 
exit 0

Open in new window

SOLUTION
Avatar of DocCan11
DocCan11

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
ASKER CERTIFIED SOLUTION
Avatar of schwertner
schwertner
Flag of Antarctica image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial