熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

中小型數據庫RMAN CATALOG備份解決辦法

2013-11-13 15:53:14  來源: Oracle 

  RMAN還原shell腳本
    [python]
    下面的shell腳本用於實現數據庫的自動還原還原成功後數據庫被關閉因為我們在Prod數據庫無異常的情形下不需要bak 的備用庫open
    shell腳本做還原時調用了catalog中的全局腳本global_restore
    在腳本最尾部我們將DB還原是否成功的狀態輸出到日志文件db_restore_rmanlog這樣做的好處是我們可以將多個DB的還原狀態集中便於查看
    $ more db_restore_rman_catalogsh
    ##====================================================================
    ##   File name: db_restore_rman_catalogsh
    ##   Usage: db_restore_rman_catalogsh <$ORACLE_SID>
    ##   Desc:
    ##        The script uses to restore database with level backupset
    ##====================================================================
    #!/bin/bash
    #
    # Define variable
    #
    if [ f ~/bash_profile ]; then
    ~/bash_profile
    fi
    #
    #   Check SID
    #
    if [ z ${} ];then
    echo Usage:
    echo       `basename $` ORACLE_SID
    exit
    fi
    ORACLE_SID=${};                              export ORACLE_SID
    LOG_DIR=/u/database/${ORACLE_SID}/backup;   export RMAN_DIR
    TIMESTAMP=`date +%Y%m%d%H%M`                  export TIMESTAMP
    RMAN_LOG=${LOG_DIR}/${ORACLE_SID}_restore_${TIMESTAMP}log;          export RMAN_LOG
    SSH_LOG=${LOG_DIR}/${ORACLE_SID}_restore_full_${TIMESTAMP}log;      export SSH_LOG
    RETENTION=
    echo 》${SSH_LOG}
    echo Start rman to backup at `date`                                  》${SSH_LOG}
    echo 》${SSH_LOG}
    $ORACLE_HOME/bin/rman target / catalog rman_user/xxx@catadb log=${RMAN_LOG} 《EOF
    startup nomount;
    run{execute global script global_restore;}
    exit;
    EOF
    RV=$?
    cat ${RMAN_LOG}》${SSH_LOG}
    echo         》${SSH_LOG}
    echo 》${SSH_LOG}
    echo MSG: RMAN restore end at `date`                                》${SSH_LOG}
    echo 》${SSH_LOG}
    if [ $RV ne ]; then
    echo 》${SSH_LOG}
    echo MSG: RMAN restore error at `date`                              》${SSH_LOG}
    echo 》${SSH_LOG}
    RMAN_STAT=FAILED
    mail s Failed RMAN restore for $ORACLE_SID on `hostname` <${SSH_LOG}
    else
    echo 》${SSH_LOG}
    echo MSG: No error found for RMAN restore at `date`                 》${SSH_LOG}
    echo 》${SSH_LOG}
    RMAN_STAT=SUCCEED
    rm rf ${RMAN_LOG} >/dev/null
    fi
    echo `date +%F %X`   $ $ $RMAN_STAT 》 /u/comm_scripts/db_restore_rmanlog
    exit

  檢測還原狀態shell腳本
    [python]
    我們用一個shell腳本來檢測多個DB當天最終的還原狀態成功與否並將當前的所有記錄輸出到ck_restorelog日志
    腳本尾部發送郵件列出當天所有進行restore之後的所有狀態是一個多個DB restore 的summary report
    $ more ck_restoresh
    ##====================================================================
    ##   File name: ck_restoresh
    ##   Usage: ck_restoresh
    ##   Desc:
    ##        The script uses to check RMAN restore log for current day
    ##          and send mail to DBA
    ##====================================================================
    #!/bin/bash
    if [ f ~/bash_profile ];
    then
    ~/bash_profile
    fi
    REV_DIR=/u/comm_scripts
    dt=`date +%F`
    cat /dev/null >${REV_DIR}/ck_restorelog
    cat ${REV_DIR}/db_restore_rmanlog | grep ${dt} 》${REV_DIR}/ck_restorelog
    total=`cat ${REV_DIR}/ck_restorelog |wc l`
    suc=`grep SUCCEED ${REV_DIR}/ck_restorelog |wc l`
    fail=`grep FAILED ${REV_DIR}/ck_restorelog |wc l`
    echo 》ck_restorelog
    echo e The total DB of current recovery is $total in `hostname` \n》${REV_DIR}/ck_restorelog
    echo e The number of succee is : ${suc} \n》${REV_DIR}/ck_restorelog
    echo e The number of fail is : ${fail} \n》${REV_DIR}/ck_restorelog
    mail s RMAN restore summary for `hostname` at `date +%a %b %d %Y` <${REV_DIR}/ck_restorelog
    部署還原shell腳本到crontab
    [python]
    首先將多個需要自動restore的DB封裝到一個單獨的文件如下
    最後調用ck_restoresh 腳步檢測所有DB restore狀態並發送RMAN summary report郵件
    $ more full_resotre_by_rmansh
    #!/bin/bash
    /u/comm_scripts/db_restore_rman_catalogsh BC
    /u/comm_scripts/db_restore_rman_catalogsh AF
    /u/comm_scripts/ck_restoresh
    部署到crontab
    無論是備份還是恢復腳本我們都是通過Bak server的crontab來部署以減輕Prod的壓力
    #Rman restore database
    * * /u/comm_scripts/full_resotre_by_rmansh


From:http://tw.wingwit.com/Article/program/Oracle/201311/17459.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.