--=========================
-- RMAN 概述及其體系結(jié)構(gòu)
--=========================
?
一、 Recovery Manager ( RMAN )特性
??? 是一種用于集備份 (backup) 、還原 (restore) 和恢復(fù) (recover) 數(shù)據(jù)庫于一體的 Oracle 工具,支持命令行及圖形界面操作
??? 能夠備份整個數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、控制文件、歸檔文件以及 Spfile 參數(shù)文件。
??? 支持增量數(shù)據(jù)塊級別的備份和塊級別的介質(zhì)恢復(fù)
??? 可以保存頻繁執(zhí)行的備份恢復(fù)腳本
? ?? 可以實現(xiàn)數(shù)據(jù)庫的克隆、使用 RMAN 建立備用數(shù)據(jù)庫
??? 支持鏡像備份與備份集,可以備份到磁盤與磁帶
??? 管理備份與恢復(fù)任務(wù)
??? 可增加備份并發(fā)度或限制 I / O 減少備份給數(shù)據(jù)庫帶來的影響
??? 在備份期間檢查損壞的數(shù)據(jù)塊
??? 支持在備份期間使用壓縮特性來減少磁盤空間的占用
?
二、 RMAN 組件
??? 1.RMAN 可執(zhí)行程序
??????? 在 Windows 操作系統(tǒng)中為 rman . exe ,在 Unix 系統(tǒng)中為 rman
??????? 程序所在位置: $ORACLE_HOME / bin
??????? a . 進程與內(nèi)存要求
??????????? 更多的進程的需要
??????????? 大池的分配
??????? b . 基本環(huán)境變量需求
??????????? ORACLE_SID , ORACLE_HOME,PATH,NLS_LANG, 對基于時間的備份與恢復(fù),需要另外設(shè)置 NLS_DATE_FORMAT
??????? c . 權(quán)限要求
??????????? 需要 sysdba 系統(tǒng)權(quán)限
??????????? 如果是本地,也可以采用 OS 認證,遠程需要采用密碼文件認證
??????? d . 版本要求
??????????? RMAN 工具版本與目標數(shù)據(jù)庫必須是同一個版本。如使用恢復(fù)目錄 ??? 還需要注意
??????????????? 創(chuàng)建 rman 恢復(fù)目錄的腳本版本必須大于或等于恢復(fù)目錄所在數(shù)據(jù)庫的版本
??????????????? 創(chuàng)建 rman 恢復(fù)目錄的腳本版本必須大于或等于目標數(shù)據(jù)庫版本
??????? 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 ???????
??????????? 根據(jù)變量 PATH 的設(shè)置,哪個在前,則優(yōu)先使用在前面的命令
??????????? 解決辦法:修改 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. 目標數(shù)據(jù)庫
??? ??? 目標數(shù)據(jù)庫即指想要備份、還原與恢復(fù)的數(shù)據(jù)庫。 RMAN 可執(zhí)行程序一次只能連接一個數(shù)據(jù)庫
??????? 目標數(shù)據(jù)庫的控制文件存儲了 RMAN 所需的信息 ( 存儲倉庫使用控制文件時 ) , RMAN 通過讀取控制文件來確定目標數(shù)據(jù)庫的物理結(jié)構(gòu),
??????? 要備份的數(shù)據(jù)文件的位置,歸檔信息等,在使用 RMAN 時會對控制文件進行更新。
???
??? 3. 服務(wù)器進程與通道
??????? RMAN 可從從遠程或本地通過普通的服務(wù)器會話與調(diào)用 PL / SQL 連接到實例, RMAN 啟動后會產(chǎn)生一個普通的服務(wù)器進程
??????? 一旦備份與還原操作啟動,則 RMAN 會根據(jù)配置啟用一個或多個通道
??????? 通道簡言之即是完成文件復(fù)制工作的的服務(wù)器進程,多通道則實現(xiàn)了并行執(zhí)行操作
??????? 通道分為備份或還原到磁盤的磁盤通道 (disk channel ) 、備份還原到磁帶的磁帶通道 ( SBT ) ,可以自動或手動分配通道
???
??? 4. 存儲倉庫
??????? 存儲了與目標數(shù)據(jù)庫及其備份相關(guān)的元數(shù)據(jù)
??????? 包含目標數(shù)據(jù)庫物理結(jié)構(gòu)的詳細信息、數(shù)據(jù)文件的位置
??????? 已完成的所有備份的細節(jié)
??????? RMAN 的永久配置信息
??????? 存儲倉庫始終被存儲在目標數(shù)據(jù)庫的控制文件內(nèi),或存儲在恢復(fù)目錄內(nèi) ( 一個單獨的 Oracle 數(shù)據(jù)庫 )
??????? 參數(shù) control_file_record_keep_time 決定了控制文件里可重復(fù)使用的記錄所能保存的最小天數(shù)
??????????? 當一條新的記錄需要添加到可重用記錄的空間時,并且最老的記錄在可重用記錄空間中還沒有老化,即實際保留的天數(shù)未超過
??????????? 這個參數(shù)規(guī)定的天數(shù),則控制文件中可重用記錄部分的空間將被自動擴展,此時控制文件尺寸將會變大。
???
??? 5. 恢復(fù)目錄
??????? 可以將目標數(shù)據(jù)庫的備份恢復(fù) , 元數(shù)據(jù)等相關(guān)信息寫入到一個單獨的數(shù)據(jù)庫 , 這個單獨的數(shù)據(jù)庫即為恢復(fù)目錄
??????? 恢復(fù)目錄可以存儲 RMAN 腳本,而非恢復(fù)目錄情況下,則備份恢復(fù)腳本存儲為操作系統(tǒng)文件
??????? 恢復(fù)目錄的內(nèi)容通常包括,數(shù)據(jù)文件、歸檔日志備份集,備份片,鏡像副本、 RMAN 存儲腳本,永久久的配置信息等
??????? 建議將恢復(fù)目錄放置到與目標數(shù)據(jù)庫不同的主機之上
???
??? 6. 支持介質(zhì)管理庫
??????? 介質(zhì)管理庫用于 RMAN 從磁帶進行備份與還原
??????? RMAN 支持主流的磁帶庫設(shè)備與軟件 ( IBM , Hewlett Packard )
???
??? 7. 輔助數(shù)據(jù)庫 ( Standby Database $ duplicate database)
??????? Standby Database: 是目標數(shù)據(jù)庫的一個副本 , 使用目標數(shù)據(jù)庫 ( 主數(shù)據(jù)庫 )archived log 將其更新 , 不具有唯一的 DBID
??????????? rman 可以創(chuàng)建或備份 Standby Database ,可用于主數(shù)據(jù)庫的故障轉(zhuǎn)移
??????? duplicate database: 是目標數(shù)據(jù)庫的一個副本或子集,且擁有唯一的 DBID, 從而獨立于主數(shù)據(jù)庫
??????????? 能夠在相同的恢復(fù)目錄內(nèi)作為一個主數(shù)據(jù)庫注冊,通常用于測試目的
??????? TSPITR(tablespace point-in-time recovery): 表空間時點恢復(fù) , 將一個或多個表空間恢復(fù)到非當前狀態(tài) , 而其它表空間保留當前狀態(tài)
???????????????
??? 8. 備份目的地
??????? 默認的備份目的地為閃回區(qū), $ORACLE_BASE / flash_recovery_area /
??????? 可以設(shè)置參數(shù) DB_RECOVERY_FILE_DEST 參數(shù)和 DB_RECOVERY_FILE_SIZE 進行調(diào)整
???????
??? 9. 通道與通道分配,請參考: RMAN 配置、監(jiān)控與管理
???
三、使用 RMAN 連接到數(shù)據(jù)庫
??? 1.RMAN 使用時需要考慮的問題
??????? 資源:共享內(nèi)存,更多的進程
??????? 權(quán)限:授予用戶 sysdba 權(quán)限, OS 訪問設(shè)備的權(quán)限
??????? 遠程操作
??????????? 設(shè)置密碼文件
??????????? 確保密碼文件被備份
??????? 全球化環(huán)境變量設(shè)置
??????? 在 RMAN 命令行格式化時間參數(shù)
???
??? 2. 連接類型
??????? 目標數(shù)據(jù)庫
??????? 恢復(fù)目錄數(shù)據(jù)庫,缺省情況下 RMAN 運行在非恢復(fù)目錄數(shù)據(jù)庫
??????? 輔助數(shù)據(jù)庫
??????????? Standby database
??????????? Duplicate database
??????????? TSPITR instance
??? 4. 連接目標數(shù)據(jù)庫或恢復(fù)目錄
??????? -- 不連接數(shù)據(jù)庫僅啟動 rman
??????????? [oracle@oradb ~]$ rman
???????
??????? -- 使用操作系統(tǒng)認證連接到目標數(shù)據(jù)庫
??????????? Unix : $ ORACLE_SID = orcl ; export ORACLE_SID
??????????????? ? $ rman target /
??????????????? ?
??????????? Win : ?? C : / > set oracle_sid = orcl
??????????????? ?? C : / > rman target /
??????????????? ?
??????? -- 從命令行連接到目標數(shù)據(jù)庫和恢復(fù)目錄
??????????? % rman target / catalog rman / cat@catdb ? -- 使用 OS 認證 , 第二個 rman 為恢復(fù)目錄的 schema
??????????? % rman target sys / oracle@trgt catalog rman / cat@catdb ? -- 使用 Oracle Net 認證
???????????
??????? -- 從 rman 提示符連接到目標數(shù)據(jù)庫和恢復(fù)目錄
??????????? % 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
???????????
??????? -- 命令行連接到輔助數(shù)據(jù)庫
??????????? % rman auxiliary sys / aux@auxdb
??????????? % rman target sys / oracle@trgt auxiliary sys / aux@auxdb catalog rman / cat@catdb
???????????
??????? -- 從 rman 提示符連接輔助數(shù)據(jù)庫
??????????? % 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 命令行參數(shù)
??????????? 輸出到日志文件
??????????????? $ rman target sys / oracle
??????????????? ? log = $ORALCE_HOME/oradata/log/rman.log append
??? ?
??????????? 執(zhí)行命名文件
??????????? $ 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 提示符下執(zhí)行
??????????? 單獨被執(zhí)行
??????????? 不能夠作為 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 等
??????????? 作為一個組被執(zhí)行
??????????? 如:
??????????????? 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 ';}
??????????????? ??
??? ??? 混合的獨立和作業(yè)命令 ??????????? ?
?
五、更多參考 ???????
?
?
SPFILE 錯誤導(dǎo)致數(shù)據(jù)庫無法啟動
?
Oracle 用戶、對象權(quán)限、系統(tǒng)權(quán)限
?
?
? Oracle 聯(lián)機重做日志文件(ONLINE LOG FILE)
?
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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