--=========================
-- 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
??????????? RMAN > connect target sys / oracle@trgt ???? -- 使用 Oracle Net 認證
??????????? RMAN > connect catalog rman / cat@catdb
???????????
??????? -- 命令行連接到輔助數據庫
??????????? % rman auxiliary sys / aux@auxdb
??????????? % rman target sys / oracle@trgt auxiliary sys / aux@auxdb catalog rman / cat@catdb
???????????
??????? -- 從 rman 提示符連接輔助數據庫
??????????? % rman
??????????? RMAN > connect auxiliary sys / aux@auxdb
???????????
??????????? % rman
??????????? RMAN > connect target sys / oracle@trgt
??????????? RMAN > connect catalog rman / cat@catdb
??????????? RMAN > connect auxiliary sys / aux@auxdb
???????
??????? -- 其它
??????????? 遠程連接
??????????? 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 ';}
??????????????? ??
??? ??? 混合的獨立和作業命令 ??????????? ?
?
五、更多參考 ???????
?
?
?
?
?
? Oracle 聯機重做日志文件(ONLINE LOG FILE)
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
