• oracle 11.2.0.3 rac集群rman周备份策略


      1 1.1备份策略
      2 周日执行0级的增量备份
      3 
      4 周一执行2级的增量备份
      5 
      6 周二执行2级的增量备份
      7 
      8 周三执行1级的增量备份
      9 
     10 周四执行2级的增量备份
     11 
     12 周五执行2级的增量备份
     13 
     14 周六执行2级的增量备份
     15 周日进行一次零级备份,周一、周二、进行二级备份;周三进行一级备份;周四、周五、周六进行二级备份。在执行备份的时候,我们考 虑将数据文件的全备和归档日志备份分开执行,避免造成一些不必要的麻烦。在进行全备的时候,由于RAC的两个节点是共享的所有数据文件,控制文件,所以我 们只连接其中的一个节点rac1来进行备份。在进行归档日志的备份的时候,由于归档日志并非共享,而是在每个节点本地存储的,所以我们需要分别连接到两个节 点进行归档日志的备份。为节省存储空间,将对备份后归档日志做定期删除。
     16 
     17 2.数据库备份脚本
     18 2.1 零级备份脚步(即全备)
     19 0级脚本如下: 
     20 
     21 cat >> /home/oracle/fullbackup/backup_lv0.sql <
     22 
     23 run{ 
     24 
     25 allocate channel c1 type disk maxpiecesize=3500m; 
     26 
     27 allocate channel c2 type disk maxpiecesize=3500m; 
     28 
     29 backup incremental level 0 database include current controlfile format '+DATA/frxdb/backupset/frxdb_%T_%s_%p.lv0' plus archivelog delete all input format '+DATA/frxdb/backupset/arch_%T_%s_%p.arc'; 
     30 
     31 release channel c1; 
     32 
     33 release channel c2; 
     34 
     35 }
     36 
     37  EOF  
     38 
     39 2.2 一级脚本如下: 
     40 cat >> /home/oracle/fullbackup/backup_lv1.sql <
     41 
     42 run {
     43 
     44 allocate channel c1 type disk maxpiecesize=3500m; 
     45 
     46 backup incremental level 1 database include current controlfile format '+DATA/frxdb/backupset/frxdb_%T_%s_%p.lv1'; 
     47 
     48 release channel c1; 
     49 
     50 } 
     51 
     52 EOF  
     53 
     54 2.3 二级脚本如下: 
     55 cat >> /home/oracle/fullbackup/backup_lv2.sql <
     56 
     57 run{
     58 
     59 allocate channel c1 type disk maxpiecesize=3500m; 
     60 
     61 backup incremental level 2 database include current controlfile format '+DATA/frxdb/backupset/frxdb_%T_%s_%p.lv2'; 
     62 
     63 release channel c1; 
     64 
     65 } 
     66 
     67 EOF
     68 
     69 3 自动备份
     70 3.1 自动备份脚本
     71 ########################################################################
     72 
     73 ##   rac__backup.sh      ##
     74 
     75 ##   created by ZHONGYI TECH   ##
     76 
     77 ##        2014-6-23                 ##
     78 
     79 #########################################################################
     80 
     81  
     82 
     83 #!/bin/sh 
     84 
     85 export LANG=en_US
     86 
     87 BACKUP_DATE=`date +%d`
     88 
     89 RMAN_LOG_FILE=${0).out
     90 
     91 TODAY=`date`
     92 
     93 CUSER=`id|cut -d "(" -f2|cut -d ")" -f1`
     94 
     95 echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE
     96 
     97 ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/db_1
     98 
     99 export ORACLE_HOME
    100 
    101 RMAN=$ORACLE_HOME/bin/rman
    102 
    103 export RMAN
    104 
    105 ORACLE_SID=frxdb
    106 
    107 export ORACLE_SID
    108 
    109 ORACLE_USER=oracle
    110 
    111 export ORACLE_USER
    112 
    113  
    114 
    115 echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE
    116 
    117 echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE
    118 
    119 echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE
    120 
    121 echo "==========================================">>$RMAN_LOG_FILE
    122 
    123 echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE
    124 
    125 echo "                   ">>$RMAN_LOG_FILE
    126 
    127 chmod 666 $RMAN_LOG_FILE
    128 
    129  
    130 
    131 WEEK_DAILY=`date +%a`
    132 
    133  
    134 
    135 case  "$WEEK_DAILY" in
    136 
    137        "Mon")
    138 
    139             BAK_LEVEL=2
    140 
    141             ;;
    142 
    143        "Tue")
    144 
    145             BAK_LEVEL=2
    146 
    147             ;;
    148 
    149        "Wed")
    150 
    151             BAK_LEVEL=1
    152 
    153             ;;
    154 
    155        "Thu")
    156 
    157             BAK_LEVEL=2
    158 
    159             ;;
    160 
    161        "Fri")
    162 
    163             BAK_LEVEL=2
    164 
    165             ;;
    166 
    167        "Sat")
    168 
    169             BAK_LEVEL=2
    170 
    171             ;;
    172 
    173        "Sun")
    174 
    175             BAK_LEVEL=0
    176 
    177             ;;
    178 
    179        "*")
    180 
    181             BAK_LEVEL=error
    182 
    183 esac
    184 
    185 export  BAK_LEVEL=$BAK_LEVEL 
    186 
    187 echo "Today is : $WEEK_DAILY  incremental level= $BAK_LEVEL">>$RMAN_LOG_FILE
    188 
    189  
    190 
    191 RUN_STR="
    192 
    193 BAK_LEVEL=$BAK_LEVEL
    194 
    195 export BAK_LEVEL
    196 
    197 ORACLE_HOME=$ORACLE_HOME
    198 
    199 export ORACLE_HOME
    200 
    201 ORACLE_SID=$ORACLE_SID
    202 
    203 export ORACLE_SID
    204 
    205 $RMAN  nocatalog TARGET sys/system@rac1   msglog $RMAN_LOG_FILE append <
    206 
    207 run
    208 
    209 {
    210 
    211 allocate channel c1  type disk connect  'sys/system@rac1';
    212 
    213 allocate channel c2  type disk connect  'sys/system@rac2';
    214 
    215  
    216 
    217 backup  incremental level= $BAK_LEVEL Database format='+DATA/frxdb/backupset/frxdb_lev"$BAK_LEVEL"_%U_%T'  tag='frxdb_lev"$BAK_LEVEL"' ;
    218 
    219  
    220 
    221 sql 'alter system archive log current';
    222 
    223  
    224 
    225 backup archivelog all tag='arc_bak' format='+DATA/frxdb/backupset/arch_%U_%T'  not  backed up 1 times  delete input;
    226 
    227  
    228 
    229 backup current controlfile tag='bak_ctlfile' format='+DATA/frxdb/backupset/ctl_file_%U_%T';
    230 
    231 backup spfile tag='spfile' format='+DATA/frxdb/backupset/frxdb_spfile_%U_%T';
    232 
    233 release channel c1;
    234 
    235 release channel c2;
    236 
    237 }
    238 
    239 allocate channel for maintenance device type disk connect  'sys/system@rac1';
    240 
    241 allocate channel for maintenance device type disk connect  'sys/system@rac2';
    242 
    243  
    244 
    245 report obsolete; 
    246 
    247 delete noprompt obsolete; 
    248 
    249 crosscheck backup; 
    250 
    251 delete noprompt expired backup;
    252 
    253 Release channel;
    254 
    255 list backup summary; 
    256 
    257  
    258 
    259 EOF
    260 
    261 "
    262 
    263  # Initiate the command string 
    264 
    265  
    266 
    267 if [ "$CUSER" = "root" ] 
    268 
    269 then 
    270 
    271     echo "Root Command String: $RUN_STR" >> $RMAN_LOG_FILE     
    272 
    273     su - $ORACLE_USER -c "$RUN_STR" >> $RMAN_LOG_FILE 
    274 
    275     RSTAT=$? 
    276 
    277 else 
    278 
    279     echo "User Command String: $RUN_STR" >> $RMAN_LOG_FILE     
    280 
    281     /bin/sh -c "$RUN_STR" >> $RMAN_LOG_FILE 
    282 
    283     RSTAT=$? 
    284 
    285 fi 
    286 
    287  
    288 
    289 # --------------------------------------------------------------------------- 
    290 
    291 # Log the completion of this script. 
    292 
    293 # --------------------------------------------------------------------------- 
    294 
    295 if [ "$RSTAT" = "0" ] 
    296 
    297 then 
    298 
    299     LOGMSG="backup finished successfully" 
    300 
    301 else 
    302 
    303     LOGMSG="backup ended in error" 
    304 
    305 fi 
    306 
    307  
    308 
    309 echo >> $RMAN_LOG_FILE 
    310 
    311 echo Script $0 >> $RMAN_LOG_FILE 
    312 
    313 echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE 
    314 
    315 echo >> $RMAN_LOG_FILE 
    316 
    317 echo $LOGMSG | mailx -v -s "oracle backup info" shiyuan@1pay1.com < $RMAN_LOG_FILE 
    318 
    319  
    320 
    321 exit $RSTAT 
    322 
    323  
    324 
    325 3.2加入备份计划任务
    326 用cron创建定时执行任务 ,要使用cron必须启动crond服务,最好还设置cron为开机启动(非本主题内容) 执行crontab –e 添加以下语句 
    327 
    328 00 03 * * * sh /home/oracle/fullbackup/rac_backup.sh
    329 
    330 计划任务实现每天凌晨3点实施备份工作。
    331 
    332 4 恢复策略
    333 针对一周内任意一天出现数据库故障需要恢复可遵循如下恢复策略:
    334 
    335 周一恢复:使用周日全备份
    336 
    337 周二恢复:周日全备+周一增备
    338 
    339 周三恢复:周日全备+周一、二增备
    340 
    341 周四恢复:周日全备+周三增备
    342 
    343 周五恢复:周日+周三、四备
    344 
    345 周六恢复:周日+周三、周四、周五增备
    346 
    347 周日恢复:周日+周三、四、五、六增备
    348 
    349 更低粒度恢复选择使用闪回功能(数据误删除、误操作等)基于时间点、scn等做数据恢复。
    350 
    351 本处将结束简单的恢复操作,即没有归档丢失,同时存在完整可用的备份下进行的恢复操作。在恢复之前,需要将数据库关闭,通过rman启动实例并准备恢复。
    352 
    353 $ srvctl stop database -d frxdb
    354 
    355 因为备份放在共享磁盘上,所以可在单个节点进行恢复,在任一节点:
    356 
    357 rman target /
    358 
    359 rman >startup mount
    360 
    361 rman>restore database;
    362 
    363 rman>recover database;
    364 
    365 如归档连续,操作将成功,可直接执行以下命令打开数据库:
    366 
    367 rman>sql ‘alter database open’; 
    368 
    369 注:恢复完成后立即执行备份操作。
  • 相关阅读:
    package、import、java及javac的相关介绍(转)
    Android开发之大位图二次採样压缩处理(源码分享)
    ubuntu 14.04 使用极点五笔输入法
    HBase概念学习(七)HBase与Mapreduce集成
    JS中setTimeout()的使用方法具体解释
    IntelliJ Idea 经常使用快捷键列表
    公有云与私有云的差别(转)
    jbpm入门样例
    android之PackageManager简单介绍
    WebService究竟是什么?
  • 原文地址:https://www.cnblogs.com/vmsysjack/p/12323101.html
Copyright © 2020-2023  润新知