中小型数据库RMAN CATALOG备份恢复方案(一)(二)

2014-11-24 16:16:05 · 作者: · 浏览: 6
lease channel ch2; execute global script global_arch; execute global script global_del_obso; } RMAN> print global script global_restore; printing stored global script: global_restore { restore controlfile; sql 'alter database mount'; crosscheck backup; delete noprompt expired backup; crosscheck copy; delete noprompt expired copy; allocate channel ch1 type disk; allocate channel ch2 type disk; restore database; release channel ch1; release channel ch2; shutdown immediate; }

4、创建RMAN备份shell脚本
[python] 
oracle@BKDB01p:/u02/database/common/rman_scripts> more db_bak_rman_catalog.sh  
##===========================================================  
##   File name: db_bak_rman_catalog.sh  
##   Usage: db_bak_rman_catalog.sh <$ORACLE_SID>  
##   Desc:  
##        The script uses to backup database with level 0.  

##============================================================  
#!/bin/bash  
# User specific environment and startup programs  
  
if [ -f ~/.bash_profile ];  
then  
. ~/.bash_profile  
fi  
  
# --------------------------  
#   Check SID  
# --------------------------  
if [ -z "${1}" ];then  
    echo "Usage: "  
    echo "      `basename $0` ORACLE_SID"  
    exit 1  
fi  
  
# -------------------------------  
#  Set environment here  
# -------------------------------  
ORACLE_SID=${1};                                    export ORACLE_SID  
TIMESTAMP=`date +%Y%m%d%H%M`;                       export TIMESTAMP  
LOG_DIR=/u02/database/${ORACLE_SID}/backup          export LOG_DIR  
RMAN_LOG=${LOG_DIR}/${ORACLE_SID}_bak_${TIMESTAMP}.log  
SSH_LOG=${LOG_DIR}/${ORACLE_SID}_bak_full_${TIMESTAMP}.log  
MAIL_DIR=/users/oracle/sendEmail-v1.56  
MAIL_FM=oracle@BKDB01p  
RETENTION=5  
  
echo "----------------------------------------------------------------" >
>${SSH_LOG} echo "Step 1. Start rman to backup at `date`." >>${SSH_LOG} echo "----------------------------------------------------------------" >>${SSH_LOG} $ORACLE_HOME/bin/rman log=${RMAN_LOG} <>${SSH_LOG} echo "" >>${SSH_LOG} echo "=====>MSG1: RMAN backup end at `date`." >>${SSH_LOG} if [ $RV -ne "0" ]; then echo "" >>${SSH_LOG} echo "=====>MSG2: RMAN backup error at `date`." >>${SSH_LOG} $MAIL_DIR/sendEmail -f $MAIL_FM -u "Failed RMAN backup for $ORACLE_SID on `hostname`." -t dba@12306.com -o message-file=${SSH_LOG} exit else echo "" >>${SSH_LOG} echo "=====>MSG2: No error found during RMAN backup peroid at `date`" >>${SSH_LOG} rm -rf ${RMAN_LOG} 2>/dev/null fi echo "-------------------------------------------------------------------------" >>${SSH_LOG} echo "Step 2. Start ftp backupset to backup server at `date`." >>${SSH_LOG} echo "-------------------------------------------------------------------------" >>${SSH_LOG} SRC_DB_BAK_DIR=/u02/database/${ORACLE_SID}/flash_recovery_area/${ORACLE_SID} SRC_ADD=10.1.2.101 TARG_DB_BAK_DIR=/u02/database/${ORACLE_SID}/flash_recovery_area RSYN_LOG=${LOG_DIR}/rsync_${TIMESTAMP}.log # rsync is used to ftp backup set to bak server. rsync -avzSH --progress --delete-after oracle@${SRC_ADD}:${SRC_DB_BAK_DIR} ${TARG_DB_BAK_DIR} >${RSYN_LOG} 2>&1 RV=$ cat ${RSYN_LOG}>>${SSH_LOG} if [ $RV -ne "0" ]; then echo "" >>${SSH_LOG} echo "=====>MSG3: FTP backupset error at `date`." >>${SSH_LOG} MAIL_SUB="Failed archive log sync for $ORACLE_SID on `hostname`