oracle11g Rman 備份指令碼

zhouxianwang發表於2015-05-08

1、Rman備份指令碼 

備份策略:周天0級備份,其他時候1級備份 

[plain] view plaincopy
  1. ########################################################################  
  2. ##   kfc_incremental_hot_database_backup.sh  ##  
  3. ##   created by  NBU TEMP                    ##  
  4. ##        2012-3-8                           ##  
  5. #########################################################################  
  6.   
  7. #!/bin/ksh  
  8.   
  9. export LANG=en_US  
  10. BACKUP_DATE=`date +%d`  
  11. RMAN_LOG_FILE=/home/oracle/backup/log/backupinfo.out  
  12. TODAY=`date`  
  13. USER=`id|cut -d "(" -f2|cut -d ")" -f1`  
  14. echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE  
  15.   
  16. ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1  
  17. export ORACLE_HOME  
  18.   
  19. RMAN=$ORACLE_HOME/bin/rman  
  20. export RMAN  
  21.   
  22. ORACLE_SID=kfsjora  
  23. export ORACLE_SID  
  24.   
  25. ORACLE_USER=oracle  
  26. export ORACLE_USER  
  27.   
  28. echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE  
  29. echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE  
  30. echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE  
  31. echo "==========================================">>$RMAN_LOG_FILE  
  32. echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE  
  33. echo "                   ">>$RMAN_LOG_FILE  
  34.   
  35. #touch $RMAN_LOG_FILE  
  36. chmod 666 $RMAN_LOG_FILE  
  37.   
  38. WEEK_DAILY=`date +%a`  
  39.   
  40. case  "$WEEK_DAILY" in  
  41.        "Mon")  
  42.             BAK_LEVEL=1  
  43.             ;;  
  44.        "Tue")  
  45.             BAK_LEVEL=1  
  46.             ;;  
  47.        "Wed")  
  48.             BAK_LEVEL=1  
  49.             ;;  
  50.        "Thu")  
  51.             BAK_LEVEL=1  
  52.             ;;  
  53.        "Fri")  
  54.             BAK_LEVEL=1  
  55.             ;;  
  56.        "Sat")  
  57.             BAK_LEVEL=1  
  58.             ;;  
  59.        "Sun")  
  60.             BAK_LEVEL=0  
  61.             ;;  
  62.        "*")  
  63.             BAK_LEVEL=error  
  64. esac  
  65.   
  66. export BAK_LEVEL=$BAK_LEVEL  
  67.   
  68. echo "Today is : $WEEK_DAILY  incremental level= $BAK_LEVEL">>$RMAN_LOG_FILE  
  69.   
  70.   
  71. RUN_STR="  
  72.   
  73. BAK_LEVEL=$BAK_LEVEL  
  74. export BAK_LEVEL  
  75.   
  76. ORACLE_HOME=$ORACLE_HOME  
  77. export ORACLE_HOME  
  78.   
  79. ORACLE_SID=$ORACLE_SID  
  80. export ORACLE_SID  
  81.   
  82. $RMAN TARGET sys/qhyc_pass CATALOG kfcrman/kfcrman@kfcrman  msglog $RMAN_LOG_FILE append <
  83. run  
  84. {  
  85.   allocate channel c1 type disk;  
  86.   allocate channel c2 type disk;  
  87.   
  88.   backup  incremental level= $BAK_LEVEL  skip inaccessible filesperset 5 Database format='/opt/kfsjora_backup/orcl_lev"$BAK_LEVEL"_%U_%T'  tag='orcl_lev"$BAK_LEVEL"' ;  
  89.   
  90.   sql 'alter system archive log current';  
  91.   
  92.   backup archivelog all tag='arc_bak' format='/opt/kfsjora_backup/arch_%U_%T' skip inaccessible  filesperset 5 not  backed up 1 times  delete input;  
  93.   
  94.   backup current controlfile tag='bak_ctlfile' format='/opt/kfsjora_backup/ctl_file_%U_%T';  
  95.   
  96.   backup spfile tag='spfile' format='/opt/kfsjora_backup/ORCL_spfile_%U_%T';  
  97.   
  98.   release channel c2;  
  99.   release channel c1;  
  100. }  
  101.   
  102. report obsolete;  
  103. delete noprompt obsolete;  
  104. crosscheck backup;  
  105. delete noprompt expired backup;  
  106. list backup summary;  
  107. resync catalog;  
  108. EOF  
  109.   
  110. "  
  111. # Initiate the command string  
  112.   
  113. if [ "$CUSER" = "root" ]  
  114. then  
  115.     echo "Root Command String: $RUN_STR" >> $RMAN_LOG_FILE  
  116.     su - $ORACLE_USER -c "$RUN_STR" >> $RMAN_LOG_FILE  
  117.     RSTAT=$?  
  118. else  
  119.     echo "User Command String: $RUN_STR" >> $RMAN_LOG_FILE  
  120.     /bin/sh -c "$RUN_STR" >> $RMAN_LOG_FILE  
  121.     RSTAT=$?  
  122. fi  
  123.   
  124. # ---------------------------------------------------------------------------  
  125. # Log the completion of this script.  
  126. # ---------------------------------------------------------------------------  
  127.   
  128. if [ "$RSTAT" = "0" ]  
  129. then  
  130.     LOGMSG="ended successfully"  
  131. else  
  132.     LOGMSG="ended in error"  
  133. fi  
  134.   
  135. echo >> $RMAN_LOG_FILE  
  136. echo Script $0 >> $RMAN_LOG_FILE  
  137. echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE  
  138. echo >> $RMAN_LOG_FILE  
  139.   
  140. /bin/mailx -s "RMAN Backup SID " oracle@kfc.localdomain 
  141. exit $RSTAT  


 

2、刪除歸檔備份和oracle trc等檔案的指令碼

[plain] view plaincopy
  1. #!/bin/ksh  
  2. # ##################################################################  
  3. #  
  4. #   delete_archvivelog_backup_and_trc_trm_file.sh  
  5. #  
  6. #  
  7. # ##################################################################  
  8. PATH=/usr/bin:/usr/ucb:/etc:.:/usr/X/bin:/bin  
  9. export PATH  
  10. #find /opt/kfsjora_backup -mtime +15 -name "arch_*" -exec rm "{} /;"  
  11. find /opt/kfsjora_backup -mtime +15 -name "arch_*" -exec rm {} \;  
  12. find /opt/oracle/admin/kfsjora/adump/ -mtime +15 -name "*.aud" -exec rm {} \;  
  13. find /opt/oracle/diag/rdbms/kfsjora/kfsjora/cdump/ -mtime +15 -name "*" -exec rm -fr {} \;  
  14. find /opt/oracle/diag/rdbms/kfsjora/kfsjora/trace/ -mtime +15 -name "*.tr?" -exec rm {} \;  


 

3、匯出Rman catalog資料 的指令碼

[plain] view plaincopy
  1. #!/bin/ksh  
  2. # ##################################################################  
  3. #  
  4. #   exprman.sh  
  5. #  
  6. #  
  7. # ##################################################################  
  8. ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME  
  9. PATH=/usr/bin:/usr/ucb:/etc:.:/usr/X/bin:/bin:$ORACLE_HOME/bin:/usr/sbin  
  10. export PATH  
  11. EXP_BASE=/home/oracle/backup/exprman  
  12. export EXP_BASE  
  13. NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  
  14. export NLS_LANG  
  15.   
  16. if [ -s  "$EXP_BASE/kfcrman_new.dmp" ];then  
  17.   rm $EXP_BASE/kfcrman_old.dmp  
  18.   mv $EXP_BASE/kfcrman_new.dmp $EXP_BASE/kfcrman_old.dmp  
  19. fi  
  20. exp kfcrman/kfcrman@kfcrman tablespaces=KFC3850 file=$EXP_BASE/kfcrman_new.dmp >>$EXP_BASE/../log/expkfcrman.log 2>&1  


4、設定 crontab 定期執行上述指令碼

$crontab -e

加入如下內容

[plain] view plaincopy
  1. 00 1 * * * /home/oracle/backup/script/kfc_incremental_hot_database_backup.sh &  
  2. 00 2 * * * /home/oracle/backup/script/delete_archvivelog_backup_and_trc_trm_file.sh >/home/oracle/backup/log/log_delete_archvivelog_backup_and_trc_trm_file.log 2>&1 &  
  3. 00 5 1 * * /home/oracle/backup/script/expkfcrman.sh 







source:http://blog.csdn.net/upcorange/article/details/7335990

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27036311/viewspace-1629414/,如需轉載,請註明出處,否則將追究法律責任。

相關文章