备份恢复4.1——rman备份基础概念*
1、RMAN備份基礎:
rman組件:
1、目標數據庫:就是要進行備份、轉儲、恢復的數據庫。
2、服務器進程:一般要進行rman操作,要建立兩個服務器進程: 默認服務器進程用于解析rman命令,并且生成隱含執行的PL/SQL塊;輪詢服務器進程用于檢測備份、轉儲、恢復是否已經完成。
3、通道:當rman需要進行備份、轉儲、恢復數據庫的時候,需要在存儲設備(磁盤,磁帶)目標數據庫之間建立連接,這條連接就叫做通道。一般在存儲設備上執行IO時,總會分配相應的通道。既可以手動分配通道,也可以由rman自動分配。
4、rman資料庫(recovery manager repository) 和 rman元數據(recovery manager matedate):rman元數據是指在備份、轉儲、恢復中所使用的數據。rman元數據的集合稱為rman資料庫。當用rman進行brr時,oracle將rman元數據存放到目標數據庫的控制文件中去。如果配置了恢復目錄。
5、恢復目錄:用于存放rman元數據,當控制文件內存在的rman元數據達到了參數control_file_record_keep_time的時間后,其元數據可能會被覆蓋,從而導致之前的備份不能使用,通過使用恢復目錄,可以永久保留需要的rman元數據,另外,在恢復目錄中還可以存放存儲腳本。記住,如果要用恢復目錄存放rman元數據,那么一定要將恢復目錄方案放在與目標數據庫不同的數據庫中。
6、介質管理層:介質管理層是rman與 磁帶磁盤進行io操作的軟件層。
7、rman包:當執行rman命令時,服務器進程首先會將rman命令解析為PL/SQL塊,然后服務器進程通過執行該PL/SQL塊完成rman命令任務。RMAN命令是由三個plsql包來完成的:
dbms_backup_restore——用于執行備份、轉儲、恢復操作的命令backup、copy、restore、recover等都被解析為對該包的調用;
?dbms_revcat——用于維護恢復目錄的命令 resync catalog,catalog等都被解析為對該包的調用;?
dbms_revman——查詢恢復目錄和目標數據庫的控制文件命令 list ,report命令都被解析為對該包的調用。
8、數據庫內rman相關參數:
SQL> show parameter db_recover
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TYPE ? ? ? ? ? ?VALUE
------------------------------------ ? ? ? ? ? ----------- ? ? ? ?------------------------------
db_recovery_file_dest ? ? ? ? ? ? ? ? ? ? string ? ? ? ? ? ? ? ? /u01/app/oracle/fast_recovery_area
db_recovery_file_dest_size ? ? ? ? ? big integer ? ? ? ? ?4122M
rman的特點:
rman可以備份數據庫、表空間、數據文件、控制文件、歸檔日志、參數文件(spfile),但是不能備份在線日志(rodo log),pfile、口令文件。還要注意因為rman是服務器進程完成的,所以要求目標數據庫必須處于mount或者open狀態。
可以預定義頻繁執行的備份或者恢復操作:我們可以講備份恢復相關的rman操作放到恢復目錄中去,存儲為 存儲腳本。
跳過未使用塊:這個就比用戶管理的備份恢復先進的多??梢陨奢^少的備份數據,節約空間。
執行增量塊級備份:這樣在生成備份集(backup set )時,只備份已經使用的數據塊的前提下,只備份上次備份以來改變的數據塊,節約了時間空間。
指定備份限制:在使用rman備份時,可以指定備份集的最大尺寸和備份片(backup piece)的最大尺寸,通過限制備份片的最大尺寸,可以有效的將備份集分布到不同的磁帶上。
在備份時自動檢測壞塊:我們知道在使用用戶管理的備份恢復時,即使數據文件中出現了壞塊,也可以備份數據文件,如果需要檢查是否有壞塊,那就需要使用DBVERIFY工具進行檢查。當使用rman進行備份時,服務器進程自動將壞塊信息寫入動態性能視圖(好幾個視圖里都寫入了)通過查詢v$backup_corruption我們就可以查看backup命令所檢測到的壞塊。通過查詢v$copy_corruption視圖可以看到執行copy或者backup as copy 命令所檢測到的損壞塊。
自動使用并行化:如果服務器有多個cpu,那么執行前可分配多個通道,分配后,rman會啟用多個服務器進程并行執行備份恢復操作。
運行rman(連接數據庫):
這個既可以在em上,也可以在命令行中運行。在進行備份恢復時,必須連接到目標數據庫,如果需要使用恢復目錄存放rman元數據,那么還需要連接到恢復目錄數據庫。如果使用了輔助數據庫,那么還需要連接到輔助數據庫。
如果是直接在目標數據庫中使用控制文件存放rman元數據,那就不需要連接到恢復目錄數據庫,那就要指定nocatalog選項,通過target選項指定目標數據庫。連接到目標數據庫:rman target sys/liu123@ mynewdb nocatalog?——注意必須啟動監聽:lsnrctl start。
如果要連接目標數據庫和恢復目錄數據庫,先通過target連接到目標數據庫,在通過catalog選項,連接到恢復目錄數據庫,連接目標數據庫用sysdba 或者sysoper連接;連接恢復目錄數據庫時,必須以恢復目錄所有者身份進行連接。
rman target sys/liu123@mynewdb catalog rman/rman@rcat
若是在rman命令行中:>rman 進入rman命令行,RMAN>?connect target sys/liu123@mynewdb?提示連接到目標數據庫;>connect catalog rman/rman@rcat?? 提示連接到恢復目錄數據庫。
如果是要連接輔助數據庫必須都用sysdba和sysoper用戶進行連接,用auxiliary選項:rman target sys/liu123@mynewdb auxiliary ?sys/liu456@aux;
若是在rman命令行中:>rman 進入rman命令行,RMAN>?connect target sys/liu123@mynewdb?提示連接到目標數據庫;>connect auxiliary sys/liu456@aux提示連接到輔助數據庫。
rman命令:
rman命令分為獨立命令和作業命令,獨立命令顧名思義就是能單獨執行的命令,除了set ,switch等少數命令之外,多數rman命令都可以單獨執行。來看幾個常見的單獨執行命令:
關閉數據庫:RMAN> shutdown immediate ——數據庫關閉。
啟動數據庫:RMAN> startup
備份users表空間:RMAN >backup format '/u01/app/oracle/.../users_bp.bak' tablespace users;
再來看看作業命令:當使用多個rman命令完成某項任務時,應當以作業命令的方式執行這些命令。執行作業命令時,必須將這些相關的rman命令放在run塊中。除了(connect 、create/delete/update catalog、create/delete/update script、list)rman命令。其他rman命令都可以被包含在run塊內。示例:
?RMAN >run {allocate channel d1 type disk;
? ? ? ? ? ? ??? backup format '/u01/..../usersbp.bak' tablespace users;
? ? ? ? ? ? ??? release channel d1;
? ? ? ? ? ? ??? ?}
在rman提示符下還可以運行sql命令。但是必須以sql關鍵詞開始,并且sql語句字符串需用單引號引住。
RMAN>?sql 'alter system switch logfile'; ??? ? ?注意rman中不能運行select。如果sql語句中包含單引號,那需要用兩個單引號,此時的sql整個語句用雙引號
?RMAN>?sql "create tablespace user03 datafile ''/u01/app/.../user.dbf'' size 5m ";
運行存儲腳本:當使用恢復目錄存放rman資料庫時,可以在恢復目錄中建立存儲腳本,建立后就可以在run塊內運行。
RMAN >?run {execute script s1;}
運行操作系統命令:在run塊內運行,在os命令前加host,示例:RMAN >?run { host "dir ?/d:\backup";}
配置rman環境:
配置自動通道并行度:在rman進行備份、轉儲、恢復時,默認情況下會在目標數據庫上非配一個 服務器進程,并由該服務器進程完成brr操作。通過使用configure device type 。。 prarllelism integer可以配置通道并行度。示例:
RMAN >?configure ?device type disk parallelism 3 ;
RMAN >?configure device type sbt parallelism 3;
配置所有通道的備份文件格式:默認情況下,rman會自動為disk分配一個通道,并沒有任何選項。通過配置自動通道,可以指定所有通道的備份文件格式。示例:
RMAN >?configure channel device type disk format 'd:\backup\ %d_%s_%p.bak';
配置特定通道的備份文件格式:當配置自動通道時,如果不指定通道號,則會配置所有通道,如果要配置特定通道,則可以指定通道號。示例:
RMAN> ?configure channel 1 device type disk format ?'d:\backup\%d_%s_%p.bak';??
RMAN> ?configure channel 2 device type disk format ?'d:\backup\%d_%s_%p.bak';
?配置默認存儲設備:默認情況下rman的存儲設備為disk。但是可以改變,示例:
RMAN >?configure default device type to sbt ;
配置備份集和備份片的最大尺寸:注意當配置備份集最大尺寸的時候,必須確保其尺寸可以容納最大數據文件的備份集。
RMAN >?configure maxsetsize to 1g; ??? ??
默認情況,每個備份集只包含一個備份片文件,通過配置備份片的最大尺寸,可將一個備份集劃分為幾個相對小的備份片文件,并將這些備份片文件分布到多個設備上,示例:RMAN > ?configure channel device type disk maxpiecesize 500M;
配置備份優化:備份優化只是用與 backup database , backup archivelog all/like 、 backup backupset all 命令。默認情況下rman進制備份優化。激活備份優化:
RMAN >?configure backup optimization on ;
配置多重備份:默認rman備只生成一個備份片副本,為了生成多個備份片副本,可以配置多重備份,示例:
RMAN >?configure datafile backup copies for device type disk to 3;
配置免除表空間:默認情況下,backup tablespace 命令會備份除了臨時表空間外的所有表空間。如果某些表空間不需要備份,可以在rman備的時候免除這些表空間:
RMAN >?configure exclude for tablespace user03;
配置備份冗余策略:通過配置備份冗余策略。可以使得rman將早期備份標記為陳舊,并且使用delete obsolete 命令可以刪除陳舊備份。示例:
RMAN>?configure retention policy to redundancy 2 ;
配置輔助實例的數據文件名:當使用rman執行表空間時間點恢復(tspitr)或者復制數據庫時,可能需要設置輔助實例數據文件名。示例:
?RMAN>?configre auxname for datafile 2 to ‘d:\auxi\df_2.dbf’;
配置快照控制文件名:當重新同步恢復目錄或者備份控制文件時,rman需要建立快照控制文件。在windows平臺,快照控制文件的默認名為:%ORACLE_HOME%\database\snfcSID.ora。改變控制文件的名稱和位置:
RMAN >?configure snapshot controlfile name to 'd:\oracle\ora10\snfcDEMO.ora';
顯示rman配置:
顯示當前rman環境配置。用 命令:RMAN >show all;?
顯示默認設備類型: ? RMAN > show default device type;
顯示自動通道配置: RMAN> show channel for device type disk;
顯示備份冗余策略:RMAN> show retention policy;
顯示備份優化:RMAN > show backup optimization;
顯示快照控制文件:RMAN> show snapshot controlfile name;
顯示備份集最大尺寸:RMAN>show maxsetsize;
顯示數據文件多重備份:RMAN> show datafile backup copies;
顯示控制文件多重備份:RMAN> show archivelog ?backup copies;
清除rman配置:如果要將rman配置修改為默認配置,則可以使用 clear選項清除相應的rman配置。下面以將備份冗余策略修改為默認配置為例,說明rman配置的方法:
RMAN >?configure retention policy clear ;
2、rman備份:
rman備份可用兩種格式存儲:備份集(backup set ) 和 ?映像副本(image copy)。
說說備份集和備份片吧,一個備份集可以存儲好幾個數據文件,只存儲有數據的塊,不存儲空快;備份片是用于存儲備份信息的二進制文件,每個備份片對應一個操作系統文件,默認情況下一個備份集只有一個備份片,如果將一個備份集存儲到多個設備上,那可以將備份集劃分為多個備份片。
映像副本:類似于用戶管理備份出來的數據文件備份。占用空間與源文件一樣大小。只能 備到磁盤,不能到磁帶。
建立備份集:
備份片的文件名格式:
%c——當生成多重備份時,用于生成備份片的副本號。 ——如果要生成多個備份片副本,這個是必須有的。
%d——用于指定數據庫名。
%e——用于指定歸檔日志序列號。
%p——用于指定備份集內備份片的編號。 ——如果建立多個備份片,這個是必須有的。
%s——用于指定備份集編號。 ——這個是必須有的。
%N——用于指定表空間名稱。
%f——用于指定絕對文件號。
1、完全數據庫備份集:是指使用backup database 命令備份數據庫的所有數據文件和控制文件的方法。完全數據庫備份又包括一致性備份和非一致性備份。
一致性備份:既適用于archivelog模式,也適用于noarchivelog模式。操作:
C;\>?rman target sys/liu123@mynewdb ?nocatalog; ?
RMAN>?shutdown immediate
RMAN>?startup mount
RMAN>?backup database ?format =' d:\backup\%d_%s.dbf';
RMAN>?sql ' alter system archive log current';
當執行backup database 命令時不僅會備份所有的數據文件,還會自動備份控制文件。
非一致性備份:這個是指在open狀態下備份所有的數據文件和控制文件,只適用于archivelog模式:
RMAN>?backup database ?format =' d:\backup\%d_%s.dbf';
RMAN>?sql ' alter system archive log current';
免除表空間:正常是除了臨時表空間都備,但是如果有類似于只讀表空間這樣的變化很少的表空間,可以設定不備份。
設置:
RMAN>?configure exclude for ?tablespace user03;
RMAN>?backup database ?format =' d:\backup\%d_%s.dbf';
RMAN>?sql ' alter system archive log current';
2、表空間備份集:是指用backup tablespace 命令備份一個或多個表空間的方法,注意備份表空間只適用于archivelog模式,并且要求數據庫必須處于open狀態。示例:RMAN >backup ?tablespace user03 format='d:\backup\%N_%s.dbf';
3、數據文件備份集:是指用backup datafiel備份一個或多個數據文件的方法,數據庫既可以處于mount狀態,也可以處于open狀態。示例:
RMAN >?backup datafile 5 format ='d:\bakup\%N_%f_%s.dbf';
4、控制文件備份集:示例:RMAN>backup current confrolfile format='d:\backup\%d_%s.ctl';
注意當備份數據文件1時,自動備份當前控制文件,當備份其他數據文件時,通過指定include current controlfile 選項可以同時備份控制文件。示例:
RMAN >?backup datafile 5 format =‘d:\backup\%d_%s.dbf’ include currrent controlfile;
5、spfile備份集:示例:RMAN>?backup spfile format='d:backup\%d_%s.par';
6、歸檔日志備份集:示例:RMAN>backup format =‘d:\backup\%d_%s.arc’ archivelog from time 'sysdate -1 ' until time 'sysdate';
7、并行化備份集:應該為每個備份集分配一個通道,(可以用configure命令配置并行度,也可以使用allocate channel命令手工配置多個通道)
RMAN>?configure device type disk parallelism 3;
RMAN>?backup database format ='d:\backup\%d_%s.dbf';
RMAN>?configure device type disk clear;
8、建立多重備份:通過backup命令后帶有copies選項,可以指定生產多重備份副本,以備份users表空間,生產三個備份副本為例:
RMAN>?backup copies 3 tablespace users format= 'd;\bak;%N_%s.dbf , 'd:\bak2\%N_%s.dbf ' , 'd:\bak3\%N_%s.dbf' ;
9、備份備份集:是指用backup backupset 命令備份已存在的備份集的方法。下面將編號問32的備份集備份到d:\bak1 目錄下:
RMAN>?backup backupset 32 format=‘d:\bak1\%d_%s.bak’;
10、建立多個備份片:注意當建立多個備份片時,必須指定%p匹配符。示例:
RMAN>?configure channel device type sbt ?maxpiecesize 4G;
RMAN>?backup device type sbt format '%d_%s_%p.dbf' database;
11、建立壓縮備份集:通過使用backup 命令的as compressed backupset 選項,可以有效地利用二進制壓縮特征,注意這樣好處是節省空間,但是壞處是增加了cpu的開銷。 RMAN >?backup as compressed backupset ?tablespace users format = ' d:\backup\%d_%s.dbf';
12、備份數據文件和歸檔日志:當使用backup命令備份數據文件時,通過制定 plus archivelog選項同時備份歸檔日志:
RMAN>?backup format ’d:\backup\%d_%s.dbk‘ tablespace user01 plus archivelog;
13、制定 備份集標記:默認情況下rman會自動為備份集提供標記,為了給備份集提供更有意義的名稱,可以使用tag選項指定備份集標記,示例:
RMAN >?backup format ’d:\backup\%d_%s.bak‘ tablespace users tag='users';
建立映像副本
映像副本信息會被記載到RMAN資料庫,只能基于數據文件,控制文件,歸檔日志建立映像副本,而不能基于spfile建立映像副本,只能在磁盤上建立,不能在磁帶上建立。10g以前用的是copy命令,10g后用的是backup命令的as copy選項,
建立數據文件映像副本:
示例:RMAN>?backup as copy format = 'd:\backup\df_5.dbf' datafile 5;
或者: RMAN>?copy datafile 5 to ’d:\backup\df_5.dbf‘;
?建立控制文件映像副本:
RMAN>?backup as copy format ='d:\backup\demo.ctl' currnt controlfile;
RMAN>?copy current controlfile to 'd:\backup\demo.ctl';
建立歸檔日志映像副本:
示例:RMAN>?backup as copy format = 'd:\backup\archive\arc20.log' archivelog sequence 20;
RMAN>?copy archivelog 'd:\demo\archive\arc00020_0538067512.001' to 'd:backup\cachive\arc20.log';
并行化建立映像副本:就和并行化備份集差不多,可以分配多個通道,既可以使用configure命令配置并行度。也可以使用allocate channel手工配置多個通道,為了使用并行化映像副本,不僅需要分配多個通道,而且應該在一個backup as copy 或者copy命令下備份所有文件。下面以備份數據文件5、6、7為例:
RMAN >configure ?device type disk parallelism 3 ;?
RMAN >backup as copy format='d:\backup\df_%f.dbf' datafile 5,6,7;
RMAN >?configure device type disk clear;
指定映像副本標記:默認情況下rman會自動為映像副本提供標記,為了給映像副本提供更有意義的名稱,可以使用tag選項指定備份集標記,示例:
RMAN >?backup as copy format=’d:\backup\df_%f.dbf‘ datafile 5 tag_df_5;
RMAN>?copy datafile 5 to 'd:\backup\df_df_%f.dbf' tag=df_5;
當使用rman備份操作時,rman資料庫信息會被存放的目標數據庫的控制文件中。
通過查詢目標數據庫的動態性能視圖,可以取得rman資料庫的相關信息。
1、v$archived_log .該動態性能視圖用于顯示所有歸檔日志映像副本的信息。
SQL>?select sequence#,name,first_change# from v$archived_log where status='A';
2、v$backup_datafile?該動態性能視圖用于顯示控制文件和數據文件的備份集信息,通過在視圖v$backup_datafile 、 v$backup_piece之間連接查詢。可以顯示特定數據文件的備份片的信息。例如,下面顯示所有數據文件的備份片信息為例。書面使用該視圖的方法:
SQL>?select a.file# , b.handle, a.block*a.block_size byte from v$backup_datafile a, v$backup_piece b where a.set_stamp=b.set_stamp and b.status='A';
file#用于標識數據文件編號。其中0表示控制文件,handle標識備份片對應的文件名。byte標識數據文件備份在備份片內占用的空間。set_stamp用于唯一標示備份集的數字值。
3、v$backup_redolog.該動態性能視圖用于顯示歸檔日志備份集的信息。每個歸檔日志備份集可以包含一個或者多個歸檔日志。通過在v$backup_piece / v$backup_redolog 之間進行連接查詢。可以顯示備份片文件所包含的歸檔日志備份信息。
SQL>?select distinct a.handle, b.sequence#, b.first_change#,b.blocks from v$backup_piece a, v$backup_redolog b where a.set_stamp=b.set_stamp and a.status='A';
handle標識備份片對應的文件名,sequence#標識日志序列號,blocks用于標識被備份的日志塊個數。
4、v$backup_set?和 v$backup_piece .v$backup_set用于顯示備份集的詳細信息,v$backup_piece用于顯示備份片的詳細信息。通過而知之間的鏈接查詢,可以顯示備份集所對應的備份片的信息。
SQL>?select b.handle, a.backup_type, a.pieces , a.elapsed_seconds form v$backup_set a, v$backup_piece b where a.set_stamp=b.set_stamp and b.status='A';
backup_type用于顯示備份片類型。(D:數據文件完全備份。 I : 數據文件增量備份。 L: 歸檔日志備份。) pieces 用于標識備份片個數,elapsed_seconds用于標識備份的總開銷時間。
5、v$backup_corruption ?用于顯示在執行backup名利時所檢測的損壞數據塊信息。顯示backup所檢測到的所有損壞數據塊的信息示例:
SQL>select file# , block#, blocks, marked_corrupt from v$backup_corruption;
其中file#標識損壞塊所在的數據文件編號。block#用于標識損壞塊的其實塊編號。blocks用于標識被損壞的連續塊個數。marked_corrupt用于標識塊是否已經被數據塊標記問損壞值為YES或NO。
6、v$copy_corruption :該動態性能視圖用于顯示當執行copy命令時所檢測到的損壞數據塊信息。
SQL>?select file#, block#, blocks marked_corrupt ?from ?v$copy_corruption;
其中file#標識損壞塊所在的數據文件編號。block#用于標識損壞塊的其實塊編號。blocks用于標識被損壞的連續塊個數。marked_corrupt用于標識塊是否已經被數據塊標記問損壞值為YES或NO。
總結
以上是生活随笔為你收集整理的备份恢复4.1——rman备份基础概念*的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超级好用的KeyBoard WPF软键盘
- 下一篇: notepad++官网下载(官网无法访问