RMAN詳細教程(一):基本命令代碼
RMAN詳細教程(二):備份、檢查、維護、恢復
RMAN詳細教程(三):備份腳本的組件和注釋
RMAN詳細教程(四):備份腳本實戰操作
一、target——連接數據庫
1、本地:
[oracle@oracle ~]$ rman target /
2、遠程:
[oracle@oracle ~]$ rman target sys/oracle@orcl
二、show——查看配置
RMAN> show all //總配置參數,具體看configure模塊
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; #default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO‘C:ORACLE..SNCFTEST.ORA’; #default
RMAN> show channel; // 通道分配
RMAN> show device type; // IO 設備類型
RMAN> show retention policy; // 保存策略
RMAN> show datafile backup copies; // 多個備份的拷貝數目
RMAN> show maxsetsize; // 備份集大小的最大值
RMAN> show exclude; // 不必備份的表空間
RMAN> show backup optimization; // 備份的優化
三、configure——調整配置
1、configure retention policy to redundancy 1;
舍棄備份原則,共三種,分別是:
(1)CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
保持所有足夠的備份,可以將數據庫系統恢復到最近七天內的任意時刻。任何超過最近七天的數據庫備份將被標記為obsolete。
(2)CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
保持可以恢復的最新的5份數據庫備份,任何超過最新5份的備份都將被標記為redundancy。一般采用的方法,默認值為1,可以設置為5。
(3)CONFIGURE RETENTION POLICY TO NONE;
不需要保持策略,clear將恢復回默認的保持策略。
2、CONFIGURE BACKUP OPTIMIZATION OFF;
默認為關閉,如果打開,rman將對備份的數據文件及歸檔等文件進行一種優化的算法。
3、Configure default device type to disk;
默認值是硬盤,是指定所有I/O操作的設備類型是硬盤或者磁帶(SBT)。
4、CONFIGURE CONTROLFILE AUTOBACKUP OFF;
強制數據庫在備份文件或者執行改變數據庫結構的命令之后將控制文件自動備份,默認值為關閉。這樣在控制文件和catalog丟失后,控制文件仍然可以恢復。
5、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
配置控制文件的備份路徑和備份格式
6、CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
配置數據庫設備類型的並行度,默認為1。
7.CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
配置每次備份的copy數量。
8、CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
配置歸檔日志存放的設備類型。
9、configure maxsetsize 大小;
配置備份集的最大尺寸,默認值是unlimited,單位bytes,K,M,G;
10、CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLE…SNCFTEST.ORA';
配置控制文件的快照文件的存放路徑和文件名,這個快照文件是在備份期間產生的,用於控制文件的讀一致性。
11、CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'C:...%d_DB_%u_%s_%p';
配置備份文件的備份路徑和備份格式。
12、CONFIGURE CHANNEL DISK CLEAR;
用於清除上面的信道配置。
13、CONFIGURE EXCLUDE FOR TABLESPACE
不備份指定的表空間到備份集中,對只讀表空間是非常有用的。
14、configure channel device type disk format 'e:\backupb%d_db_%u';
將備份文件存儲到e:\backupb,后面的%d_db_%u是存儲格式。
15、configure controlfile autobackup format for device type disk to 'e:\backupcontrol%F';
指定control file存儲在另一個路徑: e:\backupcontrol,后面的%F是存儲格式。
四、List—— 列出備份集和數據文件鏡像
1、list incarnation;
匯總查詢,多備份文件時,可以對備份文件有個總體了解。
2、list backup;
列出備份詳細信息。
3、list backup summary;
簡述可用的備份(TY: B代表備份, LV: F代表全備fullbackup, A表示 Archivelog, 0,1,2 表示備份級別, S表示狀態, A表示available可用, X表示expried過期)。
備份列表
===============
關鍵字 TY LV S 設備類型 完成時間 段數 副本數 壓縮標記
------- -- -- - ----------- ---------- ------- ------- ---------- ---
11 B F A DISK 02-7月 -13 1 1 NO TAG20130702T162726
12 B F A DISK 14-2月 -14 1 1 NO TAG20140214T140119
13 B F A DISK 14-2月 -14 1 1 NO TAG20140214T140119
14 B F A DISK 21-2月 -14 1 1 NO TAG20140221T125325
15 B F A DISK 21-2月 -14 1 1 NO TAG20140221T125325
16 B A A DISK 24-2月 -14 1 1 NO TAG20140224T125128
4、list backup by file;
按照文件類型列出以下四種類型列表:
數據文件備份列表、已存檔的日志備份列表、控制文件備份列表、SPFILE 備份的列表。
5、list backup of database summary;
6、list backup of tablespace users;
7、list backup of archivelog all;
查看已經備份的 archive log 情況。
8、list archivelog all;
查看目前所有的archivelog文件 (可能包含已經備份的, 除非你在備份時有參數 delete input file 刪除了)。
9、list backup of spfile;
10、list backup of controlfile;
11、list backup verbose;
12、list backup of datafile 1 [n | <dir>];
13、list backup of archivelog from sequence 1000 until sequence 1020;
14、list backupset tag=TAG20140317T155753;
15、list expried backup;
列出過去的備份文件。
五、Report——顯示存儲倉庫(Repository)中詳細的分析信息
1、report schema;
報告目標數據庫的物理結構。
2、report need backup;
報告需要備份的數據文件(根據條件不同)。
3、report need backup days 3;
最近三天沒有備份的數據文件(如果出問題的話,這些數據文件將需要最近3天的歸檔日志才能恢復)。
4、report need backup redundancy 3;
報告出冗余次數小於3的數據文件。
5、report need backup recovery window of 3 days;
報告出恢復需要3天歸檔日志的數據文件。
6、report obsolete;
報告已經丟棄的備份(前提是設置了備份策略)。
7、report unrecoverable;
報告當前數據庫中不可恢復的數據文件(即沒有這個數據文件的備份、或者該數據文件的備份已經過期)。
8、report schema at time ‘sysdate – 7’;
9、report need backup days 2 tablespace system;
六、Delete——刪除相關的備份集或鏡像副本的物理文件, 同時將刪除標記 delete 更新到控制文件。
delete backupset;
delete backupset n;
delete obsolete; -- 刪除荒廢
delete noprompt obsolete; -- 不提示, 刪除荒廢
delete noprompt expired backup; -- 不提示, 刪除不在磁盤上的備份集(可以先用crosscheck同步確認一下)
delete obsolete redundancy 2;
delete noprompt copy
delete noprompt backupset tag TAG20140317T14432;
delete obsolete recovery window of 7 days;
delete expired backupset;
delete expired copy;
delete expired archivelog all;
七、Crosscheck——設置狀態為AVAILABLE(可用)或者EXPIRED(不可用)
執行crosscheck時,RMAN檢查目錄中列出的每個備份集或副本並且判斷他們是否存在與備份介質上。
如果備份集或副本不存在與備份介質上,它就會被標記為expired, 並且不能用於任何還原操作;
如果備份集或副本存在與備份介質上,它就會維持available狀態。
如果以前被標記為expired 的備份集或副本再次存在於備份介質上,crosscheck 命令就會將它標記回available。
1、RMAN 備份檢驗的幾種狀態:
expired: 對象不存在於磁盤或磁帶。
available: 對象處於可用狀態。
unavailabe: 對象處於不可用狀態。
2、expired 與 obsolette 的區別:
(1)對於EXPIRED狀態,與crosscheck命令是密切相關的,RMAN通過crosscheck命令檢查備份是否存在於備份介質上, 如果不存在,則狀態由AVAILABLE改為EXPIRED。
(2)對於obsolete狀態,是針對MAN備份保留策略來說的,超過了這個保留策略的備份,會被標記為obsolete,但其狀態依舊為AVAILABLE,我們可以使用report obsolete來查看已廢棄的備份。
RMAN>crosscheck backup; --校驗備份片(???)
RMAN> crosscheck backupset; --校驗備份集
RMAN> crosscheck copy; --校驗鏡像副本
RMAN> crosscheck backup of controlfile; --校驗備份的控制文件
RMAN> crosscheck backup of archivelog all; --校驗所有備份的歸檔日志
RMAN> crosscheck backup of datafile 1,2; --校驗datafile 1,2
RMAN> crosscheck backup of tablespace sysaux,system; --校驗表空間sysaux,system
RMAN> crosscheck backup completed between '13-OCT-10' and '23-OCT-10'; --校驗時間段,時間段格式由NLS_DATE_FORMAT設置
RMAN> crosscheck backupset 1067,1068; --校驗指定的備份集
八、backup常用命令
1、將備份集放到快速恢復區中:
1)歸檔模式下:
backup database plus archivelog;
2)非歸檔模式下:
shutdown immediate; # 關閉一致性后,打開到mount狀態
backup database
2、指定備份片段的存放路徑和命名規則:
backup format '/u01/app/oracle/oradata/enmo1/AL_%d/%t/%s/%p' archivelog like '%arc_dest%';
3、備份成鏡像文件:
backup as copy
4、設置備份標記(每個標記必須唯一,相同的標記可以用於多個備份只還原最新的備份)。
backup database tag='full_bak1';
5、設置備份集大小(必須大於數據庫總數據文件的大小,否則會報錯)。
backup database maxsetsize=100m tag='datafile1';
6、設置備份片大小(磁帶或文件系統限制)
run {
allocate channel c1 type disk maxpicecsize 100m format '/data/backup/full_0_%U_%T';
backup database tag='full_0';
release channel c1;
}
PS:
可以在allocate子句中設定每個備份片的大小,以達到磁帶或系統限制。
也可以在configure中設置備份片大小。
Configure channel device type disk maxpiecesize 100 m
Configure channel device type disk clear;
7、備份集的保存策略
backup database keep forever; --永久保留備份文件, 這種需要有恢復目錄的支持
backup database keep until time='sysdate+30'; --保存備份30天
8、重寫configure exclude命令
backup databas noexclude keep forever tag='test backup';
9、檢查數據庫錯誤
backup validate database;
使用RMAN來掃描數據庫的物理/邏輯錯誤,並不執行實際備份。
10、跳過脫機,不可存取或只讀文件
backup database skip readonly;
backup database skip offline;
backup database skip inaccessible;
backup database ship readonly skip offline ship inaccessible;
11、強制備份
backup database force;
12、基於上次備份時間備份數據文件
(1)只備份添加的新數據文件:
backup database not backed up;
(2)備份"在限定時間周期內"沒有被備份的數據文件:
backup database not backed up since time='sysdate-2';
13、備份操作期間檢查邏輯錯誤
backup check logical database;
backup validate check logical database;
14、生成備份副本
backup database copies=2;
15、備份控制文件
backup database device type disk includ current controlfile;
九、Format參數
%a:Oracle數據庫的activation ID即RESETLOG_ID。
%c:備份片段的復制數(從1開始編號,最大不超過256)。
%d:Oracle數據庫名稱。
%D:當前時間中的日,格式為DD。
%e:歸檔序號。
%f:絕對文件編號。
%F:基於"DBID+時間"確定的唯一名稱,格式的形式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 為該數據庫的DBID,YYYYMMDD為日期,QQ是一個1~256的序列。
%h:歸檔日志線程號。
%I:Oracle數據庫的DBID。
%M:當前時間中的月,格式為MM。
%N:表空間名稱。
%n:數據庫名稱,並且會在右側用x字符進行填充,使其保持長度為8。
%p:備份集中備份片段的編號,從1開始。
%s:備份集號。
%t:備份集時間戳。
%T:當前時間的年月日格式(YYYYMMDD)。
%u:是一個由備份集編號和建立時間壓縮后組成的8字符名稱。利用%u可以為每個備份集生成一個唯一的名稱。
%U:默認是%u_%p_%c的簡寫形式,利用它可以為每一個備份片段(即磁盤文件)生成一個唯一名稱,這是最常用的命名方式。執行不同備份操作時,生成的規則也不同,如下所示:
生成備份片段時,%U=%u_%p_%c;
生成數據文件鏡像復制時,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;
生成歸檔文件鏡像復制時,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;
生成控制文件鏡像復制時,%U=cf-D_%d-id-%I_%u。
%Y:當前時間中的年,格式為YYYY。
PS:
如果在BACKUP命令中沒有指定FORMAT選項,則RMAN默認使用%U為備份片段命名。