RMAN詳細教程(一):基本命令代碼
RMAN詳細教程(二):備份、檢查、維護、恢復
RMAN詳細教程(三):備份腳本的組件和注釋
RMAN詳細教程(四):備份腳本實戰操作
一、基本組件:
1、Server session:
服務器會話,服務器上的進程, 是真正用來干活的;
2、Channel:
是一個通道, 用來連接數據庫與備份的存儲介質;
通道配置選項:
connect :是一個Oracle Net連接串。一般不適用於單實例環境
format : 為通道創建的備份片或映像副本確定路徑與文件名
duration: 控制作業的時間總量,以小時和分鍾進行指定
maxopenfiles:該選項限制RMAN一次能夠打開的輸入文件數,默認為
maxpiecesize:限制一個備份集分割的備份片的大小,以字節(默認)、k、m、g為單位
parms:能夠被用於設置sbt_type通道所需的任何變量
filesperset:備份集中可容納的文件數
backup set: 是一個集合, 是由一個或多個物理文件組成, 是一個邏輯單位.
backup piece: 是真正的一個輸出文件, 受到操作系統單個文件的限制, 即 maxpiecesize 這個參數;
3、backuppiece:
備份片,表示一個由RMAN產生備份的文件.用OS工具可以實實在在的看到;
4、backupset:
備份集,表示進行一次備份所產生的所有備份片集合,是一個邏輯上的概念;
一個數據文件可以跨備份片存在,而不能跨備份集存在。
二、基本作業模板:
示例1:
RMAN> run
{
allocate channel c1 device type disk maxpiecesize 1500m;
backup database plus archivelog delete all input;
release channel c1;
}
allocate channel命令在目標數據庫啟動一個服務器進程,同時必須定義服務器進程執行備份或者恢復操作使用的I/O類型。
每個備份片的最大為1500M,超過這個大小就會產生新的備份片,在啟動備份時,會歸檔當前的日志,生成一個備份片,刪除已備份的歸檔日志.然后備份數據文件,生成兩個備份片(數據文件2G),再備份當前的SPFILE 和CONTROLFILE,生成一個備份片,最后再做一次LOGSWITCH,備份歸檔日志,生成一個備份片,因此可以這樣描述,這個備份集包含成五個備份片,一個備份片包含文件個數由 FILESPERSET 指定.
示例2:
RMAN> run
{
allocate channel c1 device type disk maxpiecesize 1500m;
backup database filesperset 1;
release channel c1;
}
表示一個備份片中包含一個文件,即使沒有達到 1500M,也生成新的備份片,如我的有五個數據文件,還有 SPFILE和 CONTROLFILE 一個備份片,一共生成六個備份片.如果加上plus archivelog delete all input這個備份選項,那 FIELSPERSET 這個參數就會被IGNORE掉。
三、RMAN備份腳本:
1、全備:
$cat arch_rman_backup.sh:
source /home/oracle/.bash_profile
rman target / log=/u01/app/script/arch_rman.log<<EOF
run
{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
sql 'alter system archive log current';
sql 'alter system archive log current';
backup archivelog all format '/backup/arch_%U_%d_%T_%t' delete all input;
backup current controlfile format '/backup/ctl_%U_%d_%T_%t';
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
#delete noprompt backup of database completed before 'sysdate -7';
#delete noprompt archivelog all;
#delete noprompt backup of archivelog all completed before 'sysdate -7';
release channel ch1;
release channel ch2;
}
EOF
2、歸檔日志備份:
$cat arch_rman_backup.sh
source /home/oracle/.bash_profile
rman target / log=/u01/app/script/arch_rman.log<<EOF
run
{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
sql 'alter system archive log current';
#backup database format '/backup/db_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '/backup/arch_%U_%d_%T_%t' delete all input;
backup current controlfile format '/backup/ctl_%U_%d_%T_%t';
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
#delete noprompt backup of database completed before 'sysdate -7';
#delete noprompt archivelog all;
#delete noprompt backup of archivelog all completed before 'sysdate -7';
release channel ch1;
release channel ch2;
}
EOF