所謂增量備份,顧名思義即是每次備份操作那些發生了“變化”的數據塊。在RMAN增量備份中有兩種:Differential(差異備份)和Cumulative(增量備份)方式。由於需求這里用到的備份方式則是差異增量備份。
差異增量備份概念:
是備份低級別或者同級別備份以來的所有數據塊,也就是要備份前期備份以來的差異數據塊。在實際的備份中必須存在基礎備份也就是0級備份,若沒有0級備份則沒有比較的對象文件,從而無法實現增量備份,而0級備份便是數據庫的全備份。(在Oracle10g之前的版本中,增量備份可以有n多個級別,從0級、1級…….這樣的順序直到n級,n為小於等於4的整數。而10g之后包括10g,Oracle的官方文檔明確指出增量備份只有0和1兩種級別,設置太多的級別沒有太大的意義,不過在實際執行增量操作時,仍能能夠指定多個級別,最大能夠支持4級的增量備份)
備份原則:
(1) 若前面同時有n-1級別和同級別,則備份相同級別以來變化的數據;
(2) 若前面沒有同級別的備份,則備份n-x級別以來變化的數據;
總的一點,差異增量觸發的條件是:小於等於當前級別;
下面是周備份差異增量備份策略:
Rman備份基本命令:
登錄Rman:
win+r 輸入rman target/,或者先輸入cmd,窗口打開后再輸入rman target/(建議用后者)
登錄進入的方式:
Rman targetsystem/newoa
Rman targetsystem/newoa nocatalog(控制文件方式)
Rman targetsystem/newoa catalog(恢復目錄方式)
數據庫備份:
Backup databaseformat=’ D:/backup/%d_%T_%s’;(format備份到自己想要備份到的地方)
備份表空間:
Backup tablespaceemp;
備份數據文件:
Backup datafileformat’ D:/backup/%d_%T_%s’;
備份歸檔日志:
Backup archivelogall delete input format ‘D:/backup/%d_%T_%s.dbf’;
備份控制文件:
Backup currentcontrolfile format ‘D:/backup/%d_%T_%s’;(current當前的)
備份spfile(參數文件):
Backup spfileformat=’ D:/backup/%d_%T_%s’;
0級增量備份:(level 后是幾就代表幾級)
backup incrementallevel 0 database format 'D:/backup/%d_%T_%s';
1級增量備份:
backup incrementallevel 1 database format 'D:/backup/%d_%T_%s';
---rman 維護命令:(登錄rman后進行的操作)
listbackup --列出全部的備份信息
list backup ofdatabase --列出數據庫備份
list backup of tablespace emp --列出指定的表空間備份
list backup of datafile5 --列出指定的數據文件備份
list backup ofcontrolfile --列出控制文件備份
list backup ofspfile --列出spfile備份
list archivelogall --列出歸檔日志
list backup of archivelogall --列出歸檔日志的備份
list backup of databasesummary --列出可用的備份
list backup of tablespace empsummary --關於表空間的備份
list backup byfile --按文件類型列出備份
list expired backup of archivelog all summary --失效的備份
reportobsolete --查看過期的
deleteobsolete --刪除過期的
list recoverable backup ofdatabase --列出有效的備份
list expiredbackup --列出失效的備份
list expired backup of archivelogall --列出失效的歸檔日志備份
在開始操作前一定要將數據庫設為歸檔模式,否則無法實現備份操作
首先切換到服務器歸檔模式,如果已經是歸檔模式可以跳過此步驟:
(1) Win鍵+r打開cmd , sqlplus /nolog (啟動sqlplus)
(2) SQL>conn system/newoa as sysdba;(以DBA身份連接數據庫)
(3) SQL>archivelog list;(查看是否處於歸檔模式)
(4) shutdownimmediate;(立即關閉數據庫)
(5) startupmount;(啟動實例並加載數據庫,但不打開)
(6) alterdatabase archivelog;(更改數據庫為歸檔模式)
(7) 重復步驟(3)若出現下圖,表示數據庫已切換歸檔模式
(8) alterdatabase open;(打開數據庫)
開始備份,新建四個文件分別是:rman0.bat,rman0.txt,rman1.bat,rman1.txt(文件的名字隨便命名只要區分備份級別即可)
Rman0.bat腳本內容:
rman target system/newoa nocatalogCMDFILE 'd:/Rman0.txt' LOG 'd:/backup/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';----à(此地址為日志地址)
Rman0.txt內容:
run{
backup incremental level 0database format 'D:/backup/%d_%T_%s';
backup archivelog all format'D:/backup/archivelog_%d_%T_%s_%p' delete all input;
}
Rman1.bat腳本內容:
rman target system/newoa nocatalogCMDFILE 'd:/Rman1.txt' LOG 'd:/backup/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';
rman1.txt內容:
run{
backup incremental level 1database format 'D:/backup/%d_%T_%s_%p';
backup archivelog all format'D:/backup/archivelog_%d_%T_%s_%p' delete all input;
}
在這里不需要再特意的寫備份控制文件,在備份數據庫時里面已經包含了控制文件的備份
在開始備份前,需在D盤中新建一個名為backup的文件夾,由上面備份文件存放的路徑可以看出;
執行rman0.bat:
出現這個窗口表示成功執行,若執行后沒過幾秒關閉則失敗,具體失敗原因在D盤backup文件夾的日志文件中可以查看;
備份成功后到磁盤中可以看到已經備份好的文件;
這樣數據庫0級備份便完成,接着進入到數據庫,添加一些數據再進行1級數據庫的備份(執行rman1.bat文件);
這時可以登錄rman查看已備份好的數據庫具體信息:
打開cmd 執行 rman target/
接着執行 list backup; 會看到以下信息
恢復數據庫
恢復數據庫的方式:基於scn恢復
選擇scn恢復時,scn值為你選擇中的備份片的控制文件scn值,使用 list backup命令去查看;
開始恢復:
(1) 登錄到rman, --------rman target/
(2) shutdownimmediate;(立即關閉數據庫)
(3) startup mount;(啟動實例並加載數據庫,但不打開)
(4) run{
set untilscn 1041640;
restoredatabase;
recoverdatabase;
alterdatabase open resetlogs;
}
結束之后便可進入數據庫查看數據是否恢復。