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

本文介绍了两个用于Oracle数据库备份的脚本,一个是远程通过TELNET备份数据到磁带机的SHLL脚本,另一个是自动执行的RMAN备份脚本。脚本详细说明了备份过程,包括磁带检查、全量备份、增量备份以及归档日志备份等步骤,同时记录备份日志。这些脚本对于维护数据库的安全性和可靠性至关重要。
摘要由CSDN通过智能技术生成

(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

}

本文出自:亿恩科技【www.enkj.com】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值