签到成功

知道了

CNDBA社区CNDBA社区

RMAN增量两周一循环通用脚本

2018-03-29 20:58 2532 0 原创 RMAN备份
作者: Marvinn

RMAN定时任务脚本说明
亲测可用
使用前只需更改配置ENV以及SH_HOME脚本存放路径,其他可自动获取

oracle 用户下crontab 定时即可http://www.cndba.cn/Marvinn/article/2700http://www.cndba.cn/Marvinn/article/2700

http://www.cndba.cn/Marvinn/article/2700
http://www.cndba.cn/Marvinn/article/2700http://www.cndba.cn/Marvinn/article/2700http://www.cndba.cn/Marvinn/article/2700http://www.cndba.cn/Marvinn/article/2700http://www.cndba.cn/Marvinn/article/2700

备份规则
区分单双周:
双周备份规则 2 2 1 2 2 1 2
单周备份规则 2 2 1 2 2 1 0
所以备份从0级从单周开始执行,两周一次0级备份
备份RMAN 脚本同意存放于$SH_HOME目录下

http://www.cndba.cn/Marvinn/article/2700
http://www.cndba.cn/Marvinn/article/2700

##################################################################
##   rman_incremental_task.sh               ##
#                ##
##        2018-03-27                         ##
##################################################################
#! /bash/bin

#Configure ENV
source ~/.bash_profile

export LANG=en_US
BACKUP_DATE=`date +%d`
RMAN_LOG_FILE=${0}.out
TODAY=`date`
USER=`id|cut -d "(" -f2|cut -d ")" -f1`
echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE

SH_HOME=/u01/backup/scripts                         #CONFIGURE BACKUP FILE PATH
export SH_HOME
mkdir -p $SH_HOME/log

#Get Oracle ENV
if [ -d $ORACLE_HOME ]; then
        export ORACLE_HOME=$ORACLE_HOME
else
        echo "NOT FOUND ORACLE_HOME"
fi

if [ -d $ORACLE_BASE ]; then
        echo $ORACLE_BASE
        export ORACLE_BASE=$ORACLE_BASE
else
        echo "NOT FOUND ORACLE_BASE"
fi

if [ -n $ORACLE_SID  ]; then
        echo $ORACLE_SID
        export ORACLE_SID=$ORACLE_SID
else
        echo "NOT FOUND ORACLE_SID"
fi


#Get RMAN HOME AND USER
RMAN=$ORACLE_HOME/bin
export RMAN
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_HOME:$RMAN">>$RMAN_LOG_FILE
echo "==========================================">>$RMAN_LOG_FILE
echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE
echo "                   ">>$RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE

#Jduge Single week And Dual Week
WEEK_DAILY=`date +%a`
ODD_EVEN=$(expr `date +%U` % 2)
if [ $ODD_EVEN -eq "0" ]
then
    echo This week is dual week.
case  "$WEEK_DAILY" in
       "Mon")
            BAK_LEVEL=2
            ;;
       "Tue")
            BAK_LEVEL=2
            ;;
       "Wed")
            BAK_LEVEL=1
            ;;
       "Thu")
            BAK_LEVEL=2
            ;;
       "Fri")
            BAK_LEVEL=2
            ;;
       "Sat")
            BAK_LEVEL=1
            ;;
       "Sun")
            BAK_LEVEL=2
            ;;
       "*")
            BAK_LEVEL=error
esac
else
    echo This week is singular week.
case  "$WEEK_DAILY" in
       "Mon")
            BAK_LEVEL=2
            ;;
       "Tue")
            BAK_LEVEL=2
            ;;
       "Wed")
            BAK_LEVEL=1
            ;;
       "Thu")
            BAK_LEVEL=2
            ;;
       "Fri")
            BAK_LEVEL=2
            ;;
       "Sat")
            BAK_LEVEL=1
            ;;
       "Sun")
            BAK_LEVEL=0
            ;;
       "*")
            BAK_LEVEL=error
esac
fi

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

#-----------------------------------------------------------------------
#Confirm whether the oracle IS runing
#-----------------------------------------------------------------------
VALUE=`sqlplus -S "/ as sysdba" << !
set heading off
set feedback off
set pagesize 0
set verify off
set echo off
select to_char(sysdate,'yyyy-mm-dd') today from dual;
exit
!`

if [ -n $VALUE ]; then
        echo "The rows is $VALUE">>$RMAN_LOG_FILE
        echo "Database Is Open">>$RMAN_LOG_FILE
else
        echo "Database Isnot Open Or Abnormal">>$RMAN_LOG_FILE
fi

#-----------------------------------------------------------------------
#Begin TO backup
#----------------------------------------------------------------------
if [ $BAK_LEVEL = "0" ]; then
        rman target / @$SH_HOME/backup_level0.rcv log=$SH_HOME/log/rmanfullback_level0_`date +"%Y-%m-%d"`.log
        #echo '0'
elif [ $BAK_LEVEL = "1" ]; then
        rman target / @$SH_HOME/backup_level1.rcv log=$SH_HOME/log/rmanfullback_level1_`date +"%Y-%m-%d"`.log
        #echo '1'
else
        rman target / @$SH_HOME/backup_level2.rcv log=$SH_HOME/log/rmanfullback_level2_`date +"%Y-%m-%d"`.log
        #echo '2'
fi

#Archive log Backup
rman target / @$SH_HOME/archback.rcv log=$SH_HOME/log/rmanarchlog_back_`date +"%Y-%m-%d"`.log      

#DELETE RMAN OUTPUT LOG
find $SH_HOME/log/rman*.log -mtime +20 -exec rm {} /;                                   


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

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Marvinn

Marvinn

关注

路漫漫其修远兮、吾将上下而求索

  • 99
    原创
  • 0
    翻译
  • 2
    转载
  • 36
    评论
  • 访问:458458次
  • 积分:449
  • 等级:中级会员
  • 排名:第12名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ