??博主介紹??:
?又是一天沒白過,我是奈斯,DBA一名?
???擅長Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式數據倉庫)、Linux,也在擴展大數據方向的知識面???
??????大佬們都喜歡靜靜的看文章,并且也會默默的點贊收藏加關注??????
? ? 久違了,各位朋友們!近來的工作變動確實讓我有些忙碌,不過,今天終于能抽出片刻寧靜的時光,與大家分享我的新篇章——Oracle的RMAN物理備份工具。在之前的博客中,我詳細探討了Oracle的邏輯備份工具expdp(exp)和impdp(imp),它們為我們的數據庫提供了強大的數據導出和導入功能。而今,我將轉向另一種備份工具,即物理備份RMAN(Recovery Manager)這一強大工具。
? ? RMAN是Oracle提供的一款功能豐富的備份與恢復工具,它允許我們 直接備份數據庫的物理文件,而不僅僅是數據的邏輯表示 。這種備份方式在某些場景下,尤其是在需要快速恢復或保持數據庫物理結構一致性時,顯得尤為重要。在接下來的內容中,我將帶大家深入了解RMAN的工作原理、使用方法以及一些最佳實踐,希望能夠為大家在數據庫管理和維護方面提供一些有價值的參考。
? ? 然而,RMAN所涉及的內容之廣、之深,使得難以在單篇文章中全面涵蓋。所以我將理論、命令、備份策略、異機恢復、壞塊處理等分成八篇文章去講,即使分為八篇也有不少內容沒有涵蓋到,所以這八篇文章都是精華,看完這八篇就可以解決95%以上的RMAN相關工作內容了。八篇文章的內容分別如下:
- 第一篇:rman物理備份工具的基礎理論概述(當前篇)
- 第二篇:rman工具實用指南:常用命令詳解與實踐
- 第三篇:rman標準化全庫備份策略
- 第四篇:rman全庫異機恢復:從RAC環境到單機測試環境的轉移
- 第五篇:rman全庫異機恢復:從單機環境到RAC測試環境的轉移
- 第六篇:rman時間點異機恢復:從單機環境到單機測試環境的轉移
- 第七篇:Oracle數據庫物理壞塊處理:rman修復壞塊實踐與案例分析
- 第八篇:邏輯備份工具expdp(exp)/impdp(imp)和物理備份工具rman的區別和各自的使用場景總匯
? ? ? ? ? ? ? ? ? ? ? ? ? ??
目錄
1、rman工具
一、rman的內存緩沖與塊跟蹤:
二、rman服務器進程:
三、rman的備份分類
四、rman連接操作的使用(本地和遠程)
五、rman中執行操作系統命令,執行sql語句
六、使用rman創建腳本(必須連接到catalog數據庫,不然無法保存)
案例一:連接rman創建一個rman腳本
七、使用rman執行外部腳本(使用rman參數cmdfile)
八、rman的Data Recovery Advisor(DRA,數據恢復顧問):
案例一:單機環境使用DRA修復數據庫啟動故障之控制文件丟失(11g rac不支持。在進行案例之前需要先進行備份)
案例二:單機環境使用DRA修復數據庫啟動故障之數據文件丟失(11g rac不支持。在進行案例之前需要先進行備份)
2、catalog數據庫
一、ncatalog和catalog的恢復
二、升級的問題?
三、手工再同步恢復目錄(resync catalog)?
四、注冊catalog信息
五、撤消catalog注冊信息
六、刪除catalog注冊信息
案例一:創建catalog恢復目錄(在多實例備份時使用)
? ? ? ?
1、rman工具
? ? rman(recovery manager)是8i以后備份、還原和恢復的工具,位于$oracle_home/bin目錄下。rman實用由兩部分組成,可執行文件和recover.bsq文件。recover.bsq文件實質上是庫文件,可執行文件從recover.bsq文件中析取代碼來創建在目標數據庫上執行的 pl/sql調用。
? ? rman支持命令行及圖形接口,可以通過第三方軟件(nbu\legato\tsm等)及磁帶機進行備份?,支持整備數據庫、表空間、數據文件、控制文件、歸檔日志文件、參數文件等。
? ? 通過rman可以用來備份恢復數據庫的數據文件,歸檔日志,控制文件以及參數文件及整個數據庫的備份恢復工具,同時也可以用來執行完全備份恢復和不完全備份恢復,通過計劃任務實現自動的定時的最優化的備份恢復方案。
? ? ? ? ? ? ?
rman介紹:
01.可以實現自動備份和恢復
02.方便有效的備份歸檔日志
03.自動檢測新的數據文件
04.支持增量備份
05.最大限度的減少備份和恢復的錯誤
06.減少恢復時間
07.在熱備中不會產生redo日志
08.自動檢測損壞的數據塊,并跳過。
09.并行備份恢復
10.在線備份不影響業務的正常運轉
? ? ? ? ? ? ??
rman體系架構:
? ? rman是服務器管理恢復工具(servermanaged recover,smr)實際上是一個獨立應用程序,主要是建立oracle數據庫的客戶端連接,達到有效的訪問并對數據庫執行備份恢復操作,用于備份與恢復的接口。
服務進程
rman的服務是一個后臺進程,用于rman工具與數據庫之間的通信,也用于rman工具與磁盤/磁帶等i/o設置之間的通信,服務進程負責備份與恢復的所有工作,在如下情況將產生一個服務進程。當連接到目標數據庫分配一個新的通道
? ??
通道
通道是服務進程與i/o設備之前讀寫的途徑,一個通道將對應一個服務進程,在分配通道時,需要考慮i/o設備的類型,i/o并發處理的能力,i/o設備能創建的文件的大小,數據庫文件最大的讀速率,最大的打開文件數目等因素
? ??
目標數據庫
就是rman進行備份與恢復的數據庫
? ? ? ??
恢復目錄
用來保存備份與恢復信息的一個數據庫,不建議創建在目標數據庫上,利用恢復目錄可以同時管理多個目標數據庫,存儲更多的備份信息,可以存儲備份腳本。如果不采用恢復目錄,可以采用控制文件來代替恢復目錄,9i后支持控制文件自動備份的功能,利用控制文件很大程度上可以取代恢復目錄。
? ? ? ?
媒體介質管理層
media management layer (mml)是第三方工具,用于管理對磁帶的讀寫與文件的跟蹤管理。如果你想直接通過rman備份到磁帶上,就必須配置媒體管理層,媒體管理層的工具如備份軟件可以調用rman來進行備份與恢復。
? ? ??
備份集與備份片
當發出backup命令的時候,rman將創建一個完成的備份,包含一個到多個備份集,備份集是一個邏輯結構,包含一組的物理文件。這些物理文件就是對應的備份片。備份片是最基本的物理結構,可以產生在磁盤或者磁帶上,可以包含目標數據庫的數據文件,控制文件,歸檔日志與spfile文件。備份集與備份片有如下規定:
(1) 一個數據文件不能跨越一個備份集,但是能跨多個越備份片
(2) 數據文件,控制文件能保存在同樣的備份集上,但是不能與歸檔日志保存在同樣的備份集上
? ? ? ?
資料庫
rman資料庫(rman repository)存儲了目標數據庫的元數據(metadata)和使用rman備份的備份集信息,例如備份集的位置,備份集內包括的備份片,備份集的狀態等。rman進行備份和恢復操作都要訪問rman資料庫。
? ? ? ? ? ? ? ?
一、rman的內存緩沖與塊跟蹤:
? ? RMAN的備份是基于數據塊的備份,數據塊備份的工作原理是:RMAN基于備份算法規則來編譯要備份的文件列表。
? ? RMAN會利用PGA(有時是SGA)創建一些緩沖區,然后通過這些緩沖區將數據塊寫入到備份中(這就是為什么在進行rman備份時,前期不會馬上生成文件,而是將數據緩存到PGA中,然后生成文件)
? ? ? ? ? ? ? ??
內存緩沖區分為輸入緩沖區和輸出緩沖區:
- 輸入緩沖區input buffer填充從備份文件中讀取數據塊;
- 輸出緩沖區output buffer則在執行內存對內存的寫操作時填充需要備份的數據塊,一旦輸出緩沖區被填滿,輸出緩沖區的內容就會被寫入到備份位置。
- 一旦所有文件已通過內存緩沖區過濾,就完成了備份片,同時RMAN會在目標數據庫控制文件中寫入備份片的完成時間和備份片的名稱。
? ? ? ? ?
RMAN的內存利用:
? ? 在磁盤上備份會使用PGA內存空間作為備份緩沖區,PGA內存空間從用于信道進程的內存空間中分配。如果操作系統沒有配置本地異步I/O, 則可以利用DBWR_IO_SLAVES參數使用 I/O 叢屬來填充內存中的輸入緩沖。如果設置DBWR_IO_SLAVES參數為任意的非零值,則RMAN會自動分配4個I/O從屬來協調輸入緩沖區中數據塊加載。為了實現這一功能,RMAN必須利用一個共享內存區域。因此,用于磁盤備份的內存緩沖區會被推入共享池,如果存在大池,則被推入大池。如果沒有使用磁帶I/O從屬,則會在PGA中分配用于磁帶輸出緩沖區的內存。
? ? ? ??
rman塊:
①塊備份優點:
? ? ? ?1)每個數據塊從磁盤讀入內存時都會發生內存到內存的寫操作
? ? ? ?2)在這個操作期間會檢查數據塊的損壞。
②空塊壓縮:
? ? ? ?RMAN訪問數據塊時可以選擇空塊壓縮(null block compression),刪除從來沒有使用過的數據塊(header is 0),并在執行內存對內存的寫操作是丟棄這些數據塊。因此,我們只需要備份使用過的數據塊。
③未使用的塊壓縮:
? ? ? ?未初始化的塊不會備份,在 10.2.0.3 版本后,即使是使用過的塊,如果是空塊,也不會被備份。
④RMAN的塊跟蹤:
? ? ? ? Block change tracking 記錄自從上一次備份以來數據塊的變化,并把這些信息記錄在跟蹤文件中。RMAN使用這個文件判斷增量備份中需要備份的變更數據。這極大的促進了備份性能,RMAN可以不再掃描整個文件以查找變更數據。為此Oracle引入了一個新的后臺進程,CTWR,其全稱為Change Tracking Writer,用于記錄變化的塊并將變化寫入相應的日志文件中。
? ? ?這里延展一個問題:開啟|關閉rman block tracking塊跟蹤。增量的時候必須開。在使用RMAN增量備份的情況下,啟動block change tracking,在做增量備份時會縮短RMAN備份的時間, 因為不用掃描整個data file。 但是block tracking也會帶來其他的一些開銷。所以要根據實際情況決定是否啟用block change tracking
開啟: SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/home/oracle/block.trc'; SQL> select status,filename from v$block_change_tracking; 禁用: SQL>alter database disable block change tracking;
⑤通過位圖跟蹤兩次備份間變化的數據塊:
- 每次備份前進行位圖切換;
- 開發增量備份策略時,要考慮到8個位圖的限制;一般增量備份周期為一個禮拜。在RAC環境中,change tracking file需要放在共享存儲上,Change tracking file的大小和數據庫的大小、enabled 的redo thread的個數成正比;
- Change tracking file 的大小和數據更新的頻率無關;
- 開啟塊跟蹤功能對數據庫的性能有一點影響。
? ? ? ??
二、rman服務器進程:
RMAN生成一個到target db的客戶端連接,并創建兩個服務器進程:
(1)主要進程:生成對sys用戶中的數據包調用(dbms_rcvman和dbms_backup_restore數據包),以執行備份和恢復操作,該進程會在備份和還原期間協調信道進程的工作。
(2)次要進程或(影子進程):輪詢RMAN中的所有長事務(long-runningtransaction)并在內部記錄信息。
? ? ? ? ? ? ? ?
rman進程只有在備份時才有(查看rman備份進程的SQL):
RMAN> backup database; SQL> select sid,serial#,context,sofar,totalwork,round(sofar / totalwork * 100, 2) "%_COMPLETE"from v$session_longopswhere opname like 'RMAN%'AND OPNAME NOT LIKE '%aggregate%'and totalwork != 0and sofar <> totalwork; sofar:完成的工作量 totalwork:總工作量 %_COMPLETE:完成的工作量的百分比
SQL>select sid,serial#,username,paddr,module,program,client_info from v$session where sid=1;
SQL> select * from v$process where addr='00000000AF71B2B0';
? ? ? ? ? ??
三、rman的備份分類
rman完整備份:
? ? 一個或多個數據文件的完整副本,包括從備份開始的所有級的數據塊。
rman增量備份(基本、差異、累計增量備份的總稱):
? ? 從基本備份以來被修改過或增加過的數據塊。增量備份分為0級增量基本備份、1級差異增量備份、1級累積增量備份,增量備份支持歸檔和非歸檔模式,并且只能使用rman才可以實現增量備份。?
- 基本增量(backup incremental level=0 database):基本備份的增量級別為0,執行增量備份操作時,首先需要的是增量基本備份(incremental base backup),以后所有的增量備份都基于這個基本備份。如果沒有生成基本備份就嘗試執行增量備份操作,RMAN 會自動執行基本備份操作。
差異增量(backup incremental level=1 database):差異備份的增量級別為1,對于差異增量備份來說,第一次是基本備份以來所有變化的數據塊,之后RMAN會備份自上次同級或者低級差異增量備份以來所發生變化的數據塊,差異備份是RMAN生成的增量備份的默認類型。差異增量是根據上一次備份后,備份有變化的數據。這種備份把全庫數據分為一小段一小段的,節省了空間,但在恢復時會很麻煩需要逐個恢復。所以不建議使用?
累積增量(backup incremental level =1 cumulative database):累計備份的增量級別為1 cumulative,對于累計增量備份來說,累計增量是根據上一次備份后,備份最開始到生產的所有數據,占用了空間,在恢復時只需恢復一個即可。累計增量適用于數據量小的數據庫,如果數據量很大也不建議使用差異增量備份,在backup 命令中使用cumulative關鍵字。
? ? ? ? ? ??
四、rman連接操作的使用(本地和遠程)
[oracle@lf ~]$ rman ?--help
target ?????目標數據庫的連接字符串
catalog ????用于恢復目錄的連接字符串
nocatalog ??如果指定,則沒有恢復目錄
cmdfile ????輸入命令文件的名稱
? ? ? ? ? ?
使用rman命令進到終端,首先連到target目標實例,然后連接到catalog/nocatalog數據庫:
1)本地連接:
本地連接nocatalog數據庫(常用):
[oracle@lf ~]$ rman target / ---target / 表示使用sys連接到目標數據庫實例。
本地連接catalog數據庫:
[oracle@lf ~]$ rman target / catalog rman/123456@orcl ---target / 表示使用sys連接到目標數據庫實例。 rman用戶是創建catalog數據庫時,一起創建的
? ? ? ?
2)客戶端連接:
客戶端連接nocatalog數據庫(常用):
C:\Users\Administrator>rman target sys/123456@orcl --不指定catalog/nocatalog默認使用nocatalog,也就是將rman備份信息保存在控制文件
客戶端連接catalog數據庫:
C:\Users\Administrator>rman target sys/123456@orcl catalog rman/123456@orcl --不指定catalog/nocatalog默認使用nocatalog,也就是將rman備份信息保存在控制文件
? ?
3)進入rman命令里面連接:
[oracle@lf ~]$ rman
連接nocatalog數據庫(常用):
RMAN> connect target / ---不指定catalog/nocatalog默認使用nocatalog,也就是將rman備份信息保存在控制文件
連接catalog數據庫:
RMAN> connect catalog rman/123456@orcl
? ? ? ? ?
五、rman中執行操作系統命令,執行sql語句
1)執行系統命令
RMAN> run {host 'ls -lrt';} RMAN> run {host 'pwd';}
? ? ? ? ? ?
2)執行數據庫命令
rman> shutdown immediate rman> startup rman> sql 'select * from user_tablespaces';
? ? ? ? ? ? ? ? ?
六、使用rman創建腳本(必須連接到catalog數據庫,不然無法保存)
創建rman腳本:create script?script_name ??
查看rman腳本內容:
? ? ? ?方式一:Print script my_backup_script;
??????方式二:RMAN@orcl> select * from rc_stored_script_line; ???---使用屬于catalog數據庫的用戶才能查詢此表
運行rman腳本:run { execute script script_name; }
修改rman腳本:replace script?script_name
刪除rman腳本:delete script script_name;
? ? ? ? ? ?
案例一:連接rman創建一個rman腳本
[oracle@lf ~]$ rman target / catalog rman/123456@orcl ---rman腳本需要連接到catalog數據庫,在于保存腳本
(1)創建rman腳本
RMAN> create script rman_show comment 'show' ---comment描述腳本的大意。 { show all; }
(2)修改腳本
RMAN> replace script rman_show comment 'show' { show all; show all; }
(3)運行腳本
RMAN> run {execute script rman_show;}
(4)查看腳本內容
方式一:RMAN> print script rman_show;方式二:RMAN@orcl> select * from rc_stored_script_line; ---使用屬于catalog數據庫的用戶才能查詢此表
? ? ? ? ? ??
七、使用rman執行外部腳本(使用rman參數cmdfile)
[oracle@lf ~]$ vi rman.sh
show all;[oracle@lf ~]$ rman target / cmdfile=rman.sh ---不指定catalog/nocatalog,默認連接為nocatalog
? ? ? ? ? ?
八、rman的Data Recovery Advisor(DRA,數據恢復顧問):
? ? 11g推出Data Recovery Advisor(DRA),DRA是和Oracle經典備份還原工具RMAN綁定使用的。提供了一個自動診斷、修復數據庫的選擇,是Oracle的一個內置(Build-In)工具,用于進行數據錯誤、損壞的報告和修復建議。如DRA能夠自動發現當前存在壞塊,并且查看備份資料庫(RMAN)給出修復建議和語句。
? ? DRA可以做到“一鍵式”的恢復,敲一個修復命令,就自動執行修復腳本,將錯誤解除。DRA是自動在后臺進行數據庫狀態檢查和數據收集,一旦發現錯誤,就會自動的進行修復建議的提示。
? ? 目前 DRA 可以支持 User界面和命令行兩種方式工作,OEM與命令行,11g不支持RAC只支持單機,報RMAN-05533: LIST FAILURE is not supported on RAC database
? ? ? ??
DRA目前可以在兩種方式下進行工作:
(1)一個是數據庫啟動障礙,比如啟動過程報錯。
(2)另一個是運行過程障礙,例如運行中數據庫異常損壞(如數據文件被后臺刪除)。
? ? ? ? ? ??
常用DRA命令:
list failure all(list failure all detail;); ---查看錯誤列表
advise failure; ---給出修復故障的建議(腳本的形式,手動執行)
repair failure; ---自動執行腳本,修復故障
change failure all closed; ---處理完成但DRA還有錯誤信息,通過命令關閉信息
? ? ? ? ? ? ??
案例一:單機環境使用DRA修復數據庫啟動故障之控制文件丟失(11g rac不支持。在進行案例之前需要先進行備份)
(1)控制文件被誤刪
[oracle@lf orcl]$ rm -rf control.ctl SYS@orcl> startup ---告警日志提示控制文件丟失
(2)通過DRA自動恢復控制文件
RMAN> list failure all;
RMAN> advise failure; ---給出修復故障的建議(腳本的形式,手動執行)analyzing automatic repair options; this may take some time allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=17 device type=DISK RMAN-06495: must explicitly specify DBID with SET DBID command analyzing automatic repair options completeNot all specified failures can currently be repaired. The following failures must be repaired before advise for others can be given.Failure ID Priority Status Time Detected Summary 失敗ID 優先級 發現時間 總結 ---------- ---------------- ---------------- ----------- 3702 CRITICAL OPEN 06-SEP-20 Control file /oracle/app/oracle/oradata/orcl/control.ctl is missingMandatory Manual Actions ---強制手動操作建議 ======================== no manual actions availableOptional Manual Actions ---可選手動操作建議 ======================= no manual actions availableAutomated Repair Options ---自動修復選項 ======================== Option Repair Description 選擇修復描述 ------ ------------------ 1 Use a multiplexed copy to restore control file /oracle/app/oracle/oradata/orcl/control.ctl Strategy: The repair includes complete media recovery with no data lossRepair script: /oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1324809895.hm ---修復腳本,通過rman的DRA給出腳本來自動修復
(3)查看DBR修復腳本并執行
[oracle@lf orcl]$ more /oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1324809895.hm
RMAN> restore controlfile from '/oracle/app/oracle/oradata/orcl/control02.ctl';sql 'alter database mount';
? ? ? ? ? ? ?
案例二:單機環境使用DRA修復數據庫啟動故障之數據文件丟失(11g rac不支持。在進行案例之前需要先進行備份)
(1)數據文件被誤刪
[oracle@lf orcl]$ rm -rf users.294.1048669455 SYS@orcl> startup ---告警日志提示不能打開users數據文件
(2)通過DRA自動恢復數據文件缺失
RMAN> list failure all;
RMAN> advise failure; ---給出修復故障的建議(腳本的形式)analyzing automatic repair options; this may take some time allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=18 device type=DISK analyzing automatic repair options completeMandatory Manual Actions ======================== no manual actions availableOptional Manual Actions ======================= 1. If file /oracle/app/oracle/oradata/orcl/users.294.1048669455 was unintentionally renamed or moved, restore it 2. If you restored the wrong version of data file /oracle/app/oracle/oradata/orcl/users.294.1048669455, then replace it with the correct oneAutomated Repair Options ======================== Option Repair Description ------ ------------------ 1 Restore and recover datafile 4 Strategy: The repair includes complete media recovery with no data lossRepair script: /oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2099725888.hm
(3)自動執行DRA給出的修復腳本
RMAN> repair failure; ---自動執行腳本,修復故障
? ? ? ? ? ? ? ? ? ??
2、catalog數據庫
? ? 上述提到了rman那么就不得不提catalog數據庫。大家知道RMAN(Recovery Manager)是用于備份、恢復和管理數據庫的工具。而RMAN的catalog是一個邏輯概念,用于存儲與RMAN備份、恢復和保管相關的元數據。
? ? 分為nocatalog和catalog。Catalog可以包含業務生產的所有實例的備份信息,nocatalog(利用控制文件實現)只能包含當前實例的備份信息
nocatalog:
? ? 使用control file作為catalog,每次備份都要往控制文件里面存放備份信息,控制文件里面會有越來越多的備份信息。當使用rman nocatalog方式備份時,備份controlfile是非常重要的。建議將參數文件中的control_file_record_keep_time值加大(缺省為7天) ,參數在$oracle_home/dbs/initsid.ora中。超過這個期限就會刪除備份信息,這樣對數據庫還原恢復有影響。
SYS@orcl> show parameter control NAME TYPE VALUE --------------------------------- ------------ --------------- control_file_record_keep_time integer 7 ---控制文件里保存rman備份信息的保存時間,到規定時間就自動清除以前的備份信息。默認7天 control_files string /oracle/app/oradata/orcl/control01.ctl control_management_pack_access string DIAGNOSTIC+TUNINGsql> alter system set control_file_record_keep_time=14 scope=both;
? ? ? ??
catalog:
? ? catalog恢復目錄存儲的是與rman備份有關的元數據。在某種意義上,恢復目錄可以看做是保存rman備份和恢復所需的相關信息的副本。可以在數據庫中在用戶模式下創建恢復目錄,這個恢復目錄僅僅是一些數據包,表,索引和視圖。rman中的再同步命令會使得目標數據庫控制文件中的內容刷新這些表中的數據。當然,區別在于恢復目錄可以包含企業中所有數據庫的信息,而控制文件只包含關于它自己的數據庫的信息。備份信息永久保存在catalog數據庫中,并且支持多個數據庫
? ? ? ? ? ? ? ? ??
一、ncatalog和catalog的恢復
? ? 當使用rman nocatalog恢復時,數據庫必須是處于mount狀態的。而oracle startup mount的前提條件是control必須存在。因此,你必須在恢復datafile之前先恢復controlfile。
? ? 使用rman catalog方式時,可以startup nomount然后restore controlfile;但使用rman nocatalog 時,必須先用文件方式恢復controlfile(以下的恢復都是在 online 狀態下的備份):
rman nocatalog恢復過程:
? ? 1) 建立 oracle 運行環境(包括 init 或 sp 文件)
? ? 2) 文件方式恢復 controlfile 到 init 文件指定的位置
? ? 3) startup mount
? ? 4) rman,恢復 datafile
? ? 5) alter database open resetlogs 。可以看出,rman nocatalog備份時,必須用文件方式備份 controlfile。
? ? ? ? ? ?
rman catalog恢復過程:
? ? 1) 建立 oracle 運行環境(包括 init 或 sp 文件)1
? ? 2) rman ,restore controfile
? ? 3) alter database mount
? ? 4) rman, restore datafile
? ? 5) alter database open resetlogs
? ? ? ? ?
二、升級的問題?
如果數據庫進行了大版本升級,那么catalog不會自動升級,需要手動執行升級
(1)使用catalog模式的用戶登錄,查看catalog版本
SYS@orcl> conn rman/123456 RMAN@orcl> select * from rcver;
(2)升級catalog
[oracle@lf ~]$ rman target / catalog rman/123456@rman RMAN@orcl> upgrade catalog 第一次輸入,提示恢復目錄所有者是rman,再次輸入確認升級
? ? ? ? ? ? ? ? ?
三、手工再同步恢復目錄(resync catalog)?
? ? RMAN使用恢復目錄時,它會使用在同步進程來確保恢復目錄和目標數據庫的控制文件一致。通常,Oracle在 RMAN 操作(備份和恢復)后會再同步數據庫,這樣就不必經常再同步恢復目錄。需要再同步恢復目錄的一個實例是有時使用恢復目錄,有時不使用恢復目錄,此時,可以使用 resync catalog 命令手工使 Oracle 再同步恢復目錄。
Rman>resync catalog; ---Oracle同步恢復目錄時,它首先會創建一個快照控制文件,并比較這個文件和恢復目錄。完成比較后,Oracle更新恢復目錄,是恢復目錄與數據庫控制文件同步。
? ? ? ? ? ? ? ??
四、注冊catalog信息
RMAN> register database;
? ? ? ? ? ??
五、撤消catalog注冊信息
RMAN> unregister database;
? ? ? ??
六、刪除catalog注冊信息
RMAN> drop catalog;
? ? ? ? ? ? ? ? ??
案例一:創建catalog恢復目錄(在多實例備份時使用)
(1)創建 catalog 所需要的表空間(表空間的命名不能是rman,在恢復時會與rman沖突)
SYS@orcl> create tablespace rman1 datafile '/oracle/app/oradata/orcl/rman1.dbf' size 50m autoextend off; ---生產環境建議10G
(2)創建rman用戶并賦權(用戶的命名可以是rman)
SYS@orcl> create user rman identified by 123456 default tablespace rman1; SYS@orcl> grant connect,resource,recovery_catalog_owner to rman; ---connect,resource,recovery_catalog_owner都為系統自帶角色。select * from role_sys_privs where role IN ('RECOVERY_CATALOG_OWNER','RESOURCE','CONNECT');
(3)連接rman創建catalog恢復目錄,使用rman用戶登錄
[oracle@lf ~]$ rman catalog rman/123456 ---使用rman的catalog模式登錄 RMAN> create catalog tablespace rman1; ---創建catalog恢復目錄的默認表空間為rman1
(4)配置目標數據庫的tnsnames.ora
[oracle@lf admin]$ vi tnsnames.ora 除了連接描述名改為rman以為,其他與當前實例連接信息保持一致,
(5)注冊目標數據庫
[oracle@lf ~]$ rman target / catalog rman/123456@rman ---/表示環境變量里的實例和sys用戶 [oracle@lf ~]$ rman target sys/123456@orcl catalog rman/123456@rman ---遠端連接的方式 RMAN> register database; ---注冊目標的實例
(6)檢查catalog恢復目錄
RMAN> report schema; ---顯示目標實例的信息 Rman> resync catalog;
RMAN> list backup; ---查看備份信息(從control讀取信息)
? ? 關于RMAN物理備份工具的基礎理論概述就到此告一段落。對于初次接觸RMAN的小伙伴來說,這些內容可能顯得有些晦澀難懂,這是完全正常的。不過請放心,隨著后續篇章的深入學習和實踐操作的累積會逐漸感受到這些理論知識的實際價值。
? ? 正如我自己在學習過程中的體會,我第一遍接觸理論時也會覺得難以捉摸,但當我們真正將理論知識應用到實踐中,再去回顧這些理論時,會有一種“輕舟已過萬重山”的豁然開朗之感(嗯......自己平時學習理論也是第一遍確實看不明白,等把實踐部分接觸完了,再回來看理論會有再有一層深刻理解)。這種從實踐中獲得的深刻理解和領悟,將為我們解決日后可能遇到的相關故障提供有力的支持。
? ? 因此學習RMAN的過程中,不僅要深入鉆研理論知識,更要實踐,將理論知識與實際操作相結合。只有這樣才能真正掌握RMAN這一強大的物理備份工具,為數據庫的安全和穩定運行提供堅實的保障。那么我們下篇見!!!