#!/bin/ksh #---------------------------------------------------------------# # Script generates online backup scripts and run the scripts # # ---------------------------------------------------------- # # Date : 2000/08/11 # # ---- # #---------------------------------------------------------------# # NOTES : For implementation of script: # # ------- # # 1. Create a separate directory where the script resides # # because the program generates it's own scripts for # # the run of a backup. # # 2. Table ORA_ONLINE_BACKUP is created and maintained by # # this program to run the correct cycle for a specific day # # when this program is used to break the online backup of the# # database into more than 1 backup piece. # # Trigger is also required to ensure only 1 row resides in # # table. # # # # create table ORA_ONLINE_BACKUP # # ( cycle number(1)); # # # # create or replace trigger # # backup_trigger before insert on ORA_ONLINE_BACKUP # # for each row # # declare # # num_rows number; # # begin # # select count(*) into num_rows from ORA_ONLINE_BACKUP; # # if num_rows > 0 # # then # # raise_application_error(-20000, 'Only 1 row allowed in table');# # end if; # # end; # # / # # 3. Table ORA_ONLINE_BACKUP_FILES is created and maintained # # for recordkeeping of when files was last backed up. # # # # create table ORA_ONLINE_BACKUP_FILES # # ( file_name varchar2(513), # # last_backup date ); # # # # create unique index ORA_ONLINE_BACKUP_KEY # # on ORA_ONLINE_BACKUP_FILES ( file_name ); # # 4. Procedure ORA_BACKUP_PROC1 for updating above table # # during run of backup. # # # # create or replace procedure ORA_BACKUP_PROC1 ( file1 varchar2 ) # # as # # begin # # insert into ora_online_backup_files # # values ( file1 , sysdate ); # # commit; # # exception # # when dup_val_on_index # # then update ora_online_backup_files # # set last_backup = sysdate # # where file_name = file1; # # commit; # # end; # #/ # # # # # #---------------------------------------------------------------# # # # # # # # Changes : # # --------- # # # # # #---------------------------------------------------------------# # # # Working Environment # # ------------------- # PROGNAME=onlinebackup.ksh DBUSER=ops\$backup DBPASS=backreco WORKDIR=/usr1/app/oracle/product/8.0.5/home/desibackup WORKFILE=workfile.in NEWWORKFILE=newworkfile.in CONTROLFILE=controlfile.in UPDATEFILE=updatefile.in BACKUPCONTROLFILE=$ORACLE_SID''backupcontrolfile.control TRACECONTROLFILE=$ORACLE_SID''backupcontrolfile.trace ENDSQL=end.sql GENSQL=gen.sql BEGINSQL=begin.sql NETWORKER=backfile_networker BACKUPRUN=backfile_run BACKSUCCESS=success BACKUPLOGFILE=$ORACLE_SID''_backup.logfile SYSTEM_001PR=`cat /var/opt/oracle/SYSTEM_001P` INSTALLFLAG=nono integer DBCYCLE=0 integer counter1=1 integer counter2=0 integer NOFILES=0 integer DBLOGFILE=0 # # # # -------------------------------------------------------# # Check whether tables,triggers etc. are installed before# # run of script. # # # #--------------------------------------------------------# # echo "--------------------------------------" echo "STARTING INSTALL OR DATABASE UP CHECK " echo "--------------------------------------" echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "select '1' from ORA_ONLINE_BACKUP ;" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL INSTALLFLAG=`sqlplus -s $DBUSER/$DBPASS @$WORKDIR/$GENSQL` rm $WORKDIR/$GENSQL if [ $INSTALLFLAG = 1 ] then echo " " else echo "------------------------------------------" echo "INSTALLFLAG value : $INSTALLFLAG " echo "------------------------------------------" echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID " >> err.out echo "Table ORA_ONLINE_BACKUP does not exist or database down !!" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID " echo "Table ORA_ONLINE_BACKUP does not exist or database down !!" echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out exit; fi; # # #------------------------------------------------------------# # Check input parameter for amount of backup pieces # #------------------------------------------------------------# # echo "--------------------------------------" echo "CHECKING INPUT PARAMETER............. " echo "--------------------------------------" echo "***************************************************" echo " Input parameter for no of files : $1" NOFILES=$1 echo " Run Cycles generated is : $NOFILES " echo "***************************************************" # if [ $NOFILES -eq 0 ] then echo "**************************************************" echo " Mandatory parameter for no of cycles to generate " echo " was not passed to program : Please restart " echo " I.E. PROGRAM PARAMETER1 " echo "**************************************************" exit fi; if [ $NOFILES -gt 9 ] then echo "**************************************************" echo " Parameter for cycles is out of range. Only use " echo " 1 - 9. " echo "**************************************************" exit fi; #------------------------------------------------------------# # Check for already running backup : # #------------------------------------------------------------# echo "--------------------------------------" echo "CHECKING FOR ALREADY RUNNING BACKUP.. " echo "--------------------------------------" signalle=yep integer counter=0 integer counter1=0 while [ $signalle = yep ] do counter=$counter+1 counter1=`ps -ef|grep "$PROGNAME" |grep -v grep|grep -v "sh -c" | wc -l` if [ counter1 -gt 1 ] then echo "Another Backup for $ORACLE_SID is busy" echo "Waiting 5 minutes..... " sleep 300 else signalle=norunning fi; if [ $counter -gt 48 ] then signalle=nono fi; done if [ $signalle = nono ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID failed " >> err.out echo " due to waiting for more than " >> err.out echo " 4 hours for previous job " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID failed " echo " due to waiting for more than " echo " 4 hours for previous job " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out exit fi; # # #------------------------------------------------------------# # S T A R T O F B A C K U P : # #------------------------------------------------------------# # # echo "--------------------------------------" echo "STARTING BACKUP...................... " echo "--------------------------------------" echo " ----------------------------------------------------- " >> $WORKDIR/$BACKUPLOGFILE echo " BACKUP STARTED :" >> $WORKDIR/$BACKUPLOGFILE date >> $WORKDIR/$BACKUPLOGFILE # # # # -------------------------------------------------------# # Check for day's cycle in table ORA_ONLINE_BACKUP # # # #--------------------------------------------------------# # echo "--------------------------------------" echo "GETTING CYCLE FOR BACKUP RUN......... " echo "--------------------------------------" echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "select cycle from ORA_ONLINE_BACKUP ;" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL DBCYCLE=`sqlplus -s $DBUSER/$DBPASS @$WORKDIR/$GENSQL` if [ $? -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID " >> err.out echo "Table ORA_ONLINE_BACKUP does not exist or database down !!" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID " echo "Table ORA_ONLINE_BACKUP does not exist or database down !!" echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out exit; fi; echo "-------------------" echo "DBCYCLE : $DBCYCLE " echo "-------------------" # if [ DBCYCLE -gt NOFILES ] then DBCYCLE=$NOFILES echo "-------------------" echo "NEW DBCYCLE : $DBCYCLE" echo "-------------------" fi; echo " BACKUP CYCLE : $DBCYCLE" >> $WORKDIR/$BACKUPLOGFILE # #------------------------------------------------------------# # Switch database logfile : # #------------------------------------------------------------# echo "--------------------------------------" echo "SWITCHING DATABASE LOGFILE........... " echo "--------------------------------------" # rm $WORKDIR/$GENSQL svrmgrl << EOF connect internal spool $WORKDIR/$GENSQL alter system switch logfile; spool off; EOF if [ $? -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID " >> err.out echo "ERROR : switch logfile failed " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID " echo "ERROR : switch logfile failed " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out fi; DBLOGFILE=`cat $WORKDIR/$GENSQL | grep -i ORA-09817 | wc -l` if [ $DBLOGFILE -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID " >> err.out echo "ERROR : Alert log file system is full!!!! " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID " echo "ERROR : Alert log file system is full!!!! " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out exit fi; rm $WORKDIR/$GENSQL # # #------------------------------------------------------------# # Backup controlfiles to $WORKDIR # #------------------------------------------------------------# # echo "--------------------------------------" echo "BACKING UP CONTROLFILE TO DIRECTORY.. " echo "--------------------------------------" rm $WORKDIR/$BACKUPCONTROLFILE echo "-------------------------------------------------------" echo " Backing up controlfile : $BACKUPCONTROLFILE" echo "-------------------------------------------------------" # svrmgrl << EOF connect internal alter database backup controlfile to '$WORKDIR/$BACKUPCONTROLFILE'; EOF if [ $? -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID " >> err.out echo "ERROR : Backup of controlfile failed " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID " echo "ERROR : Backup of controlfile failed " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out fi; # # # # # #------------------------------------------------------------# # Backup controlfiles to TRACE # #------------------------------------------------------------# # echo "--------------------------------------" echo "BACKING UP CONTROLFILE TO TRACE...... " echo "--------------------------------------" rm $WORKDIR/$TRACECONTROLFILE echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "alter database backup controlfile to trace;" >> $WORKDIR/$GENSQL echo "select rtrim(spid) from v\$process , v\$session" >> $WORKDIR/$GENSQL echo " where paddr = addr and" >> $WORKDIR/$GENSQL echo "sid in ( select sid from v\$session where " >> $WORKDIR/$GENSQL echo " audsid = userenv('sessionid'));" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL UPROCESSID=`sqlplus -s system/$SYSTEM_001PR @$WORKDIR/$GENSQL` rm $WORKDIR/$GENSQL echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "select rtrim(value) from v\$parameter where name = 'user_dump_dest';" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL USERDUMPDEST=`sqlplus -s system/$SYSTEM_001PR @$WORKDIR/$GENSQL` rm $WORKDIR/$GENSQL cp $USERDUMPDEST"/"$ORACLE_SID""_ora_""$UPROCESSID.trc $WORKDIR/$TRACECONTROLFILE if [ $? -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID " >> err.out echo "ERROR : Copy of controlfile from trace to " >> err.out echo "ERROR : trace copy in workdir failed " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID " echo "ERROR : Copy of controlfile from trace to " echo "ERROR : trace copy in workdir failed " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out fi; # #------------------------------------------------------------# # Generate workfiles and sql's for backup run # #------------------------------------------------------------# # #------------------------------------------------------------# # List of datafiles: # # --------------------- # # echo "--------------------------------------" echo "GENERATING WORKFILES................. " echo "--------------------------------------" echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "set wrap off " >> $WORKDIR/$GENSQL echo "set lines 133" >> $WORKDIR/$GENSQL echo "spool $WORKDIR/$WORKFILE" >> $WORKDIR/$GENSQL echo "select rtrim(tablespace_name,' ')||' '||rtrim(a.file_name,' ')||' '||a.bytes||' '||'*'||substr(file_name,instr(file_name,'.',1,1)) from dba_data_files a, v\$datafile b where file_id = file# and to_char(trunc(creation_time),'yyyy-mm-dd') < to_char(trunc(sysdate),'yyyy-mm-dd') and a.file_name not in ( select file_name from ORA_ONLINE_BACKUP_FILES c where ( trunc(sysdate) - trunc(last_backup) ) > $NOFILES ) order by a.bytes desc,tablespace_name;" >> $WORKDIR/$GENSQL echo "spool off" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL sqlplus $DBUSER/$DBPASS @$WORKDIR/$GENSQL rm $WORKDIR/$GENSQL # # # List of new datafiles created on day of run of backup and # datafiles that has not been backed up due to creation of # new datafiles causing the generated backup run file to # shuffle a lot. #------------------------------------------------------- # # echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "set wrap off " >> $WORKDIR/$GENSQL echo "set lines 133" >> $WORKDIR/$GENSQL echo "spool $WORKDIR/$NEWWORKFILE" >> $WORKDIR/$GENSQL echo "select rtrim(tablespace_name,' ')||' '||rtrim(file_name,' ')||' '||a.bytes||' '||'*'||substr(file_name,instr(file_name,'.',1,1)) from dba_data_files a, v\$datafile b where file_id = file# and to_char(trunc(creation_time),'yyyy-mm-dd') = to_char(trunc(sysdate),'yyyy-mm-dd') order by a.bytes desc,tablespace_name;" >> $WORKDIR/$GENSQL echo "select rtrim(tablespace_name,' ')||' '||rtrim(a.file_name,' ')||' '||a.bytes||' '||'*'||substr(file_name,instr(file_name,'.',1,1)) from dba_data_files a, v\$datafile b where file_id = file# and a.file_name in ( select file_name from ORA_ONLINE_BACKUP_FILES c where ( trunc(sysdate) - trunc(last_backup) ) > $NOFILES ) order by a.bytes desc,tablespace_name;" >> $WORKDIR/$GENSQL echo "spool off" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL sqlplus $DBUSER/$DBPASS @$WORKDIR/$GENSQL rm $WORKDIR/$GENSQL # # # #------------------------------------------------------------# # Begin and end backup sql scripts : # # ---------------------------------- # # echo "--------------------------------------" echo "GENERATING BEGIN AND END SQL......... " echo "--------------------------------------" echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "spool $WORKDIR/$ENDSQL" >> $WORKDIR/$GENSQL echo "select 'alter tablespace '||tablespace_name||' end backup;' from dba_tablespaces;" >> $WORKDIR/$GENSQL echo "spool off" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL sqlplus $DBUSER/$DBPASS @$WORKDIR/$GENSQL rm $WORKDIR/$GENSQL echo "set heading off" > $WORKDIR/$GENSQL echo "set pages 0" >> $WORKDIR/$GENSQL echo "set feed off " >> $WORKDIR/$GENSQL echo "set echo off" >> $WORKDIR/$GENSQL echo "spool $WORKDIR/$BEGINSQL" >> $WORKDIR/$GENSQL echo "select 'alter tablespace '||tablespace_name||' begin backup;' from dba_tablespaces;" >> $WORKDIR/$GENSQL echo "spool off" >> $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$GENSQL sqlplus $DBUSER/$DBPASS @$WORKDIR/$GENSQL rm $WORKDIR/$GENSQL echo "exit;" >> $WORKDIR/$ENDSQL echo "exit;" >> $WORKDIR/$BEGINSQL # #------------------------------------------------------------# # Generate networker and backup run file for backup : # # --------------------------------------------------- # # # Current files : # --------------- # # echo "--------------------------------------" echo "GENERATING NETWORKER/BACKUP RUN FILE.." echo "--------------------------------------" integer counter1=1 integer counter2=0 rm $WORKDIR/$NETWORKER rm $WORKDIR/$BACKUPRUN rm $WORKDIR/$UPDATEFILE backfilerun="" cat $WORKDIR/$WORKFILE | while read TB DF DFSIZE DFSUFF do if [ $counter1 -eq $DBCYCLE ] then backfilerun=$backfilerun" "$DF echo "$DF" >> $WORKDIR/$UPDATEFILE echo "<< $DF >>" >> $WORKDIR/$NETWORKER echo " +compressasm: "$DFSUFF >> $WORKDIR/$NETWORKER echo " " >> $WORKDIR/$NETWORKER fi; if [ $counter2 -eq 0 ] ; then counter1=$counter1+1 ; fi if [ $counter2 -eq 1 ] ; then counter1=$counter1-1 ; fi if [ $counter1 -eq $NOFILES+1 ] -a [ $counter2 -eq 0 ] ; then counter1=$counter1-1 counter2=1 ; fi if [ $counter1 -eq 0 ] -a [ $counter2 -eq 1 ] ; then counter1=$counter1+1 counter2=0 ; fi done backfilerun=$backfilerun" "$WORKDIR/$BACKUPCONTROLFILE backfilerun=$backfilerun" "$WORKDIR/$TRACECONTROLFILE echo "<< $WORKDIR/$BACKUPCONTROLFILE >>" >> $WORKDIR/$NETWORKER echo " +compressasm: *.control" >> $WORKDIR/$NETWORKER echo " " >> $WORKDIR/$NETWORKER echo "<< $WORKDIR/$TRACECONTROLFILE >>" >> $WORKDIR/$NETWORKER echo " +compressasm: *.trace" >> $WORKDIR/$NETWORKER echo " " >> $WORKDIR/$NETWORKER # # # Newlyadded files : # ------------------ # # # cat $WORKDIR/$NEWWORKFILE | while read TB DF DFSIZE DFSUFF do backfilerun=$backfilerun" "$DF echo "$DF" >> $WORKDIR/$UPDATEFILE echo "<< $DF >>" >> $WORKDIR/$NETWORKER echo " +compressasm: "$DFSUFF >> $WORKDIR/$NETWORKER echo " " >> $WORKDIR/$NETWORKER done echo "/usr/bin/nsr/save -i -f $WORKDIR/$NETWORKER $backfilerun" > $WORKDIR/$BACKUPRUN # #------------------------------------------------------------# # Run of actual backup of files to tape : # #------------------------------------------------------------# # echo "--------------------------------------" echo "STARTING ACTUAL RUN OF BACKUP........." echo "--------------------------------------" svrmgrl << EOF connect internal @$WORKDIR/$ENDSQL; EOF svrmgrl << EOF connect internal @$WORKDIR/$BEGINSQL; EOF if [ $? -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID failed " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID failed " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out echo " BACKUP FAILED " >> $WORKDIR/$BACKUPLOGFILE echo " BACKUP ENDED :" >> $WORKDIR/$BACKUPLOGFILE date >> $WORKDIR/$BACKUPLOGFILE echo "-------------------------------------------------" >> $WORKDIR/$BACKUPLOGFILE exit fi; # echo " " echo " Starting save to tape..........." echo " " echo " " chmod 755 $WORKDIR/$BACKUPRUN # # echo "--------------------------------------" echo "SAVING TO TAPE........................" echo "--------------------------------------" SLEEPFLAG=on BACKSUCCESS=nono integer counter=0 # while [ $BACKSUCCESS = nono ] do $WORKDIR/$BACKUPRUN if [ $? -gt 0 ] then echo "---------------------------------" echo "save failed : Retrying .........." echo "---------------------------------" else BACKSUCCESS=success SLEEPFLAG=off counter=$counter+10 fi; if [ $SLEEPFLAG = on ] then echo "sleeping for 15 minutes" SLEEPFLAG=off sleep 900 fi; counter=$counter+1 if [ counter -eq 2 ] then echo " backup failed " BACKSUCCESS=failed fi; done svrmgrl << EOF connect internal @$WORKDIR/$ENDSQL; EOF if [ $? -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID failed " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID failed " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out exit fi; if [ $BACKSUCCESS = 'failed' ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Online backup of $ORACLE_SID failed " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Online backup of $ORACLE_SID failed " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out echo " BACKUP FAILED " >> $WORKDIR/$BACKUPLOGFILE echo " BACKUP ENDED :" >> $WORKDIR/$BACKUPLOGFILE date >> $WORKDIR/$BACKUPLOGFILE echo "-------------------------------------------------" >> $WORKDIR/$BACKUPLOGFILE exit fi; #-------------------------------------------------------------# # Update CYCLE for next backup run : # # ---------------------------------- # # # #-------------------------------------------------------------# echo "--------------------------------------" echo "UPDATE CYCLE FOR NEXT BACKUP RUN......" echo "--------------------------------------" DBCYCLE=$DBCYCLE+1 if [ DBCYCLE -gt NOFILES ] then DBCYCLE=1 fi; echo "--------------------------------" echo "Resetting DBCYCLE to : $DBCYCLE " echo "--------------------------------" svrmgrl << EOF connect internal update $DBUSER.ORA_ONLINE_BACKUP set cycle = $DBCYCLE; EOF if [ $? -gt 0 ] then echo "++++++++++++++++++++++++++++++++++++++++++++" > err.out echo "ERROR : Reset of cycle for next backup failed " >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" >> err.out echo "++++++++++++++++++++++++++++++++++++++++++++" echo "ERROR : Reset of cycle for next backup failed " echo "++++++++++++++++++++++++++++++++++++++++++++" mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out fi; # #-------------------------------------------------------------# # Update backup date in table : ORA_ONLINE_BACKUP_FILES # # ---------------------------------- # # # #-------------------------------------------------------------# # echo "--------------------------------------" echo "UPDATE BACKUP DATE OF FILES IN TABLE.." echo "--------------------------------------" cat $WORKDIR/$UPDATEFILE | while read FIL do echo "exec ORA_BACKUP_PROC1('$FIL')" >> $WORKDIR/$GENSQL done echo "exit;" >> $WORKDIR/$GENSQL sqlplus $DBUSER/$DBPASS @$WORKDIR/$GENSQL rm $WORKDIR/$GENSQL # # echo "********************************************************" echo " $ORACLE_SID ONLINE BACKUP COMPLETED SUCCESSFULLY " echo "********************************************************" echo "********************************************************" > err.out echo " $ORACLE_SID ONLINE BACKUP COMPLETED SUCCESSFULLY " >> err.out echo "********************************************************" >> err.out mailx -s "`uname -n`:$ORACLE_SID: Online Backup" oradba < err.out rm err.out echo " BACKUP COMPLETED SUCCESSFULLY " >> $WORKDIR/$BACKUPLOGFILE echo " BACKUP ENDED :" >> $WORKDIR/$BACKUPLOGFILE date >> $WORKDIR/$BACKUPLOGFILE echo "-------------------------------------------------" >> $WORKDIR/$BACKUPLOGFILE # # #------------------------------------------------------------# # T H E E N D # #------------------------------------------------------------#