RMAN自动备份和磁带机备份SHELL脚本


(1)远程TELNET备份数据到磁带机的SHLL脚本

lgmfis:/u01/Oracle/CIC/BACKUP ] cat TAPE_BACKUP.sh
: ${OK=0} ${FAIL=1} ${CANCEL=3}
: ${MM=`date +%m`}
: ${DD=`date +%d`}
: ${YY=`date +%Y`}
: ${DEVFILn='/dev/rmt/0cn'}
: ${FLOG=/u01/oracle/CIC/LOG/TAPE_bk_${MM}${DD}.log}
: ${FLST=/u01/oracle/CIC/LOG/TAPE_bk_${MM}${DD}.lst}
: ${HOST=`uname -n`}
. /u01/oracle/CIC/BACKUP/common.sh
START_YMD=`date +%Y%m%d`
START_HMS=`date +%H%M%S`
echo "  $HOST TAPE Backup start at $START_YMD $START_HMS    "     >> $FLOG
#chkdate=`get_before_date ${YY}${MM}${DD}`
#tmpdate=`expr substr $chkdate 5 5`
/usr/bin/mt -f ${DEVFILn} rewind

if [ $? -eq 0 ]
then
   echo "## Tape Check : Success/n"                          >> $FLOG
   echo "## Tape Check : Success/n"
else
   echo "## Tape Check : Error(Insert tape into Device)/n"   >> $FLOG
   echo "## Tape Check : Error(Insert tape into Device)/n"

   exit ${FAIL}
fi

echo "## Step 1 : FULL Backup                 ###"        >> $FLOG

cd /

find fz02/RMANBK/lgmfis/*${MM}${DD}* -print|sort -rn +1|head -9| cpio -ocv -H od

c -C 30720 -O $DEVFILn | tee -a $FLST

find u08/EXP_BK/FZLFMES/*${MM}${DD}.* -print | cpio -ocv -H odc -C 30720 -O $DEV

FILn | tee -a $FLST


mt -f $DEVFILn offline
echo "## Step 1 : FULL Backup    End             ###"        >> $FLOG

echo "please insert the secound tape"
Getyn "Was the secound tape insert? (y/n)"

echo "## Step 2 : lgmfis db file & EXP Backup                 ###"        >> $FL

OG

/usr/bin/mt -f ${DEVFILn} rewind
cd /

find fz02/RMANBK/lgmfis/*${YY}${MM}${DD}* -print|sort -n +1|head -7| cpio -ocv -

H odc -C 30720 -O $DEVFILn | tee -a $FLST
#find u08/EXP_BK/lgmfis/*${MM}${DD}.* -print | cpio -ocv -H odc -C 30720 -O $DEV

FILn | tee -a $FLST

echo "## Step 2 : lgmfis db file & EXP Backup    END             ###"        >>

$FLOG

mt -f $DEVFILn offline
echo "please insert the third tape"
Getyn "Was the third tape insert? (y/n)"

/usr/bin/mt -f ${DEVFILn} rewind
cd /

echo "## Step 3 : lgmfis arch & FZLFMES DATAFILE & ARCH & export Backup

        ###"        >> $FLOG
find fz01/RMANBK/FZLFMES/*${MM}${DD}* -print | cpio -ocv -H odc -C 30720 -O $DEV

FILn | tee -a $FLST
find fz02/RMANBK/lgmfis/*${MM}${DD}* -print|sort -rn +1|sed -n '10,11p;11q'| cpi

o -ocv -H odc -C 30720 -O $DEVFILn | tee -a $FLST
echo "## Step 3 : lgmfis arch & FZLFMES DATAFILE & ARCH & export Backup   End

 ###"   >> $FLOG

mt -f $DEVFILn offline

echo "please insert the fourth tape"
Getyn "Was the fourth tape insert? (y/n)"

/usr/bin/mt -f ${DEVFILn} rewind
cd /

echo "## Step 4 : lgmfis arch & FZLFMES DATAFILE & ARCH & export Backup

        ###"        >> $FLOG
find u08/EXP_BK/lgmfis/*${MM}${DD}.* -print | cpio -ocv -H odc -C 30720 -O $DEVF

ILn | tee -a $FLST
find u08/RMANBK/lgmfis/*${MM}${DD}* -print | cpio -ocv -H odc -C 30720 -O $DEVFI

Ln | tee -a $FLST
echo "## Step 4 : lgmfis arch & FZLFMES DATAFILE & ARCH & export Backup   End

 ###"   >> $FLOG

cd /


(2)自动RMAN脚本:

[lgmfisu:root] /u01/oracle/CIC/BACKUP> cat DB_FULL_lgmfis.sh
MM=`date +%m`
DD=`date +%d`
YY=`date +%y`

RMAN_LOG_FILE=/u01/oracle/CIC/LOG/FULL_HOT_lgmfis_${YY}${MM}${DD}.log

ORACLE_HOME=/u01/app/oracle/product/9.2.0
export ORACLE_HOME

ORACLE_SID=lgmfis
export ORACLE_SID
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
#find /fz02/RMANBK/lgmfis -mtime +0 -exec rm {} /;
find /u08/RMANBK/lgmfis -mtime +0 -exec rm {} /;
rm -f /fz02/RMANBK/lgmfis/db_full*

/u01/app/oracle/product/9.2.0/bin/rman target / nocatalog msglog $RMAN_LOG_FILE
append << EOF
RUN {
BACKUP FULL
    FILESPERSET 4
    FORMAT '/fz02/RMANBK/lgmfis/db_full_%T_%s_%p'
    DATABASE;
sql 'alter system archive log current';
BACKUP
   filesperset 20
   FORMAT '/u08/RMANBK/lgmfis/al_%T_%s_%p'
   ARCHIVELOG ALL DELETE INPUT;
BACKUP
    FORMAT '/fz02/RMANBK/lgmfis/cntrl_%T_%s_%p'
    CURRENT CONTROLFILE;
}
EOF

#find /fz02/RMANBK/lgmfis -mtime +0 -exec rm {} /;
#find /u08/RMANBK/lgmfis -mtime +0 -exec rm {} /;
you have mail in /var/mail/root
[lgmfisu:root] /u01/oracle/CIC/BACKUP>

mt -f $DEVFILn offline
END_YMD=`date +%Y%m%d`
END_HMS=`date +%H%M%S`

echo "  $HOST  TAPE Backup Successfully Ended At $END_YMD $END_HMS    "     >> $

FLOG

 

另外个文件:COMMON.SH

[lgmfisu:root] /u01/oracle/CIC/BACKUP> cat common.sh
get_before_date()
{
 Y=`expr substr $1 1 4`
 M=`expr substr $1 5 2`
 D=`expr substr $1 7 2`
 YY=`expr $Y - 1`
 MM=`expr $M - 1`
 DD=`expr $D - 1`
 MM=`printf "%02d" $MM`
 DD=`printf "%02d" $DD`
 dd=$Y$MM
 dad=`get_mon_days $dd`
 be_date=$Y$M$DD
 if [ $D -eq 01 ]
 then
 if [ $M -ne 01 ]
 then
 be_date=$Y$MM$dad
 fi
 if [ $M -eq 01 ]
                then
                        be_date=$YY"1231"
                fi
   fi
        echo $be_date

}


Getyn() {
       while echo "/n$* (y/n)? /c"
               do read yn
                        case "$yn" in
                                [Yy] )  return $OK      ;;
                                [Nn] )  ConfirmYn "cancel The Job ?" ;;
                                  *  ) echo "Please enter y or n"  ;;
                        esac
                done
 }

ConfirmYn() {
       while echo "/n$* (y/n)? /c"
               do read yn
                        case "$yn" in
                                [Nn] ) return $OK       ;;
                                [Yy] ) echo "/n The Job is canceled."
                                       sleep 3
                                       exit $CANCEL     ;;
                                  *  ) echo "Please enter y or n"  ;;
                        esac
                done
}

相关内容