ORACLE RMAN備份及還原 RMAN可以進行增量備份:資料庫,資料表空間,資料檔案

來源:互聯網
上載者:User

ORACLE RMAN備份及還原  




RMAN可以進行增量備份:資料庫,資料表空間,資料檔案


只有使用過的block可以被備份成backup set


資料表空間與資料檔案對應關係:dba_data_files / v$datafile_header


在noarchivelog模式下,可以使用RMAN備份read-only和offline的資料表空間


ORACLE RMAN停機備份:


備份


RMAN串連上ORACLE,WINDOWS下在命令模式下


RMAN TARGET /


串連本機資料庫用的是本地認證模式。RMAN串連資料庫必須在dedicate模式下。因此在share模式下的資料庫應配置一個dedicate的串連用於RMAN串連。


如果要把控制檔案、參數檔案也一起備份


configure controfile autobackup on;//開啟autobackup 
configure controfile autobackup off;//關閉autobackup
關閉資料庫
RMAN>shutdown immediate
mount 資料庫RMAN的備份必須在MOUNT模式下,這也就是控制檔案備份的重要。
RMAN>startup mount
最簡單的備份
RMAN>backup database
就這一句就OK了
這樣的備份,備份組在資料庫預設位置。%oracle_home%/ora92/database
當然你也可以用run來靈活的定義你的備份。
RMAN>run{
>allocate chennel d1 type disk; //分配通道
>backup full database           //全備份資料庫
>include current controlfile    //包括當前的controlfile
>format 'e:\oracle\orders\db_%d_%s_%p_%t_%T'; //備份檔案位置和檔案名稱格式
>release channel d1;//釋放通道
>}


恢複
1、資料檔案損壞,而控制檔案是好,或者已經恢複
 RMAN連上資料庫
 startup mount
 restore database
 recover database noredo;
 alter database open resetlogs;
 recover database noredo該命令指示RMAN執行最後的恢複操作以準備開啟這個資料庫。因為是在NOARCHIVELOG模式下並且不應用任何歸檔的重做日誌並且丟失了聯機重做日誌,所以要求在這條命令中使用noredo參數。


最後使用alter database open resetlogs開啟資料庫。由於已經還原了控制檔案並且需要重新構建重做日誌,所以必須用resetlogs。
2、還原控制檔案
startup nomount;
set dbid = <dbid>
restore controlfile from autobackup ;
alter database mount;
restore database;
recover database noredo;
alter database open resetlogs;
alter database open;
在這個例子中有一個DBID這個可以
select * from v$database中查到。但是一個資料庫在控制檔案壞掉了不能OPEN如何能看的到呢這就在平時把這個DBID記下來。
這是最簡單的用RMAN備份與恢複的例子,但從中可以看到RMAN備份與恢複的梗概。


ORACLE RMAN線上備份:


1. ORACLE RMAN線上備份之前需要切換日誌方式為歸檔日誌;


a. 關閉資料庫
SQL> shutdown immediate;


b. 啟動資料庫到mount狀態
SQL> startup mount;


c. 啟用歸檔模式
SQL> alter database archivelog;


d. 查看修改後的Database Backup和恢複策略及歸檔檔案的位置
SQL> archive log list;


注意:修改成archive模式之後,之前所有的Database Backup均無效。


e. 修改相應的初始化參數
Oracle10g之前,你還需要修改初始化參數使資料庫處於自動歸檔模式。
可用SQL> show parameter log_archive_start;查看
NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------
log_archive_start                    boolean     FALSE
SQL> alter system set log_archive_start=true scope=spfile;
重啟資料庫此參數生效,此時資料庫處於自動歸檔模式。


當然你也可以不做第5步,直接
SQL>archive log start
使資料庫啟用自動歸檔,但是重啟後資料庫仍然處於手工歸檔模式。


2. 運行:RMAN target /


3. RMAN資訊儲存:預設儲存在control file中,儲存周期7天


調整:alter system set control_file_record_keep_time=天數;


4. 搭建獨立資料庫儲存RMAN備份資訊


由於只有一個資料庫,就建在本身資料庫上


a. 建立資料表空間RC:create tablespace rc datafile size 10M autoextend on next 1M


b. 建立使用者RC:


CREATE USER rc IDENTIFIED BY rc TEMPORARY TABLESPACE temp DEFAULT TABLESPACE  rc QUOTA UNLIMITED ON rc;


c. 授權RC: GRANT RECOVERY_CATALOG_OWNER TO rc;


d. 搭建:


rman catalog rc/rc@orcl


RMAN>create catalog;


RMAN>exit


rman target / catalog rc/rc@orcl


RMAN>register database;


e. 使用:


rman target / catalog rc/rc@orcl


這種串連方式後,資料就會在控制檔案和catalog各存一份


5. 全域參數配置:


查看:show all;


修改:configure 參數名稱 具體設定


例如:修改是否自動儲存control file:configure controlfile autobackup on;


恢複預設值:configure 參數名稱 clear;


關鍵參數:


a. 儲存周期:retention policy


預設是redundancy 1:保留一個備份;


可用值:recovery window of 7 days:保留可以滿足7天恢複周期的備份


根據條件檢查:report obsolete:RMAN會根據儲存周期參數來列出可以刪除的備份


刪除多於備份:delete obsolete


b. 最佳化備份:backup optimization:RMAN會自動忽略已經備份過的內容(資料檔案,歸檔日誌,備份塊)


前提:備份指定同一個channel


c. 預設備份渠道:default device type to disk:預設備份到磁碟,路徑為flash recovery area


渠道類型:


disk:檔案系統路徑


flash recovery area:預設路徑


sbt:磁帶裝置


修改到磁碟其他路徑:configure channel device type disk format '路徑/%U';


例如:configure channel device type disk format '/tmp/movedata/%U';


6. 備份結果


backupset:backup (as backupset) 備份內容,裡面分割成一個或多個backup piece,只有該類型備份可以進行壓縮。


copy:backup as copy 備份內容


按類型查看:


backupset 查看:list backup summary(list backupset summary)


查看詳情:list backupset BS


copy查看:list copy


按內容查看:


整個資料庫:list backup of database;


tablespace:list backup of tablespace users;


資料檔案:list backup of datafile n;


控制檔案:list backup of controlfile;


歸檔日誌:list archivelog all;


按規則查看:


查看根據儲存規則可刪除檔案:report obsolete;


查看根據儲存規則需要備份內容:report


RMAN和OS結合檢查:corsscheck 內容;




7. 備份方式
full:全備;


Incremental:增量備份


可以增量備份的類型:資料庫,資料檔案,資料表空間


a. 首先需要做level 0備份作為基礎。例如:backup incremental level 0 備份內容;(備份內容:所有使用過的data block,和image copy不同)


b. 增量類型:


累計增量:backup cumulative level 1 備份內容;


差異增量:backup incremental level 1 備份內容;


區別:累計增量始終是基於level 0的備份;


第一次差異增量是基於level 0的備份;從第二開始就是基於前一次增量備份


c. Image備份增量方式:


第一次:以Image全備為基礎;


第二次:基於全備,做增量備份;完成後合成成一個Image全備


第三次:基於第二次的Image全備,做增量備份;完成後合成成一個Image全備


實現:


例如:針對tablespace example


RUN {
   RECOVER COPY OF tablespace example WITH TAG 'incr_update';
   BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'
       tablespace example;
   }


d. 開啟參數"block change tracking",可以提高速度


查看狀態:SELECT status FROM v$block_change_tracking;


預設值:DISABLED


開啟:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;(預設存放路徑OMF中的DB_CREATE_FILE_DEST)


設定檔案路徑:


ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/oradata/MYSID/rman_change_track.f' REUSE;


關閉:ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;


備份並檢查:bakcup check logical 備份內容;


不備份只是檢查檔案:backup validate 備份內容;


如果檢查有報錯,查看:v$backup_corruption;v$copy_corruption


8. 備份內容:


整個資料庫:RMAN>backup database;


經典整庫備份:backup as compressed backupset database include current controlfile plus archivelog delete input;


tablespace:RMAN>backup tablespace 名字;


資料檔案:RMAN>backup datafile n; (n:具體的資料檔案編號select file_name,file_id,tablespace_name from dba_data_files;)


控制檔案:RMAN>backup current controlfile;


或者RMAN>backup database include current controlfile;


記錄檔:RMAN>backup archivelog all;


或者RMAN>backup database plus archivelog;


參數檔案:RMAN>backup spfile;


9. 還原


a. 完全恢複


方法一:從最近的備份組恢複整個資料庫,資料庫會自動運行redo和archive日誌(完全恢複):


SQL>shutdown immediate


SQL>startup mount


RMAN>restore database;


RMAN>recover database;


RMAN>sql 'alter database open';


方法二:從tag恢複整個資料庫,資料庫也會運行redo 和archive 日誌(完全恢複),結果與上面的指令碼一樣:


1. 查看標籤:


RMAN> list backupset summary;
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
25      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T104634
28      B  0  A DISK        25-JUL-11       1       1       NO         TAG20110725T104645
29      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T104711
30      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T104713
31      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105333
32      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105350
33      B  1  A DISK        25-JUL-11       1       1       NO         TAG20110725T105353
34      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105408
35      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T105411
36      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T111403
37      B  1  A DISK        25-JUL-11       1       1       NO         TAG20110725T111405
38      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T111421
39      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T111423


2. 還原資料庫:


SQL>shutdown immediate;
SQL>startup mount;
RMAN>restore database from tag TAG20110725T104645;


RMAN> recover database from tag TAG20110725T104645;


RMAN> alter database open;


b. 不完全恢複:


SQL>shutdown immediate;
SQL>startup mount;
RMAN>restore database from tag TAG20110725T104645;


RMAN>recover database until time "to_date('2011-08-04 15:37:25','yyyy/mm/dd hh24:mi:ss')";


RMAN>alter database open resetlogs;
注意:使用後所有的備份組都無效了,確保安全需要重新對資料庫進行全備(ORACLE10G之後,resetlog之前的備份還是可以用的)


關鍵資料表空間恢複(system / undotbs1 / sysaux):


SQL>shutdown abort


SQL>startup mount


RMAN>restore tablespace 名字;


RMAN>recover tablespace 名字;


RMAN>sql 'alter database open';


非關鍵資料表空間恢複(example / users ):


select * from v$datafile_header; 資料表空間與資料檔案對應關係


SQL>alter database datafile 數字 offline;


RMAN>restore tablespace 名字;


RMAN>recover tablespace 名字;


SQL>alter database datafile 數字 online;


10. 刪除備份


所有backup備份組:delete backup;


所有copy備份機:delete copy;


特定備份機:delete backupset 19;


刪除根據儲存規則可刪除檔案:delete obsolete;


刪除到期的備份:


delete expired backupset;


delete expired copy;


11. RUN塊


例如:


RMAN> RUN {
          ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
          ALLOCATE CHANNEL c2 DEVICE TYPE sbt;
          ALLOCATE CHANNEL c3 DEVICE TYPE sbt;
          BACKUP
         INCREMENTAL LEVEL = 0
         FORMAT '/disk1/backup/df_%d_%s_%p.bak'
         (DATAFILE 1,4,5 CHANNEL c1)
         (DATAFILE 2,3,9 CHANNEL c2)
        (DATAFILE 6,7,8 CHANNEL c3);
          ALTER SYSTEM ARCHIVE LOG CURRENT;
       }
12. 外部變數:


語言:set nls_lang=american


日期:set nls_date_format=yyyy-mm-dd....


13. RMAN sciprt


前提條件:有catalog


寫法:(global表示可以由多個資料庫調用)


create global script 名


comment "備忘說明"


{指令碼內容}


例如:


create global script abc


comment "test"


{backup current controlfile;}


調用:run {execute script 名}


例如:run {execute script abc;}


查看:print script 名


改寫:


replace global script 名


comment "備忘說明"


{指令碼內容}


刪除:delete script 名;


14. 持續保留備份


條件是備份不能保留在flash recovery area中;


a. 建立備份:


RUN



ALLOCATE CHANNEL c1 DEVICE TYPE disk format '/tmp/autobackup/%U';
BACKUP tablespace example;
}


b. 尋找該備份:


list backupset of tablespace example;


c. 修改屬性為永久


change backupset 編號 keep forever nologs;


15. 建立多個固定大小的備份


例如:example 測試備份大小是大於50M


run


{


allocate channel c1 device type disk maxpiecesize 10M format '/tmp/autobackup/%U';


backup tablespace example;


}


/tmp/autobackup目錄下有六個檔案


16.運行指令碼:backup recovery area


備份內容:


a. control file autobackup;


b. incremental backup sets


17.block change tracking


a. 針對整個資料庫;


b. 預設存放路徑:background_dump_dest

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.