gdufo

           

          rman 增量備份

          一、準(zhǔn)備工作
          查看是否處在歸檔模式
          SQL> archive log list;
          Database log mode              No Archive Mode
          Automatic archival             Disabled
          Archive destination            USE_DB_RECOVERY_FILE_DEST
          Oldest online log sequence     28
          Current log sequence           30

          如果是"No Archive Mode"
          修改為歸檔模式
          首先要關(guān)閉數(shù)據(jù)庫(kù),啟動(dòng)到mount狀態(tài)。
          SQL> shutdown immediate;

          SQL> startup mount;
          修改為歸檔模式
          SQL>alter database archivelog;

          驗(yàn)證修改結(jié)果
          SQL> select log_mode from v$database;
          LOG_MODE
          ------------
          ARCHIVELOG

          打開(kāi)數(shù)據(jù)庫(kù)
          SQL> alter database open;

          二、RMAN Catalog 配置
          創(chuàng)建 RMAN Calalog表空間
          SQL>create tablespace RMAN_TS datafile '/opt/oracle/oradata/orcl/RMAN_TS01.dbf' size 500M;

          --創(chuàng)建用戶rman/rman 默認(rèn)表空間味RMAN_TS允許自由使用
          SQL> create user rman identified by rman default tablespace RMAN_TS quota unlimited on RMAN_TS;
          用戶授權(quán)
          SQL>grant connect, resource,recovery_catalog_owner to rman;

          創(chuàng)建恢復(fù)目錄
          在命令終端
          [oracle@localhost ~]$rman catalog rman/rman
          RMAN> CREATE CATALOG;
          連接,注冊(cè)目標(biāo)數(shù)據(jù)庫(kù),同步catalog和控制文件
          [oracle@localhost ~]$rman target sys/wxbwer catalog rman/rman
          連接成功出現(xiàn)下面的信息
          connected to target database: ORCL (DBID=1325399111)
          connected to recovery catalog database

          RMAN> REGISTER DATABASE;

          RMAN> RESYNC CATALOG;

          下面是否有注冊(cè)信息即可
          RMAN>LIST INCARNATION;

          List of Database Incarnations
          DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
          ------- ------- -------- ---------------- --- ---------- ----------
          2       36      ORCL     1325399111       PARENT  1          13-AUG-09
          2       4       ORCL     1325399111       CURRENT 754488     25-OCT-12

          三、創(chuàng)建RMAN備份腳本
          來(lái)自:http://blog.csdn.net/robinson_0612/article/details/8029245
          ##===========================================================  
          ##   db_bak_rman.sh                
          ##   created by Robinson           
          ##   2011/11/07    
          ##   usage: db_bak_rman.sh <$ORACLE_SID> <$BACKUP_LEVEL>  
          ##          BACKUP_LEVEL:   
          ##             F: full backup  
          ##             0: level 0  
          ##             1: level 1                             
          ##============================================================  
          #!/bin/bash  
          # User specific environment and startup programs  
           
          if [ -f ~/.bash_profile ];   
          then  
          . ~/.bash_profile  
          fi  
           
          ORACLE_SID=${1};                              export ORACLE_SID      
          RMAN_LEVEL=${2};                              export RMAN_LEVEL  
          TIMESTAMP=`date +%Y%m%d%H%M`;                 export TIMESTAMP       
          DATE=`date +%Y%m%d`;                          export DATE          
          #RMAN_DIR=/u02/database/${ORACLE_SID}/backup/rman;   export RMAN_DIR        
          #RMAN_DATA=${RMAN_DIR}/${DATE};                export RMAN_DATA          
          #RMAN_LOG=/u02/database/${ORACLE_SID}/backup/rman/log  export RMAN_LOG
          RMAN_DIR=/opt/oracle/oradata/backup/rman;     export RMAN_DIR    
          RMAN_DATA=${RMAN_DIR}/${DATE};                export RMAN_DATA  
          RMAN_LOG=${RMAN_DIR}/log                      export RMAN_LOG  
          # Check rman level   
          #======================================================================  
          if [ "$RMAN_LEVEL" == "F" ];  
          then  unset INCR_LVL  
                BACKUP_TYPE=full  
          else  
                INCR_LVL="INCREMENTAL LEVEL ${RMAN_LEVEL}"  
                BACKUP_TYPE=lev${RMAN_LEVEL}   
          fi  
           
          RMAN_FILE=${RMAN_DATA}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP};       export RMAN_FILE  
          SSH_LOG=${RMAN_LOG}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}.log;      export SSH_LOG  
          MAXPIECESIZE=4G;                                                export MAXPIECESIZE  
           
          #Check RMAN Backup Path  
          #=========================================================================  
           
          if ! test -d ${RMAN_DATA}  
          then  
          mkdir -p ${RMAN_DATA}  
          fi  
           
          echo "---------------------------------" >>${SSH_LOG}  
          echo "   " >>${SSH_LOG}  
          echo "Rman Begin  to Working ........." >>${SSH_LOG}  
          echo "Begin time at:" `date` --`date +%Y%m%d%H%M` >>${SSH_LOG}  
           
          #Startup rman to backup   
          #=============================================================================  
          $ORACLE_HOME/bin/rman log=${RMAN_FILE}.log <<EOF  
          connect target / 
          connect catalog rman/rman
          run {  
          CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;  
          CONFIGURE BACKUP OPTIMIZATION ON;  
          CONFIGURE CONTROLFILE AUTOBACKUP ON;  
          CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${RMAN_FILE}_%F';  
          ALLOCATE CHANNEL 'ch1' TYPE DISK maxpiecesize=${MAXPIECESIZE};  
          ALLOCATE CHANNEL 'ch2' TYPE DISK maxpiecesize=${MAXPIECESIZE};  
          set limit channel ch1 readrate=10240;  
          set limit channel ch1 kbytes=4096000;  
          set limit channel ch2 readrate=10240;  
          set limit channel ch2 kbytes=4096000;  
          CROSSCHECK ARCHIVELOG ALL;  
          DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;  
          BACKUP   
          #AS COMPRESSED BACKUPSET   
          ${INCR_LVL}  
          DATABASE FORMAT '${RMAN_FILE}_%U' TAG '${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}';  
          SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';  
          BACKUP ARCHIVELOG ALL FORMAT '${RMAN_FILE}_arc_%U' TAG '${ORACLE_SID}_arc_${TIMESTAMP}'  
          DELETE  INPUT;  
          DELETE NOPROMPT OBSOLETE;  
          RELEASE CHANNEL ch1;  
          RELEASE CHANNEL ch2;  
          }  
          sql "alter database backup controlfile to ''${RMAN_DATA}/cntl_${BACKUP_TYPE}.bak''";  
          exit;  
          EOF  
          RC=$?  
           
          cat ${RMAN_FILE}.log >>${SSH_LOG}  
          echo "Rman Stop working @ time:"`date` `date +%Y%m%d%H%M` >>${SSH_LOG}
           
          echo >>${SSH_LOG}  
          echo "------------------------" >>${SSH_LOG}  
          echo "------ Disk Space ------" >>${SSH_LOG}  
          df -h >>${SSH_LOG}  
           
          echo >>${SSH_LOG}  
           
          if [ $RC -ne "0" ]; then  
              echo "------ error ------" >>${SSH_LOG}  
          else  
              echo "------ no error found during RMAN backup peroid------" >>${SSH_LOG}  
              rm -rf ${RMAN_FILE}.log  
          fi  
           
          #Remove old backup than 3 days  
          #============================================================================  
          RMDIR=${RMAN_DIR}/`/bin/date +%Y%m%d -d "3 days ago"`;   export RMDIR
          echo >>${SSH_LOG}  
          echo -e "------Remove old backup than 3 days ------\n" >>${SSH_LOG}  
           
          if test -d ${RMDIR}  
              then  
              rm -rf ${RMDIR}  
              RC=$?  
          fi  
           
          echo >>${SSH_LOG}  
           
          if [ $RC -ne "0" ]; then  
              echo -e "------ Remove old backup exception------ \n" >>${SSH_LOG}  
          else  
              echo -e "------ no error found during remove old backup set peroid------ \n" >>${SSH_LOG}  
          fi  
           
          exit  

          [oracle@localhost backup]$ pwd
          /opt/oracle/oradata/backup
          [oracle@localhost backup]$vi db_bak_rman.sh
          將上面腳本復(fù)制進(jìn)去,并保存,且設(shè)置權(quán)限
          [oracle@localhost backup]$ chmod 755 db_bak_rman.sh
          測(cè)試腳本
          orcl 為 SID
          0: 代表0級(jí)備份
          [oracle@localhost backup]$ ./db_bak_rman.sh orcl 0

          四、crontab 定時(shí)任務(wù) 以 oralce用戶登錄
          [oracle@localhost backup]$crontab -e

          45 23 * * 0 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 0
          45 23 * * 1-3 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 2
          45 23 * * 4 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 1
          45 23 * * 5-6 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 2
          以root用戶登錄
          [root@localhost backup]$/etc/init.d/crond restart
          Stopping crond:                                            [  OK  ]
          Starting crond:                                            [  OK  ]


          腳本的增量備份策略: 周日0級(jí)備份,周四1級(jí)備份,其他2級(jí)備份
          差異備份有3個(gè)級(jí)別:
          0級(jí):相當(dāng)于全備,不同的是0級(jí)可用于增量備份,全備不行。
          1級(jí):備份自上次0級(jí)備份以來(lái)的數(shù)據(jù)
          2級(jí):備份自上次備份依賴的數(shù)據(jù)

          posted on 2012-10-28 22:37 gdufo 閱讀(857) 評(píng)論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 建瓯市| 察隅县| 沛县| 南城县| 军事| 天镇县| 确山县| 栖霞市| 三河市| 右玉县| 嘉黎县| 孝感市| 长治县| 来凤县| 外汇| 新郑市| 云龙县| 太和县| 永胜县| 霍州市| 广东省| 社会| 襄垣县| 邹城市| 阿图什市| 抚顺县| 宜都市| 金川县| 千阳县| 安塞县| 宁武县| 石景山区| 永济市| 巴林左旗| 松桃| 麟游县| 京山县| 缙云县| 尚义县| 永登县| 莒南县|