天天看點

RMAN 概述及其體系結構 .

--=========================

-- RMAN 概述及其體系結構

一、Recovery Manager(RMAN)特性

    是一種用于集備份(backup)、還原(restore)和恢複(recover)資料庫于一體的Oracle 工具,支援指令行及圖形界面操作

    能夠備份整個資料庫、表空間、資料檔案、控制檔案、歸檔檔案以及Spfile參數檔案。

    支援增量資料塊級别的備份和塊級别的媒體恢複

    可以儲存頻繁執行的備份恢複腳本

    可以實作資料庫的克隆、使用RMAN建立備用資料庫

    支援鏡像備份與備份集,可以備份到磁盤與錄音帶

    管理備份與恢複任務

    可增加備份并發度或限制I/O減少備份給資料庫帶來的影響

    在備份期間檢查損壞的資料塊

    支援在備份期間使用壓縮特性來減少磁盤空間的占用

二、RMAN元件

    1.RMAN可執行程式

        在Windows作業系統中為rman.exe,在Unix系統中為rman

        程式所在位置:$ORACLE_HOME/bin

        a.程序與記憶體要求

            更多的程序的需要

            大池的配置設定

        b.基本環境變量需求

            ORACLE_SID,ORACLE_HOME,PATH,NLS_LANG,對基于時間的備份與恢複,需要另外設定NLS_DATE_FORMAT

        c.權限要求

            需要sysdba系統權限

            如果是本地,也可以采用OS認證,遠端需要采用密碼檔案認證

        d.版本要求

            RMAN工具版本與目标資料庫必須是同一個版本。如使用恢複目錄    還需要注意

                建立rman恢複目錄的腳本版本必須大于或等于恢複目錄所在資料庫的版本

                建立rman恢複目錄的腳本版本必須大于或等于目标資料庫版本

        e.注意Linux中有兩個RMAN

            [root@robinson ~]# find / -name rman

            /usr/X11R6/bin/rman   #--非oracle的rman指令

            /u01/app/oracle/10g/oc4j/j2ee/oc4j_applications/applications/em/em/database/rman

            /u01/app/oracle/10g/oc4j/j2ee/oc4j_applications/applications/em/em/WEB-INF/perl/db/rman

            /u01/app/oracle/10g/bin/rman #--oracle中的rman指令

            /u01/app/oracle/10g/sysman/admin/scripts/db/rman       

            根據變量PATH的設定,哪個在前,則優先使用在前面的指令

            解決辦法:修改PATH變量,即将.bash_profile檔案PATH項中$ORACLE_HOME/bin放在$PATH之前

            [oracle@robinson ~]$ echo $PATH #--修改前

            /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin:/u01/app/oracle/10g/bin

            [oracle@robinson ~]$ echo $PATH #--修改後

            /u01/app/oracle/10g/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin

    2.目标資料庫

        目标資料庫即指想要備份、還原與恢複的資料庫。RMAN可執行程式一次隻能連接配接一個資料庫

        目标資料庫的控制檔案存儲了RMAN所需的資訊(存儲倉庫使用控制檔案時),RMAN通過讀取控制檔案來确定目标資料庫的實體結構,

        要備份的資料檔案的位置,歸檔資訊等,在使用RMAN時會對控制檔案進行更新。

    3.伺服器程序與通道

        RMAN可從從遠端或本地通過普通的伺服器會話與調用PL/SQL連接配接到執行個體,RMAN啟動後會産生一個普通的伺服器程序

        一旦備份與還原操作啟動,則RMAN會根據配置啟用一個或多個通道

        通道簡言之即是完成檔案複制工作的的伺服器程序,多通道則實作了并行執行操作

        通道分為備份或還原到磁盤的磁盤通道(disk channel)、備份還原到錄音帶的錄音帶通道(SBT),可以自動或手動配置設定通道

    4.存儲倉庫

        存儲了與目标資料庫及其備份相關的中繼資料

        包含目标資料庫實體結構的詳細資訊、資料檔案的位置

        已完成的所有備份的細節

        RMAN的永久配置資訊

        存儲倉庫始終被存儲在目标資料庫的控制檔案内,或存儲在恢複目錄内(一個單獨的Oracle資料庫)

        參數control_file_record_keep_time決定了控制檔案裡可重複使用的記錄所能儲存的最小天數

            當一條新的記錄需要添加到可重用記錄的空間時,并且最老的記錄在可重用記錄空間中還沒有老化,即實際保留的天數未超過

            這個參數規定的天數,則控制檔案中可重用記錄部分的空間将被自動擴充,此時控制檔案尺寸将會變大。

    5.恢複目錄

        可以将目标資料庫的備份恢複,中繼資料等相關資訊寫入到一個單獨的資料庫,這個單獨的資料庫即為恢複目錄

        恢複目錄可以存儲RMAN腳本,而非恢複目錄情況下,則備份恢複腳本存儲為作業系統檔案

        恢複目錄的内容通常包括,資料檔案、歸檔日志備份集,備份片,鏡像副本、RMAN存儲腳本,永久久的配置資訊等

        建議将恢複目錄放置到與目标資料庫不同的主機之上

    6.支援媒體管理庫

        媒體管理庫用于RMAN從錄音帶進行備份與還原

        RMAN支援主流的錄音帶庫裝置與軟體(IBM,Hewlett Packard)

    7.輔助資料庫(Standby Database $ duplicate database)

        Standby Database:是目标資料庫的一個副本,使用目标資料庫(主資料庫)archived log将其更新,不具有唯一的DBID

            rman 可以建立或備份Standby Database,可用于主資料庫的故障轉移

        duplicate database:是目标資料庫的一個副本或子集,且擁有唯一的DBID,進而獨立于主資料庫

            能夠在相同的恢複目錄内作為一個主資料庫注冊,通常用于測試目的

        TSPITR(tablespace point-in-time recovery):表空間時點恢複,将一個或多個表空間恢複到非目前狀态,而其它表空間保留目前狀态

    8.備份目的地

        預設的備份目的地為閃回區,$ORACLE_BASE/flash_recovery_area/

        可以設定參數DB_RECOVERY_FILE_DEST參數和DB_RECOVERY_FILE_SIZE進行調整

    9.通道與通道配置設定,請參考:RMAN 配置、監控與管理

三、使用RMAN連接配接到資料庫

    1.RMAN使用時需要考慮的問題

        資源:共享記憶體,更多的程序

        權限:授予使用者sysdba權限,OS通路裝置的權限

        遠端操作

            設定密碼檔案

            確定密碼檔案被備份

        全球化環境變量設定

        在RMAN指令行格式化時間參數

    2.連接配接類型

        目标資料庫

        恢複目錄資料庫,預設情況下RMAN運作在非恢複目錄資料庫

        輔助資料庫

            Standby database

            Duplicate database

            TSPITR instance

    4.連接配接目标資料庫或恢複目錄

        --不連接配接資料庫僅啟動rman

            [oracle@oradb ~]$ rman

        --使用作業系統認證連接配接到目标資料庫

            Unix: $ ORACLE_SID = orcl; export ORACLE_SID

                 $ rman target /

            Win:   C:/> set oracle_sid = orcl

                   C:/> rman target /

        --從指令行連接配接到目标資料庫和恢複目錄

            % rman target / catalog rman/cat@catdb --使用OS認證,第二個rman為恢複目錄的schema

            % rman target sys/oracle@trgt catalog rman/cat@catdb --使用Oracle Net 認證

        --從rman提示符連接配接到目标資料庫和恢複目錄

            % rman

            RMAN> connect target /                   --使用OS認證

            RMAN> connect catalog rman/cat@catdb

            RMAN> connect target sys/oracle@trgt     --使用Oracle Net 認證

        --指令行連接配接到輔助資料庫

            % rman auxiliary sys/aux@auxdb

            % rman target sys/oracle@trgt auxiliary sys/aux@auxdb catalog rman/cat@catdb

        --從rman提示符連接配接輔助資料庫

            RMAN> connect auxiliary sys/aux@auxdb

            RMAN> connect target sys/oracle@trgt

        --其它

            遠端連接配接

            rman target sys/oracle@trgt

            rman target / nocatalog  等同于rman target /

        --rman指令行參數

            輸出到日志檔案

                $ rman target sys/oracle

                 log = $ORALCE_HOME/oradata/log/rman.log append

            執行命名檔案

            $ rman target sys/oracle

             cmdfile = $ORACLE_HOME/scirpts/my_rman_script.rcv

            $rman target sys/oracle@prod @'$ORACLE_HOME/scirpts/my_rman_script.rcv'

四、RMAN指令

    RMAN 指令分類

        單指令

            僅僅在RMAN提示符下執行

            單獨被執行

            不能夠作為RUN的子指令

            如backup database

            下列指令不能用作批指令來使用

                CONNECT

                CONFIGURE

                CREATE CATALOG, DROP CATALOG, UPGRADE CATALOG

                CREATE SCRIPT, DELETE SCRIPT, REPLACE SCRIPT

                LIST

                REPORT

        批指令

            在RUN指令中用括号括起來使用,常用的批指令為allocate channel,set newname for datafile,release channel,switch,set等

            作為一個組被執行

            如:

                RMAN> RUN {

                   2> backup incremental level 0

                   3> format '/u01/app/oracle/bak/%d_%s_%p'

                   4> fileperset 5(database include current controlfile);

                   5> sql 'alter databaes archive log current ';}

        混合的獨立和作業指令             

本文轉自東方之子736651CTO部落格,原文連結:http://blog.51cto.com/ecloud/1137203 ,如需轉載請自行聯系原作者