RMAN前奏
SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
SQL> !cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m
RMAN的重要性,不必在這裡過多的闡述,作為DBA,沒有理由不掌握這一技能。
讀者可以參考官網:http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta2011.htm#RCMRF111
下面是官方文檔簡單的介紹:
RMAN
Purpose
Use the RMAN command to start RMAN from the operating system command line.
RMAN connections to a database are specified and authenticated in the same way as SQL*Plus connections to a database. The only difference is that RMAN connections to a target or auxiliary database require the SYSDBA privilege. The AS SYSDBA keywords are implied and cannot be explicitly specified. See Oracle Database Administrator's Guide to learn about database connection options when using SQL*Plus.r's Guide to learn how to start RMAN from the command line
Prerequisites
You must issue the RMAN command and any options at the operating system command line rather than at the RMAN prompt.
Usage Notes
The command name that you enter at the operating system prompt is operating system-dependent. For example, enter rman in lowercase on Linux and UNIX systems.
If you start RMAN without specifying either CATALOG or NOCATALOG on the operating system command line, then the RMAN session is effectively inNOCATALOG mode unless you execute a CONNECT CATALOG command (see Example 3-32). If you maintain a recovery catalog, then the best practice is to connect RMAN to the recovery catalog before performing RMAN operations.
Syntax(語法)
cmdLine::=
由於版面的原因,讀者可以參考文檔。
大致羅列RMAN的優點如下:
1.支持增量備份:傳統的備份工具如exp或者expdp,都是完整備份,但是沒有不支持增量備份,但是RMAN可以根據備份級別實現增量備份,與傳統的備份相比,這種備份方式,會減少備份的數據量。
2.自動管理備份文件:RMAN備份的數據是RMAN自動管理的,包括文件名字,備份文件存儲目錄,以及識別最近的備份文件,搜索恢復時需要的表空間,模式或數據文件等備份文件。
3.自動化備份與恢復:在備份和恢復操作時,使用簡單的指令就可以實現備份與恢復,且執行過程完全由RMAN自動維護。
4.不產生重做信息:與用戶管理的聯機備份不同,使用RMAN的聯機備份不產生重做信息。
5.恢復目錄:RMAN的自動化備份與恢復功能應該歸功於恢復目錄的使用,RMAN直接在其中保存了備份和恢復腳本。
6.支持映象復制:使用RMAN也可以實現映象復制,映象復制是以os上的文件格式存在,這種復制方式類似於用戶管理的脫機備份的方式。
7.新塊的比較特性:這是RMAN支持增量備份的基礎,這種使得在備份時,跳過數據文件中從未使用過的數據塊的備份,備份數據量的減少直接導致備份存儲空間需求和備份時間的減少。
8.備份的數據文件壓縮處理:RMAN提供一個參數,說明是否對備份文件進行壓縮,壓縮的備份文件以二進制文件格式存在,可以減少備份文件的存儲空間。
9.備份文件有效性檢查功能:這種功能驗證備份的文件是否可用,在恢復前往往需要驗證備份文件的有效性。
RMAN工具使用會話建立客戶端到數據庫服務器的連接,用戶首先需要啟動RMAN可執行程序,然後建立客戶端與服務器端的會話連接,用戶通過RMAN的客戶端進行RMAN操作,執行備份和恢復指令,這些指令在服務器端的服務器進程中執行,而服務器進程完成實際的磁盤讀寫操作。下面簡單的介紹RMAN的系統結構組成:
RMAN可執行程序:它是一個客戶端工具,用來啟動與數據庫服務器的連接,從而實現備份與恢復的各種操作。
RMAN客戶端:一旦建立了與數據庫服務器的會話連接,RMAN可執行程序就創建一個客戶端,通過客戶端完成與數據庫服務器之間的通信,完成各種備份與恢復操作的指令,RMAN客戶端可以連接通過ORACLE NET訪問任何主機。
服務器進程:在RMAN建立了與數據庫服務器的會話連接後,在數據庫服務器端啟動一個後台進程,它執行RMAN客戶端發出的各種數據恢復與備份指令,並完成實際的磁盤或者磁帶設備的讀寫任務。
RMAN信息庫:RMAN信息庫記錄了RMAN的一些信息,如備份的數據文件以及副本的目錄,歸檔的重做日志備份文件和目錄,表空間和數據文件以及備份或恢復的腳本和RMAN的配置信息。默認使用數據庫服務器的控制文件記錄這些信息,讀者可以通過轉儲的控制文件發現這些信息(如alter database backup control file to trace)
恢復目錄:記錄RMAN信息庫的信息。但是恢復目錄需要提前配置,信息庫既可以存儲在數據庫的控制文件中,也可以存儲在恢復目錄中。在oracle中默認先將RMAN信息庫寫入控制文件,如果存在恢復目錄則需要繼續寫到恢復目錄。使用控制文件的不足之處是控制文件中記錄的RMAN信息庫的空間有限,當空間不足時可能會被覆蓋掉。所以oracle建議使用創建單獨的恢復目錄,這樣也可以更好地發揮RMAN提供的新特性。
下面簡介說明下Flash recovery area(快閃恢復區)
快閃恢復區是存儲和恢復數據文件以及相關信息的存儲區。快閃恢復區保存了每個數據文件的備份,增量備份以及歸檔重做日志備份,oracle也允許在快閃恢復區中保存聯機重做日志的冗余副本以及當前控制文件的冗余副本,還有oracle中閃回特性中的閃回日志也保存在快閃恢復區中。
使用RMAN實現數據庫的備份與恢復時,配置的快閃恢復區就是RMAN存儲所有與備份相關的文件存儲區,而此時的文件名不需要用戶干預,oracle使用OMF創建備份文件的文件名,文件名稱格式可以指定。
使用快閃恢復區的優點是,實現了備份文件的自動管理,是的備份與恢復數據庫指令簡介恢復簡單,並且可以集中管理磁盤空間。要求恢復區的空間足夠大,以容納備份的數據。
在快閃恢復區需要設置兩個動態參數:
SQL> show parameter db_recovery_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/flash_recovery
_area
db_recovery_file_dest_size big integer 3852M
前者是設置快閃恢復區在os磁盤空間的位置,後者是快閃恢復區的最大容量。
可以通過pfile或者用用命令alter system 來設置它們。我們備份的整個數據庫,以及控制文件都保存在該快閃恢復區中,該區域中的文件由oracle自動維護,一旦需要恢復數據庫時,只需要簡單的指令
就可以恢復數據庫,RMAN會自動尋找存儲在快閃恢復區中的備份文件完成恢復。(快閃恢復區的參數可以動態修改,如可以在數據庫運行期間更改快閃恢復區的大小,以及改變快閃恢復區在磁盤上的存儲目錄)
SQL> alter system set db_recovery_file_dest_size=4000M;
系統已更改。
如果不需要快閃恢復區可以將參數db_recovery_file_dest 設置成空格,使得快閃恢復區不存在存儲目錄。
我們可以通過數據字典v$recover_file_dest來查看快閃恢復區大的空間使用情況及文件數量:
SQL> select name,space_limit,space_used from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------
/u01/app/oracle/flash_recovery_area 4194304000 758131712
快閃恢復區空間不足的問題解決方法:
1.增加恢復磁盤空間,需要考慮到當前磁盤的大小限制:
SQL> alter system set db_recovery_file_dest_size=5g;
系統已更改。
2.刪除沒有的備份文件或者將備份文件復制到磁帶設備:
使用crosscheck 和delete obsolete指令刪除不需要的文件。或者使用delete expired 指令刪除那些不需要的備份文件。或者使用RMAN的backup recoveryarea指令將恢復區中的文件復制到磁帶上。
3.刪除當前的恢復區,重新設置新的快閃恢復區:
SQL> ALTER SYSTEM SET db_recovery_file_dest ='/home/oracle';
系統已更改。
當向快閃恢復區添加新文件時,oracle會自動更新新文件列表,發現符合刪除的備份文件,這些文件包括不符合保留策略的文件,復制到磁帶的過渡文件,而重做日志文件可控制文件任何時候都不會被刪除。
使用v$flash_recovery_area_usage來查看閃回恢復區空間使用情況:
SQL> select * from v$flash_recovery_area_usage ;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 18.08 0 30
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
已選擇7行。
從上看出閃回恢復區中保存的文件類型有控制文件,歸檔日志文件,在線日志文件,備份片,影像備份文件,以及閃回日志(和閃回相關的記錄)