#!/bin/ksh # Script checks the free space of the Oracle archivelog mountpoint. # If the size is above the given threshold an email notification is sent # and an RMAN backup of the log files is started # This script can be modified, by removing the threshold requiremnet and # the "delete all input" and used as a regular Archivelog file backup. # backup_archivelog_space.sh # Set environment variables export ORACLE_SID=ORADB1 export ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome export PATH=$PATH:$ORACLE_HOME/bin host=$(hostname) filext=$(date +%m%d%y'_'%H%M) # First we determine how much space is being used in the archivelog destinataion USED=$(df -h /oracle/$ORACLE_SID/oraarch/ |grep -v Used% |awk '{print substr($5,1,length($5)-1)}') # check that no other rman processes are running rmancheck=$(ps -ef | grep "rman" | grep -v grep | awk '{print $8}') pcheck=$(echo $rmancheck | awk '{print $1}') if [[ $pcheck == rman ]]; then count=0; while (( count < 20)) && [[ $pcheck == rman ]]; do sleep 60 rmancheck=$(ps -ef | grep "rman" | grep -v grep | awk '{print $8}') pcheck= $(echo $rmancheck | awk '{print $1}') $((count += 1)) done rmancheck=$(ps -ef | grep "rman" | grep -v grep | awk '{print $8}') pcheck=$(echo $rmancheck | awk '{print $1}') if [[ $pcheck != rman ]] then : else (echo 'backup conflict') | mail -s "$ORACLE_SID Archivelog backup conflict.$USED percent full" \ $(cat /u01/app/oracle/admin/$ORACLE_SID/scripts/oracle/alert.lst) fi # If the used space is greater than or equal to 70%, an RMAN backup will start # Set used percentage threshold for script execution if (( $USED >= 70)) && [[ $pcheck != rman ]] then # Start RMAN process. Connect to database(ORADB1) and to RMAN catalog(rcat). Archivelog file name includes # %d: database name, %T: date format yyyymmdd, %U: system generated unique id # remove quotes from ""<"" rman<"<"EOJ spool log to '/u01/app/oracle/admin/$ORACLE_SID/adminlogs/archive_$filext.log'; connect target sys/password@ORADB1 connect catalog rmanadmin/password@rcat run {crosscheck archivelog all;} run {delete expired archivelog all;} yes configure default device type to 'SBT_TAPE'; configure device type 'SBT_TAPE' parallelism 2; show all; run{ backup format 'archive_%d_%T_%U.arc' archivelog all delete all input;} exit EOS # Email output file as a Word document attachment fileloc='/u01/app/oracle/admin/'$ORACLE_SID'/adminlogs/archive_'$filext'.log' filename='archive_'$filext'.log.doc' $(chmod 755 $fileloc) (cat /u01/app/oracle/admin/$ORACLE_SID/scripts/backup_scripts/archive_mail.txt; uuencode $fileloc $filename) \ |mail -s "$host Archivelog Backup Initiated Filesystem $USED Percent Full" \ $(cat /u01/app/oracle/admin/$ORACLE_SID/scripts/mail.lst) fi exit |