RMAN定时备份脚本(全备+增量备份+控制文件+参数文件)

########################################################################
##   kfc_incremental_hot_database_backup.sh  ##
##   created by  NBU TEMP                    ##
##        2012-3-8                           ##
#########################################################################

#!/bin/ksh

export LANG=en_US
BACKUP_DATE=`date +%d`
RMAN_LOG_FILE=/home/oracle/1028/log/backupinfo.out
TODAY=`date`
USER=`id|cut -d "(" -f2|cut -d ")" -f1`
echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE

ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_HOME

RMAN=$ORACLE_HOME/bin/rman
export RMAN

ORACLE_SID=orcl
export ORACLE_SID

ORACLE_USER=oracle
export ORACLE_USER

echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE
echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE
echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE
echo "==========================================">>$RMAN_LOG_FILE
echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE
echo "                   ">>$RMAN_LOG_FILE

#touch $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE

WEEK_DAILY=`date +%a`

case  "$WEEK_DAILY" in
       "Mon")
            BAK_LEVEL=1
            ;;
       "Tue")
            BAK_LEVEL=1
            ;;
       "Wed")
            BAK_LEVEL=1
            ;;
       "Thu")
            BAK_LEVEL=1
            ;;
       "Fri")
            BAK_LEVEL=1
            ;;
       "Sat")
            BAK_LEVEL=0
            ;;
       "Sun")
            BAK_LEVEL=1
            ;;
       "*")
            BAK_LEVEL=error
esac

export BAK_LEVEL=$BAK_LEVEL

echo "Today is : $WEEK_DAILY  incremental level= $BAK_LEVEL">>$RMAN_LOG_FILE


RUN_STR="

BAK_LEVEL=$BAK_LEVEL
export BAK_LEVEL

ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME

ORACLE_SID=$ORACLE_SID
export ORACLE_SID

$RMAN nocatalog TARGET sys/oracle msglog $RMAN_LOG_FILE append <<EOF
run
{
  allocate channel c1 type disk;
  allocate channel c2 type disk;

  backup  incremental level= $BAK_LEVEL  skip inaccessible filesperset 5 Database format='/home/oracle/1028/backup/orcl_lev"$BAK_LEVEL"_%U_%T'  tag='orcl_lev"$BAK_LEVEL"' ;

  sql 'alter system archive log current';

  backup archivelog all tag='arc_bak' format='/home/oracle/1028/backup/arch_%U_%T' skip inaccessible  filesperset 5 not  backed up 1 times  delete input;

  backup current controlfile tag='bak_ctlfile' format='/home/oracle/1028/backup/ctl_file_%U_%T';

  backup spfile tag='spfile' format='/home/oracle/1028/backup/ORCL_spfile_%U_%T';

  release channel c2;
  release channel c1;
}

report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
list backup summary;
EOF

"
# Initiate the command string

if [ "$CUSER" = "root" ]
then
    echo "Root Command String: $RUN_STR" >> $RMAN_LOG_FILE
    su - $ORACLE_USER -c "$RUN_STR" >> $RMAN_LOG_FILE
    RSTAT=$?
else
    echo "User Command String: $RUN_STR" >> $RMAN_LOG_FILE
    /bin/sh -c "$RUN_STR" >> $RMAN_LOG_FILE
    RSTAT=$?
fi

# ---------------------------------------------------------------------------
# Log the completion of this script.
# ---------------------------------------------------------------------------

if [ "$RSTAT" = "0" ]
then
    LOGMSG="ended successfully"
else
    LOGMSG="ended in error"
fi

echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE

exit $RSTAT


备注:根据实际情况更改创建目录,全备及增量备份的日期根据需要设置

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值