#!/bin/ksh ################################################################################ # Backup-Script fuer Online-Backup ORACLE Database "A" # # Martin Zahn 10.11.92 # ################################################################################ export PATH ORACLE_SID ORACLE_HOME # ORACLE_SID and ORACLE_HOME for Database "A" ORACLE_SID=A ORACLE_HOME=/opt/oracle # Directories to backup LOGDAY=`date +%d.%m.%y` case "`uname -n`" in be1sins8) BACKUPDIRS="data/ora_data opt/oracle/ora_data home/ora_data mo/ora_arch mo/ora_data" BACKUPLOG="/mo/ora_data/onlback_${ORACLE_SID}_${LOGDAY}.log" ;; be1sins9) BACKUPDIRS="." BACKUPLOG="/data/ora_data/onlback_${ORACLE_SID}_${LOGDAY}.log" ;; esac # Backup Medium (DAT) DEST="/dev/rmt/0m" # Directory which hold the offline redolog files case "`uname -n`" in be1sins8) archivedir="/mo/ora_arch" ;; be1sins9) archivedir="/data/ora_arch" ;; esac echo "============================ START BACKUP LOGGING =============================" >$BACKUPLOG # Check that Database is running if test -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.dbf -o \ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.ora then # Database is running echo "Datenbank $ORACLE_SID ist gestartet" >>$BACKUPLOG else # Database is not running echo "Datenbank $ORACLE_SID nicht gestartet !" >>$BACKUPLOG echo "****** Kein Backup durchgefuehrt ******" >>$BACKUPLOG echo "============================ END BACKUP LOGGING =============================" >>$BACKUPLOG cat $BACKUPLOG | mail oracle root mzahn wschmid hschneid exit 1 fi # Prepare PATH case $PATH in *$ORACLE_HOME/bin*);; *:) PATH=$PATH$ORACLE_HOME/bin;; *) PATH=$PATH:$ORACLE_HOME/bin;; esac # Prepare Tablespaces for Online-Backup sqldba <<-EOF >>$BACKUPLOG connect / # Save current online Redolog-File alter system switch logfile; # Save Log-Sequence Number archive log list # Mark Tablespaces for the START of Online-Backup alter tablespace system begin backup; alter tablespace data_ts begin backup; alter tablespace temp_ts begin backup; alter tablespace indx_ts begin backup; alter tablespace robs_ts begin backup; # Save one Controlfile alter database backup controlfile to '/home/ora_data/control_file' reuse; disconnect exit EOF # Do the Backup cd / echo "Start Backup (compressed data) at `date` on `uname -n`" >>$BACKUPLOG { find $BACKUPDIRS -fsonly hfs -print | cpio -ocxB | compress > $DEST } 1>>$BACKUPLOG 2>&1 if [ $? = 0 ] then STATUS=0 else STATUS=1 fi case "$STATUS" in 0) # Backup IO # Reset Tablespaces after the Online-Backup sqldba <<-EOF >>$BACKUPLOG connect / # Mark Tablespaces for the END of Online-Backup alter tablespace system end backup; alter tablespace data_ts end backup; alter tablespace temp_ts end backup; alter tablespace indx_ts end backup; alter tablespace robs_ts end backup; disconnect exit EOF # Remove old Redolog-Files end_seq=`cat $BACKUPLOG | grep "Oldest online log sequence" | awk ' { print $5 } '` liste=`ls ${archivedir} | cut -c 3-80 | sort -n` for i in $liste do if [ "$i" != "$end_seq" ] then echo "Deleting ${archivedir}/${ORACLE_SID}_${i}" >>$BACKUPLOG rm ${archivedir}/${ORACLE_SID}_${i} fi done echo "Backup erfolgreich beendet um `date`" >>$BACKUPLOG echo "============================== END BACKUP LOGGING =============================" >>$BACKUPLOG ;; 1) # Backup nicht IO # Reset Tablespaces after the Online-Backup sqldba <<-EOF >>$BACKUPLOG connect / # Mark Tablespaces for the END of Online-Backup alter tablespace system end backup; alter tablespace data_ts end backup; alter tablespace temp_ts end backup; alter tablespace indx_ts end backup; alter tablespace robs_ts end backup; disconnect exit EOF echo "Backup nicht erfolgreich beendet um `date`" >>$BACKUPLOG echo "============================== END BACKUP LOGGING =============================" >>$BACKUPLOG cat $BACKUPLOG | mail oracle root mzahn wschmid hschneid exit 1 ;; esac exit 0