⑴ RMAN備份策略都有哪些
建立增量備份:
如果資料庫運行於不歸檔模式下,只能在資料庫干凈關閉的情況下 ( 以 normal 、
immediate 、 transactional 方式關閉 ) 才能進行一致性的增量備份,如果資料庫運行於歸
檔模式下,那即可以在資料庫關閉狀態進行,也可以在資料庫打開狀態進行備份。再
次說明了打開歸檔模式的優勢,歸檔日誌也就是多佔些磁碟空間,可也相當於又給數
據加了層保護。建立增量備份,實質就是一個參數 incremental level=n ,在執行 backup
命令時加上即可,例如,建立一個增量級別 0 的全庫備份:
rman> backup incremental level=0 database;
再例如,建立一個增量級別 1 的 users01.dbf 數據文件備份
rman> backup incremental level=1 tablespace system
datafile 『e:\oracle\oraback\sj_data.dbf』;
註: rman 默認創建的增量備份是 differential 方式,如果要建立 cumulative 方式的增
量備份,在執行 backup 命令時顯式指定即可,例如:
rman> backup incremental level=2 cumulative database;
建立鏡像復制:
rman 中的鏡像復制實質與通過操作系統 命令備份相同,甚至連命令的格式
都相似,只不過直接應用操作系統的 命令復制數據文件時,只是文件拷貝,而rman
的 則能夠在復制的同時,驗證數據的有效性。個人認為 rman 中的鏡像復制應用
有限,而且也體現不出 rman 的優勢,所以俺也只是大致了解了概念,沒有進行過實際
操作,感興趣的朋友可以自己做做試驗,這里就不多做介紹了)
建立冗餘備份
(
rman 提供了一種更謹慎的備份策略: plexed 方式備份,其實質即是在生成備份
集的同時,向指定位置生成指定份數 ( 最大不超過 4 份 ) 的備份集復制,以避免在災難性
事故時資料庫損壞和備份丟失的情況下導致完全崩潰,提高備份可用性。 rman 中提供
了三種方式實現 plexed 方式備份:
1) 在 rman 中執行 backup 命令時顯式指定 copies 參數。例如:
rman> backup copies 3 database;
上述命令將會在全庫備份的同時,自動生成當前備份集的 2 份拷貝到默認備份目錄。
2) 在 run {}命令塊中利用 set backup copies 命令為該命令塊中所有的 backup命令設
置 plexed 方式,例如:
rman> run{
set backup copies 2;
backup device type disk format
『e:\oracle\oraback\dyk1\%u』,'e:\oracle\oraback\dyk2\%u』
tablespace users,sales;
}
上述命令將生成兩份備份集,分別存儲到 e:\oracle\oraback\dyk1 和
e:\oracle\oraback\dyk2 目錄。
3) 通過 configure ….. backup copies 命令設置預定義的備份 plexed 方式
configure … backup copies 命令格式,可以為指定設備類型設置默認備份拷貝數
量。這個配置僅適用於數據文件與歸檔重做日誌文件和備份,並且,只有在使用自動
分配的通道時才能夠使用 configure …
backup copies 命令設置的配置。例如:
rman> configure default device type to disk;
rman> configure datafile backup copies for device type disk to 2;
rman> configure archivelog backup copies for device type disk to 2;
上述命令將 disk 設置上數據文件與歸檔文件的拷備數量設置為 2 ,當再執行 backup
database 備份時,即會自動生成 2 份數據文件的備份集。
設置 rman 備份的保存策略
策略,如果資料庫非常大,並且備份執行也比較頻繁,有必要對這些備份文件的
保存制訂合理的策略。在通過 rman 創建的備份片段中,由於備份文件也是由 rman創
建和維護,所以手工刪除並不明智,並且 rman 也提供了備份保留策略,合理制訂,由
rman 自動刪除陳舊備份文件更加安全也更加方便, rman 中提供了兩種備份保留策略:
基於時間,和基於冗餘數量
為 rman 設置了備份保留策略之後, rman 會自動判斷哪些備份集或鏡像復制文件
不必再保留。這些備份文件將會被標記為 「 廢棄 (obsolete)」 ,可以通過 report obsolete
命令查看當前處於廢棄狀態的備份文件,或者通過 delete obsolete 命令刪除這些廢棄的
備份。例如:
rman> report obsolete;
rman> delete obsolete;
在執行刪除命令時有兩點需要了解:
如果被判斷為廢棄的備份是一個單獨數據文件的鏡像復制,那麼在執行 delete 命
令時將直接刪除這個鏡像復制文件;如果被判斷為廢棄的備份是一個備份集中的一部
分,則必須等到整個備份集中所有其它文件都被廢棄之後,才能刪除這個備份集。
1) 基於時間的備份保留策略。
說的簡單些,就是你希望資料庫最早能恢復到幾天前。比如將恢復時間段設置為 7,那
么 rman 所保留的備份即是可以保證你將資料庫恢復到一周內任何時刻下那些文件。設
置基於時間的備份保留策略可以通過 configure 命令,例如:
rman> configure retention policy to recovery window of n days;
註: n= 大於 0 的正整數執行該命令後, rman 將始終保留那些將資料庫恢復到 n 天前的
狀態時需要用到的備份,比如,恢復時間段被設置為 7 天,那麼各個數據文件的備
份必須滿足如下條件:
sysdate-(select checkpoint_time from v$datafile)>=7
任何不滿足上述條件的備份都將被 rman 廢棄並可通過 delete obsolete 命令刪除。
2) 基於冗餘數量的備份保留策略
基於冗餘數量實質即某個數據文件以各種形式(包括備份集和鏡像復制)存在的
備份的數量。如果某個數據文件的冗餘備份數量超出了指定數量, rman 將廢棄陳舊的
備份。同樣,基於數量的備份保留策略也是通過 configure 命令設置,例如:
rman> configure retention policy to recovery window of n days;
同上: n= 大於 0 的正整數
也可以設置不保留任何數據的策略
rman> configure retention policy to none;
備份優化
rman 中的備份優化 (backup optimization) 是指在備份過程中,如果滿足特定條件, rman
將自動跳過某些文件而不將它們包含在備份集中以節省時間和空間。通常滿足如下幾
個條件情況下,才能夠啟用備份優化的功能:
configure backup optimization 參數置為 on ;
執行的 backup database 或 backup archivelog 命令中帶有 all 或 like 參數。
分配的通道僅使用了一種設備類型,也就是沒有同時分配使用 sbt (磁帶)與 disk
(磁碟)的多個通道。
打開備份優化設置通過如下命令:
rman> configure backup optimization on;
在進行備份優化時, rman 是如何判斷要備份的文件是否需要被優化,這個演算法就
相當復雜,可能影響優化演算法的因素也非常多,假如某庫在上午 9 點被執行過一次全
庫備份,等下午 3 點再次執行全庫備份時,備份的文件沒有變動而且也已經被備份過
時,才會跳過這部分文件。所以理論上備份優化僅對於只讀表空間或 offline 表空間起
作用。當然對於已經備份過的 archivelog 文件,它也會跳過
3 )基礎補充
format 字元串替代變數,使用 format 參數時可使用的各種替換變數,如下:
%c :備份片的拷貝數 ( 從 1 開始編號 ) ;
%d :資料庫名稱;
%d :位於該月中的天數 (dd) ;
%m :位於該年中的月份 (mm) ;
%f :一個基於 dbid 唯一的名稱 , 這個格式的形式為 C-IIIIIIIIII-YYYYMMDD-QQ, 其
中 IIIIIIIIII 為該資料庫的 dbid , YYYYMMDD 為日期, QQ 是一個 1-256 的序列;
%n :資料庫名稱,並且會在右側用 x 字元進行填充,使其保持長度為 8 ;
%u :是一個由備份集編號和建立時間壓縮後組成的 8 字元名稱。利用 %u 可以為每個
備份集生成一個唯一的名稱;
%p :表示備份集中備份片段的編號,從 1 開始編號;
%u :是 %u_%p_%c 的簡寫形式,利用它可以為每一個備份片段(即磁碟文件)生成
一個唯一名稱,這是最常用的命名方式;
%s :備份集的號;
%t :備份集時間戳;
%t :年月日格式 (yyyymmdd) ; s
註:如果在 backup 命令中沒有指定 format 選項,則 rman 默認使用 %u 為備份片段命
名。
configure 配置項介紹
首先,先來查看一下當前配置,通過 show all 命令:
連接到目標資料庫 : jssweb (dbid=3391142503)
rman> show all;
正在使用目標資料庫控制文件替代恢復目錄
rman 配置參數為 :
configure retention policy to recovery window of 3 days;
configure backup optimization off; # default
configure default device type to disk; # default
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to 『e:\oracle\oraback\%f』;
configure device type disk parallelism 1; # default
configure datafile backup copies for device type disk to 1; # default
configure archivelog backup copies for device type disk to 1; # default
configure maxsetsize to unlimited; # default
configure snapshot controlfile name to 『e:\oracle\oraback\sj_data.ora』; #
default
rman>
show 命令在 rman 命令篇簡單介紹過,同時也知道後跟 #default 表示該條配置仍
然是初始的默認配置,如果想把某條更改過配置選項再置為
初始設置,用如下命令: configure … clear; 例如:
rman> configure retention policy clear;
configure retention policy to recovery window of 3 days;
上述的各項配置,在前面章節中有一些已經有所體現,以下是詳細介紹:
1)configure retention policy 配置備份保留策略
兩種保留策略設置:
基於時間:
configure retention policy to recovery window of n days;
基於冗餘數量:
configure retention policy to rendancy n;
也可以取消備份保留策略:
configure retention policy to none;
2)configure backup optimization 配置備份優化
備份優化 : 包括 off 和 on 兩個狀態
打開備份優化:
configure backup optimization on;
關閉備份優化:
configure backup optimization off;
3)configure default device type 配置 io 設備類型
rman 支持的 io 設備類型有兩種:磁碟 (disk) 和磁帶 (sbt) ,默認情況下為磁碟。
使用磁碟設備:
configure default device type to disk;
使用磁帶設置:
configure default device type to sbt;
在這里需要注意的一點是:如果 io 設備發生變化,相關配置項也需要修改。例如:
rman> configure device type disk parallelism 2;
4) configure controlfile autobackup 配置控制文件自動備份
是否自動備份,包含兩個狀態: off 和 on
打開自動備份
configure controlfile autobackup on
禁止自動備份
configure controlfile autobackup off
指定備份的控制格式和路徑。例如:
configure controlfile autobackup format for device type disk to
『e:\oracle\oraback\%f』;
在備份期間,將產生一個控制文件的快照,用於控制文件的讀一致性,這個快照可以
通過如下配置: configure snapshot controlfile name to
『e:\oracle\oraback\sj_data.ora』;
5)configure device type 設置並行備份
rman 支持並行備份與恢復,也可以在配置中指定默認的並行程度。例如:
configure device type disk parallelism 2;
指定在以後備份與恢復中,將採用並行度為 2 ,同時開啟 2 個通道進行備份與恢復,
當然也可以在 run 中指定通道來決定備份與恢復的並行程度。並行的數目決定了開啟
通道的個數。如果指定了通道配置,將採用指定的通道,如果沒有指定通道,將採用
默認通道配置。默認情況下,自動分配通道的並行度為 1 ,如果你通過設置 parallelism
設置了並行通道為 2 ,那麼在 run 塊中,它會默認使用 2 條並行通道 ; 如果在 run命令
塊中指定數個 allocate channel ,那麼 rman 在執行備份命令時會以設置的 channel 為准,
而不管 configure 中配置了多個並行通道。需要注意的是,在 backup 命令中有一個
filesperset 參數,該參數是指 rman 建立的每個備份集中所能包含的備份片段 ( 即磁碟文
件 ) 的最大數,該參數默認值為 64 ;如果在執行 backup 命令時沒有指定該參數值,那
么 rman 會僅使用第一個通道來執行備份,其它通道將處於空閑狀態。關於通道數與
filesperset 值之間也有一個大小關系,即 filesperset 值不要小於設定通道數。
6) 設置備份文件冗餘度
configure datafile backup copies
如下:
rman> run{
set backup copies 2;
backup device type disk format
『e:\oracle\oraback\dyk1\%u』,'e:\oracle\oraback\dyk2\%u』
tablespace users,sales;
}
7)configure maxsetsize 配置備份集的最大尺寸
該配置限制通道上備份集的最大尺寸。單位支持 bytes,k,m,g 。默認值是 unlimited。
8) rman 備份相關的動態性能表
v$archived_log :本視圖包含了所有歸檔重做日誌文件的創建情況,備份情況以及其
他信息。
v$backup_corruption :這個視圖顯示了 rman 在哪些備份集中發現了損壞的數據壞。
在你使用 backup validate 命令對備份集進行檢查時如果發現了損壞的數據塊, rman
將在這個視圖中寫入記錄。
v$_corruptio :本視圖顯示了哪些鏡像復制備份文件已經被損壞。
v$backup_datafile :本視圖通常用來獲取每個數據文件中非空白數據塊的數量,從
而幫助你創建出大小基本相等的備份集。另外,在視圖中也包含了數據文件中損壞的
數據塊的信息。
v$backup_redolog :本視圖顯示了在現有的備份集中飲食有哪些歸檔重做日誌文件。
v$backup_set :本視圖顯示了已經創建的備份集的信息。
v$backup_piect :本視圖顯示了已經創建的備份片段的信息。
可以通過如下 sql 語句獲得正在進行的鏡像復制操作的狀態信息:
select sid,
serial#,
context,
sofar,
totalwork,
round(sofar / totalwork * 100, 2) 「% complete」
from v$session_longops
where opname like 『rman:%』
and opname not like 『rman:aggregate%』
通過如下 sql 獲得 rman 用來完成備份操作的服務進程的 sid 與 spid 信息:
select sid,spid,client_info from v$process p,v$session s where p.addr=s.paddr and
client_info like 『%id=rman%』
rman 通道
上次基礎知識講提到了通道, rman 通道實質是一個到存儲設備的數據流。就像城市交
通道路,多建幾個環路對於緩解交通是有意義的。在 rman 中可以通過手動方式或自動
方式分配通道。
1) 手工分配通道
在執行 backup 、 restore 、 delete 等需要進行磁碟 i/o 操作的命令時,可以將它們與 allocate
channel 命令放在一個 run 的命令塊中,利用 allocate channel 為它們分配通道。例如:
run{
allocate channel ch1 device type disk format 『e:\oracle\oraback\%u』;
backup datafile 『e:\oracle\oradata\oradb1\sj_data.ora』;
}
需要注意的是, rman 中執行的每一條 backup 、 delete 等命令都至少要求使用一個通道,
通道數決定了這些操作執行的並行度。
⑵ 在ORACLE里什麼是RMAN命令,它有什麼作用備份
3. 恢復目錄
3.1.恢復目錄的概念
恢復目錄是由RMAN使用、維護的用來放置備份信息的倉庫。RMAN利用恢復目錄記載的信息去判斷如何執行需要的備份恢復操作。
恢復目錄可以存在於ORACLE資料庫的計劃中。
雖然恢復目錄可以用來備份多個資料庫,建議為恢復目錄資料庫創建一個單獨的資料庫。
恢復目錄資料庫不能使用恢復目錄備份自身。
3.2.建立恢復目錄
第一步,在目錄資料庫中創建恢復目錄所用表空間:
SQL> create tablespace rman_ts datafile 'd:\oracle\oradata\rman\rman_ts.dbf' size 20M;
表空間已創建。
第二步,在目錄資料庫中創建RMAN 用戶並授權:
SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;
用戶已創建。
SQL> grant recovery_catalog_owner to rman ;
授權成功。
SQL> grant connect, resource to rman ;
授權成功。
第三步,在目錄資料庫中創建恢復目錄
C:\>rman catalog rman/rman
恢復管理器:版本8.1.6.0.0 - Proction
RMAN-06008:連接到恢復目錄資料庫
RMAN-06428:未安裝恢復目錄
RMAN>create catalog tablespace rman_ts;
RMAN-06431:恢復目錄已創建
注意:雖然使用RMAN不一定必需恢復目錄,但是推薦使用。因為恢復目錄記載的信息大部分可以通過控制文件來記載,RMAN在恢復資料庫時使用這些信息。不使用恢復目錄將會對備份恢復操作有限制。
3.3.使用恢復目錄的優勢
可以存儲腳本;
記載較長時間的備份恢復操作;
4. 啟動RMAN
RMAN為互動式命令行處理界面,也可以從企業管理器中運行。
為了使用下面的實例,先檢查環境符合:
the target database is called "his" and has the same TNS alias
user rman has been granted "recovery_catalog_owner "privileges
目標資料庫的連接用戶為internal帳號,或者以其他SYSDBA類型帳號連接
the recovery catalog database is called "rman" and has the same TNS alias
the schema containing the recovery catalog is "rman" (same password)
在使用RMAN前,設置NLS_DATE_FORMAT 和NLS_LANG環境變數,很多RMAN LIST命令的輸出結果是與日期時間相關的,這點在用戶希望執行以時間為基準的恢復工作也很重要。
下例是環境變數的示範:
NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS
為了保證RMAN使用時能連接恢復目錄,恢復目錄資料庫必須打開,目標資料庫至少要STARTED(unmount),否則RMAN會返回一個錯誤,目標資料庫必須置於歸檔模式下。
4.1.使用不帶恢復目錄的RMAN
設置目標資料庫的 ORACLE_SID ,執行:
% rman nocatalog
RMAN> connect target
RMAN> connect target internal/<password>@his
4.2.使用帶恢復目錄的RMAN
% rman rman_ts rman/rman@rman
RMAN> connect target
% rman rman_ts rman/rman@rman target internal/<password>@his
4.3.使用RMAN
一旦連接到目標資料庫,可以通過交互界面或者事先存儲的腳本執行指定RMAN命令, 下面是一個使用RMAN交互界面的實例:
RMAN> resync catalog;
RMAN-03022:正在編譯命令:resync
RMAN-03023:正在執行命令:resync
RMAN-08002:正在啟動全部恢復目錄的 resync
RMAN-08004:完成全部 resync
使用腳本的實例:
RMAN> execute script alloc_1_disk;
創建或者替代存儲的腳本:
RMAN> replace script alloc_1_disk {
2> allocate channel d1 type disk;
3> }
5.注冊或者注銷目標資料庫
5.1.注冊目標資料庫
資料庫狀態:
恢復目錄狀態:打開
目標資料庫:載入或者打開
目標資料庫在第一次使用RMAN之前必須在恢復目錄中注冊:
第一步,啟動恢復管理器,並且連接目標資料庫:
C:\>rman target internal/oracle@his catalog rman/rman@rman
恢復管理器:版本8.1.6.0.0 - Proction
RMAN-06005:連接到目標資料庫:HIS (DBID=3021445076)
RMAN-06008:連接到恢復目錄資料庫
第二步,注冊資料庫:
RMAN> register database;
RMAN-03022:正在編譯命令:register
RMAN-03023:正在執行命令:register
RMAN-08006:注冊在恢復目錄中的資料庫
RMAN-03023:正在執行命令:full resync
RMAN-08002:正在啟動全部恢復目錄的resync
RMAN-08004:完成全部resync
5.2.注銷目標資料庫
RMAN提供了一個注銷工具,叫DBMS_RCVCAT工具包,請注意一旦注銷了該目標資料庫,就不可以使用恢復目錄中含有的備份集來恢復資料庫了。
為了能注銷資料庫,需要獲得資料庫的標識碼(DB_ID)和資料庫鍵值(DB_KEY)。其中連接目標資料庫時將會獲得DB_ID。
C:\>rman target internal/oracle@his catalog rman/rman@rman
恢復管理器:版本8.1.6.0.0 - Proction
RMAN-06005:連接到目標資料庫:HIS (DBID=3021445076)
RMAN-06008:連接到恢復目錄資料庫
其中DBID=3021445076,利用DBID=3021445076查詢資料庫鍵值碼:
連接到目標資料庫,查詢db表:
SQL> select * from db;
DB_KEY DB_ID CURR_DBINC_KEY
---------- ---------- --------------
1 3021445076 2
獲得DB_KEY=1,這樣,該目標資料庫DB_KEY=1,DBID=3021445076,利用兩個值使用DBMS_RCVCAT工具包就可以注銷資料庫:
SQL> execute dbms_rcvcat.unregisterdatabase(1,3021445076);
PL/SQL 過程已成功完成。
至此,注銷資料庫操作完成。
... ...
⑶ oracle中rman後顯示「連接到目標資料庫***<未裝載>」是怎麼回事
說明兩個資料庫處於nomount狀態。
資料庫一共有四個狀態,分別是shutdown/nomount/mount/open。
每種狀態可以執行不同的維護操作。
從shutdown到nomount通過讀取參數文件打開實例(分配內存、啟動進程),
從nomount到mount狀態打開控制文件,
從mount到open打開數據文件和日誌文件。
附件添加一篇我寫的學習文檔。內容是oracle資料庫的啟動和關閉詳解。
希望能幫到你。
⑷ 請解釋下Oracle里邏輯備份、物理備份、Rman備份的區別。教科書和百度上的解釋不是很懂,謝謝。
Oracle資料庫的邏輯備份
ORACLE資料庫有兩類備份方法。第一類為物理備份,該方法實現資料庫的完整恢復,但資料庫必須運行在歸擋模式下(業務資料庫在非歸擋模式下運行),且需要極大的外部存儲設備,例如磁帶庫;第二類備份方式為邏輯備份,業務資料庫採用此種方式,此方法不需要資料庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存儲設備。資料庫邏輯備份方法ORACLE資料庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。
表模式
備份某個用戶模式下指定的對象(表)。業務資料庫通常採用這種備份方式。若備份到本地文件,使用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_csd_yyyymmdd.dmp
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
若直接備份到磁帶設備,使用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
註:在磁碟空間允許的情況下,應先備份到本地伺服器,然後再拷貝到磁帶。出於速度方面的考慮,盡量不要直接備份到磁帶設備。
用戶模式
備份某個用戶模式下的所有對象。業務資料庫通常採用這種備份方式。 若備份到本地文件,使用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_yyyymmdd.dmp
log=exp_icdmain_yyyymmdd.log
若直接備份到磁帶設備,使用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_yyyymmdd.log
註:如果磁碟有空間,建議備份到磁碟,然後再拷貝到磁帶。如果資料庫數據量較小,可採用這種辦法備份。
完全模式
備份完整的資料庫。業務資料庫不採用這種備份方式。備份命令為:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y
file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
對於資料庫備份,建議採用增量備份,即只備份上一次備份以來更改的數據。增量備份命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y inctype=incremental
file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
註:關於增量備份必須滿足下列條件:
1. 只對完整資料庫備份有效,且第一次需要full=y參數,以後需要inctype=incremental參數。
2. 用戶必須有EXP_FULL_DATABASE的系統角色。
3. 話務量較小時方可採用資料庫備份。
4. 如果磁碟有空間,建議備份到磁碟,然後再備份到磁帶。
業務資料庫備份方法及周期用EXP進行備份前,先在SYS用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則不要執行這個腳本)。
沒有特殊說明,不允許在客戶端執行備份命令。
備份命令參照表模式下的備份命令。
RMAN備份原理
在之前,看了用戶管理的備份恢復管理,通過以SCN為線索貫穿整個過程,來熟悉了備份原理。
RMAN的備份過程和用戶備份恢復管理有很大的區別,很多朋友了都沒有理清楚原理
下面的是我的理解:
RMAN備份數據塊的工作原理:
原理:RMAN基於備份演算法規則來編譯要備份的數據文件列表。基於通道數和同時備份的數據文件數,RMAN在ORACEL共享內存段中
創建一些內存緩沖區一般是在PGA中不過有時候內存緩沖區會被推入SGA。通道服務進程隨後就開始讀取數據文件,並在RMAN緩沖取
中填充這些數據塊。一個緩沖區被填滿時,輸入緩沖區的數據就會推出到輸出緩沖區。數據文件中的數據塊都會都會發生這種
memery—to—monery write 的過程,如果數據塊符合備份的標准,並且memery—to—monery write操作沒有檢查到
數據corruption則該數據塊會被保存到輸出數據緩沖區中,直到輸出緩沖區被填滿。一但輸出緩沖區被填滿,輸出緩沖區的內容就會被
推到備份位置(磁碟或者磁帶)
RMAN備份資料庫過程:
RMAN發出備份全庫命令後,RMAN生成到目標資料庫的bequeath連接,也就是說會檢查ORACLA_SID變數中的實例名,並在該在實
例上產生一個伺服器進程,然後作為sysdba登陸,然後會產生一個作為備份的通道,(在PGA或者是在SGA分配存儲)。隨後RMAN調用
SYS.DBMS_RCVMAN請求資料庫結構信息,包括控制文件的信息(當前序列號,創建時間……)由於指定了備份全庫,所以RMAN會請求
資料庫中數據文件信息,並判斷是否存在offline數據文件(包括所在的位置和工作方式)。
RMAN開始備份,為了保持數據一致性RMAN必須構建控制文件快照,接下來RMAN調用DBMS _BACKUP_RESTORE數據包,該調用
可以創建備份片。RMAN擁有文件列表,所以它為數據文件讀取操作分配內存緩沖區,分配緩沖區後RMAN初始化備份片。一旦初始化了備份片,
RMAN會判斷是否使用了伺服器參數文件,如果使用了則會做為備份的一部分,還要備份控制文件,之後才開始備份數據文件,並將其推至內存。
為了實現這一功能,通道進程在磁碟上執行預讀取操作,並且將多個數據文件讀入內存中,RMAN會判斷數據塊頭信息是否仍然為零,如果數據塊
沒有被使用過,就不會發生到輸出緩沖區的寫操作,同時會丟棄這個數據塊(這就RMAN為什麼會只備份使用過的數據的原因,也是它的優點)
RMAN還會執行檢查數據塊有沒有corruption操作。當檢查通過了就被寫入到輸出緩沖區。一旦輸出緩沖區填滿了,就被推至備份文件位置。
在備份數據塊的時候,RMAN影子進程會得到備份狀態信息。並將它傳給V$session_longops視圖。查詢它能得到信息。
當數據文件的所有數據塊都被讀入輸入緩沖區並確定了狀態之後RMAN就會通過將這個數據文件寫入備份片來結束該文件的備份操作。所有
數據文件寫入備份片之後,RMAN生成最後一個對SYS DBMS BACKUP RESTORE 數據包的調用,該調用在控制文件中寫入備份信息(包括
備份片名,啟動備份操作時的檢查點的SCN和完成備份的時間)
至此完成備份!
希望大家繼續討論RMAN備份恢復原理(RMAN功能太強大了)