您好,登錄后才能下訂單哦!
RMAN(Recovery Manager):恢復管理器
RMAN概念:
RMAN: Recovery Manager,是備份和恢復數據庫的管理工具建立備份和恢復的server process,在oracle server上做備份和恢復
具有如下特點:
1 )功能類似物理備份,但比物理備份強大 N 倍,從下面的特點可以看到;
2 )可以壓縮空塊;
3 )可以在塊水平上實現增量;
4 )可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;
5 )備份與恢復的過程可以自動管理;
6 )可以使用腳本(存在 Recovery catalog 中) ;
RMAN的組成概念:
RMAM client (RMAN客戶端)
用來操作備份與恢復的客戶端應用,可以通過網絡連接到目標數據庫;
target database(目標數據庫)
RMAN備份和恢復的數據庫,就是目標庫;你的備份和恢復的目標,就叫做目標庫
auxiliary database(輔助數據庫)
主庫的副本,一般用于測試,主庫與輔助庫的DBID不同,DB_NAME可以不同
Catalog database(恢復目錄數據庫)
存放RMAN備份的元數據信息,默認存放在控制文件中,由于控制文件中分為循壞重用記錄與非循環重用記錄,備份信息屬于循環重用記錄,會不斷被覆蓋重用,默認會保留7天,保存時間有限,可以使用恢復目錄數據庫實現RMAN備份元數據信息的長久保存。
media manager(介質管理器)
如果想要把備份文件存放到其他設備(例如帶庫)就需要介質管理器。
fast recovery area(閃回恢復區)
默認情況下,RMAN會將備份存放在閃回恢復區中。
db_recovery_file_dest
db_recovery_file_dest_size
視圖:
v$recovery_file_dest
v$recovery_area_usage
channel(通道):
RMAN工具到存儲設備的數據流叫通道。
通過這個channel,讀數據到pga,處理,并且將數據寫到輸出磁盤。
RMAN的備份策略:
(滿足RMAN備份策略而不在需要的備份屬于過時備份obsolete)
恢復時間窗:
確保存在的備份能夠將數據庫恢復到恢復時間窗口內的任意時刻。
解釋:
當前時間為14號,將恢復時間窗設置為7天,為7號-14號。
假設存在6號的備份
使用6號的備份+日志即可恢復到7天內的任一時刻,
6號之前的備份就會變為過時備份。
即使在7號與14號之間存在備份,但是不能恢復到7天內任一時刻,所以6號的備份不會變為過時備份。
RMAN> configure retention policy to recovery window of 7 days;
RMAN> configure retention policy clear;
冗余保留策略:
每個數據文件備份需要的數量。
例如:在星期1、星期2、星期3、星期4對數據文件datafile 7進行完全備份
此時數據文件datafile7 有4個完全備份。
如果在配置命令中redundancy參數值為2,那么星期一和星期二的datafile7完全備份就已經過時了。
如果星期5在進行另一個備份,那么星期三的datafile7完全備份就變得過時了。
歸檔日志刪除策略:
歸檔日志備份需要保留幾份,只有當滿足歸檔日志刪除策略的日志,才可以從磁盤上刪除。
RMAN> configure retention policy to redundancy 2;
RMAN> configure retention policy clear;
歸檔日志刪除:
backup archivelog all delete input(備份完成后刪除)
delete archivelog all(直接刪除)
RMAN> configure archivelog deletion policy to backed up 2 times to disk;
備份歸檔日志時,如果歸檔日志已經存在2個備份,那么backup archivevlog命令將跳過這些滿足數量的歸檔日志。
其他一些RMAN環境參數設置:
控制文件自動備份:
當數據庫啟動任何備份行為或數據庫物理結構發生變化,都會默認自動備份一份當前的控制文件和spfile文件;
RMAN> configure controlfile autobackup on;
RMAN> restore controlfile from autobackup;
備份設備類型:
磁帶設備 SBT
磁盤設備 DISK
Configure default device type to disk
通道設置:
自動分配通道:
Configure 命令來完成通道配置。如果沒有用手工方式為RMAN分配通道,RMAN將利用預定義的設置來為命令自動分配通道
Configure channel device type disk format ‘xxx’
可配置自動分配多個通道
手工分配通道:
allocate channel 命令進行分配通道,這個命令只能放在run命令塊中,并且它分配的通道也只作用于本run塊內的命令。
Run {
Allocate channel d1 device type disk format ‘xxx’;
Allocate channel d2 device type disk format ‘xxx’;
Backup database;
}
并行度:
通道數要與并行數相匹配,如果分配的通道數量大于已設置的并行度,RMAN僅會向與并行度匹配的通道寫入數據,并且會忽略超出并行度的其他通道。
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2 backup type to backupset;
雙工備份:
RMAN在創建備份集的時候,可以同時生成這個備份集的多個完全相同的副本,這樣可以提高備份的可靠性。如果其中一個副本損壞,RMAN還可以利用其它副本來完成數據庫修復操作。
不能把備份集雙工到快速恢復區,rman最多可以同時為備份集建立4個副本,在原備份集中的每個備份片都會被復制,每個副本有一個唯一副本編號。雙工備份僅適用于備份集,而不適用于鏡像副本。
RMAN>Configure archive|datafile backup copies for device type disk|sbt clear| to n
過時備份與過期備份的區別:
過時備份:
已經滿足RMAN備份策略而不在需要的備份,就為過時備份。
report obsolete
delete obsolete
過期備份:
當DBA在磁盤上手動刪除備份文件或者歸檔日志時,由于RMAN的備份信息以及歸檔信息記錄在控制文件中,如果手動刪除,控制文件是不知道的。
需要讓控制文件識別該文件已經被刪除。
例如手動刪除磁盤上的歸檔日志文件,
如果不進行交叉檢查,RMAN會報錯。
crosscheck archivelog all 交叉檢查
delete expired archivelog all 刪除過期的記錄
RMAN按備份類型區分:
備份集備份:默認方式,使用備份集備份生成的備份文件,只能使用RMAN工具恢復
backup as compressed backupset database 壓縮備份集
鏡像副本備份:類似于操作系統上的拷貝命令cp,就是將該數據文件復制到另一個位置,鏡像副本備份可以使用操作系統命令cp直接進行還原。
backup as copy database
備份集與備份片的概念:
備份集:邏輯概念,是備份文件的集合,一個備份集包含多個備份片。
備份片:物理概念,是物理文件
RMAN按備份方式區分:
完全備份:
只備份重建數據文件所需要的所有數據塊(出現失效事件后),
備份片會比數據文件小好多
backup as backupset full database
0級增量備份:
backup as backupset incrememtal level=0 database
0級增量備份與完全備份的區別:
0級完全備份可以使用分級增量備份。
完全備份不能使用分級增量備份。
分級增量備份:
(1)1級差異性備份
只會備份上一次1級或0級備份后被修改的數據塊。
backup as backupset incrememtal level=1 database
(2)1級累積型備份
只會備份上一次0級備份后被修改的數據塊。
backup as backupset incrememtal level=1 cumulative database
0級備份在restore部分完成
1級備份在recover部分完成
增量更新備份:
增量更新備份是實現鏡像副本備份高效的方式
利用RMAN先創建數據文件的鏡像副本,然后用RMAN創建增量備份
(僅創建執行了上次備份后已更改的數據塊備份),并將該增量備份應用于鏡像副本(而不是創建新的鏡像副本)。
步驟:
1.用指定的標簽創建數據文件的完整鏡像副本備份。
2.按照指定時間(如每天),使用與基本數據文件副本相同的標簽建立數據文件的1級差別增量備份
3.把2中建立的增量備份應用到具有相同標簽的最新備份。
塊修改跟蹤功能:
加快了增量備份效率,RMAN會自行跟蹤產生變化的數據塊,通過塊跟蹤文件找到執行上次備份后被修改的數據塊,當執行增量備份時,無需掃描所有的數據塊,僅掃描塊跟蹤文件即可,可以直接定位到變化的數據塊,并進行備份。
RMAN備份恢復操作:
參數文件備份與恢復
(靜態參數文件只能使用cp備份)
備份:
RMAN>backup spfile
查看備份信息:
RMAN>list backup of spfile
恢復:
–當恢復參數文件時,由于數據庫實例未啟動,RMAN此時會啟動一個偽實例(dummy)來進行恢復參數文件。
RMAN> startup nomount;
RMAN> restore spfile from ‘/path/to/backupspfile’;
–由于數據庫此時不是mount狀態,RMAN無法查看控制文件中記錄的備份信息,無法自動搜尋spfile的備份信息,所以需要明確指定備份的spfile文件的絕對路徑
RMAN> shutdown abort;
–關閉偽實例
控制文件備份與恢復
備份:
RMAN> backup current controlfile
查看:
RMAN> list backup of controlfile
恢復:
RMAN> restore controlfile from '/u01/app/oracle/fast_recovery_area/xxx
恢復控制文件也需要明確指定備份的控制文件的絕對路徑。
注意:
alter database open resetlogs
什么時候用resetlogs語句?
1、不完全恢復的時候
2、用備份的控制文件恢復的時候
3、DBA手動使用trace文件創建控制文件的時候
Resetlogs :
如果當前聯機重做日志可以訪問,那么將它們進行歸檔,然后刪除聯機重做日志的內容,并將日志序列號重置為1。
例如,在用resetlogs選項打開數據庫時,當前聯機重做日志序列號為1000和1001,那么數據庫將日志1000和1001進行歸檔,
最后重置聯機重做日志到序列1和2。
數據文件的備份
分為三個級別:
(1)表空間級別數據文件備份
(2)指定數據文件備份
(3)全庫備份
表空間備份與恢復:
備份
RMAN>backup tablespace users
RMAN>backup tablespace users,example
查看:
RMAN>list backup of tablespace users
恢復:
RMAN>restore tablespace users
RMAN>recover tablespace users
指定數據文件備份與恢復:
備份:
RMAN>backup datafile 1
RMAN>bacup datafile 1,2
查看:
RMAN>list backup of datafile 1,2
恢復:
RMAN>restore datafile 1
RMAN>recover datafile 1
全庫備份與恢復:
備份:
RMAN>backup database
壓縮備份集方式
RMAN>backup as compressed backupset database
查看
RMAN>list backup
恢復:
RMAN>restore database
RMAN>recover database
歸檔日志備份與恢復:
備份:
歸檔日志默認會被RMAN識別
RMAN>backup archivelog all
–在使用backup archivelog all命令進行備份時,RMAN會在備份過程中試圖進行一次日志切換。
RMAN>backup archivelog all delete input
備份歸檔日志并刪除歸檔日志
RMAN> backup archivelog from scn 1804209;
–指定備份歸檔日志的起始點
使用backup xxx plus archivelog 備份歸檔重做日志的流程:
1.執行alter system archivelog current 語句對當前的redo進行歸檔
2.執行backup archivelog all命令備份所有歸檔重做日志文件
3.執行backup命令對指定的數據文件等進行備份
4.再次執行alter system archive log current對當前的redo進行歸檔
5.對備份期間新生成的尚未備份的歸檔重做日志文件進行備份。
查看:
查看歸檔日志備份:
RMAN>list backup of archivelog all
查看當前所有的歸檔日志文件:
RMAN>list archivelog all
RMAN>list copy of archivelog all
恢復:
RMAN>restore archivelog all
RMAN>restore archivelog from scn 1804209; 指定恢復范圍
恢復歸檔日志文件到指定位置:
run
{
set archivelog destination to ‘xxxx’;
restore archivelog all;
}
不完全恢復:
RMAN> restore database;
RMAN> recover database until scn 1671928;
恢復到指定SCN號
RMAN> alter database open resetlogs;
RMAN管理與維護:
crosscheck --校驗備份文件與備份元數據信息之間的一致性;
RMAN> crosscheck backup; --校驗所有的備份
RMAN> delete expired backup; --刪除過期備份
RMAN> crosscheck archivelog all; --校驗所有的歸檔日志
丟失的備份或歸檔日志會被標識為過期
RMAN> delete expired archivelog all; --刪除所有過期狀態的歸檔日志
catalog --將備份文件信息注冊到控制文件中;
RMAN> catalog datafilecopy ‘/u01/app/backup/tbs_bmr01.dbf’;
RMAN> catalog start with ‘/u01/app/backup’;
–將某個路徑下面所有的文件都注冊到控制文件
report --報告信息;
RMAN> report schema;
–查看當前目標庫的可備份數據
RMAN> report obsolete;
–查看過時備份
RMAN> report need backup;
–查看哪些文件,沒有達到備份的保留策略
RMAN>report need backup days 7 database;
–顯示需要超過7天歸檔日志才能恢復的數據文件
RMAN>report need backup incremental 3;
顯示需要應用超過3個增量備份的文件進行恢復
RMAN>report need backup redundancy 3;
顯示要滿足基于冗余保留策略(3個備份)需要備份的對象。
RMAN>report unrecoverable
報告受不可恢復操作影響的數據文件。
(由于受到了非日志操作(nologging,如直接路徑中的insert操作)的影響而需要備份數據庫文件,即列出所有不可恢復的數據文件。)
list --列表命令:
RMAN> list backup;
–查看所有備份
RMAN> list archivelog all;
–查看歸檔日志
RMAN> list backup of archivelog all;
–查看所有備份的歸檔日志狀態
RMAN> list backupset;
–查看備份集
RMAN> list backup of tablespace tbs_bmr;
–查看指定類型的備份
RMAN> list copy;
–查看數據文件和控制文件的鏡像復制,以及歸檔日志
delete --刪除命令:
RMAN> delete archivelog all;
–刪除歸檔日志
(如果配置歸檔日志刪除策略,只能刪除滿足歸檔日志刪除策略的歸檔日志)
RMAN> delete backup;
–刪除所有備份
RMAN> delete obsolete;
–刪除過時備份
(滿足備份策略而不在需要的備份)
RMAN> delete backupset 55;
–刪除指定備份集
RMAN> delete backup;
–刪除所有備份
RMAN> delete backuppiece 55;
–刪除備份片
RMAN> delete expired backup;
–刪除過期備份
(crosscheck 交叉檢查出過期的備份)
RMAN> delete expired archivelog all;
–刪除過期狀態的歸檔日志
(crosscheck 交叉檢查出過期的歸檔日志)
RMAN>backup xxx delete input
(命令先備份文件到磁盤上,然后刪除備份過的源文件)
RMAN>delete noprompt obsolete
可以將該刪除操作設置為無須提示輸入信息。腳本時使用
備份的高級操作:
限制備份集中的文件數
filesperset 默認為64
當每次要備份的文件數超過filesperset設置的值時,RMAN將備份的文件分割到多個備份集。
假設filesperset使用默認值:
RMAN> backup as backupset (datafile 3,4,5,6,7) (datafile 8,9);
3,4,5,6,7 存儲到一個備份集
8,9存儲到一個備份集
多段備份:
section
例子:假設users表空間只有一個900MB的數據文件,并配置3個SBT通道,SBT設備并行參數設置為3,可將表空間的這個數據文件分解成文件區:
RMAN>backup section size 300M tablespace users;
3個SBT通道各備份users表空間的數據文件中的300M文件區域。
備份優化跳過指定文件:
Skip readonly 跳過只讀
Skip offline 跳過脫機文件
Skip inaccessible 跳過不可訪問的文件
手動更新備份和副本的資料庫狀態:
change
當備份無法找到或者有被遷移時,可運行change xxx unavailable命令
RMAN在restore或recover命令中不使用unavailable狀態的文件
如果后來找到丟失的文件,那么可以通過change … available命令再次更新其狀態為可用。
RMAN還原時的備份選項與優化:
1.備份選擇
RMAN優先選擇最近可用的備份。
如果備份集和鏡像副本在同一時間點,那么RMAN優先選擇鏡像副本。因為RMAN從鏡像副本還原比從備份集還原更快。
RMAN的Restore命令將在配置通道的所有設備類型上搜索備份。
2.驗證數據庫文件和備份:
驗證是指檢查數據庫文件是否有壞塊或備份集是否可以用于還原。
Validate 、 backup validate 和 restore … validate
Validate:
使用validate命令可以手動檢查數據庫文件中物理損壞或邏輯損壞和數據文件丟失,或者確定備份集是否可以用于還原。
當懷疑備份集中的一個或多個備份片丟失或已損壞時,用validate backupset命令進行驗證。該命令檢查備份集中的每個塊以確保備份可以被還原。
RMAN>validate database include current controlfile plus archivelog
如果RMAN檢查到了壞塊,就會向
v$database_block_corruption 視圖添加相關信息。
backup validate :
RMAN就像真正備份時一樣讀取整個要備份的文件,但RMAN實際上并不產生任何備份集或鏡像副本
restore … validate:
restore命令的validate選項是讓RMAN自行選擇要檢查的備份集。
只是讀取備份而不影響數據文件的使用
其他測試措施:
recover … test :試驗修復。
修復模擬,應用重寫日志的方法與正常修復一樣,但是它不會將其更改寫入磁盤并且在試驗完成后回滾其更改。
試驗修復只是在內存中進行。
預覽還原中要用的備份:
1.restore … preview
可以顯示在restore操作中要使用的每個備份的詳細信息列表,以及在restore操作完成后進行修復的目標SCN。
只是訪問資料庫查詢元數據確保他們可以還原,并不實際讀取備份文件
2.restore … validate header
該命令除了列出還原和修復所需的文件外,它還驗證備份文件頭部以確定磁盤或介質管理目錄中文件是否與RMAN資料庫中的元數據一致。
還原修復時所需的歸檔重做日志:
RMAN在執行修復操作時,根據修復的需要自動從備份中還原歸檔重做日志文件。
如果想節省在recover命令期間還原這些文件所需的時間,可以手動還原歸檔重做日志。
如果災難修復期間丟失歸檔重做日志,那么修復命令用until available redo選項來自動將數據庫修復到最后一個可用的歸檔重做日志,這個選項只能在修復整個數據庫時有用。
在修復數據庫文件、表空間不能使用。
如果要將某些數據文件還原到新位置:
使用set newname 重命名數據文件
run
{
set newname for datafile 2 to ‘xxx’;
set newname for datafile 3 to ‘xxx’;
set newname for datafile 4 to ‘xxx’;
restore database;
switch datafile all;
recover database;
}
如果RMAN在修復期間將歸檔日志還原到快速恢復區域
那么將在歸檔日志應用到數據文件后自動刪除它們。
可以使用
RMAN>recover database delete archivelog
從磁盤刪除修復不再需要的已還原的歸檔日志。
切換到鏡像副本的完全恢復:
假定數據庫丟失數據文件5,要切換到數據文件副本并進行修復操作:
RMAN>alter database datafile 5 offline
RMAN>switch datafile 5 to copy
RMAN>recover datafile 5
RMAN自動還原歸檔日志和增量備份,在應用完成后自動刪除它們
RMAN>alter database datafile 5 online
所有數據文件損壞,但存在所有數據文件的鏡像副本:
RMAN>switch database to copy
RMAN>recover database
塊介質修復:
使用recover … block命令修復數據文件的指定塊。
塊介質恢復將保留受影響的數據文件處于聯機狀態,只還原和修復損壞的塊。(在恢復期間只有實際恢復的塊不可用)
塊級數據丟失通常是由于間歇性隨機IO錯誤導致,它們不會導致大量數據丟失和內存信息損壞。
RMAN>recover datafile 8 block 13;
RMAN高級恢復技術:
1.
恢復非歸檔模式的數據庫與恢復歸檔模式的數據庫的過程類型。
兩者主要區別:一是只有一致的備份才可用于還原非歸檔模式的數據庫;
二是因為非歸檔模式的數據庫不存在歸檔重做日志,所以無法進行介質恢復,
當修復非歸檔模式數據庫時,在recover 命令中指定noredo選型以指明RMAN不會嘗試應用歸檔重做日志。否則,RMAN返回錯誤。
2
在用備份控制文件修復數據庫后,不論日志是否可用
始終需要用open resetlogs 選項打開數據庫。
執行recover database時
如果redo可用,那么RMAN可以找到它們并應用這些日志。
如果redo不可用,那么需要until子句指定修復的目標時間、SCN或日志序列號。
否則出現RMAN-7054。
在run塊中使用set until操作將限制修復到歸檔重做日志的尾部。
如果不使用set until操作限制 執行recover database讀取歸檔日志時,會一直尋找歸檔日志文件,直到無法找到下一個歸檔日志文件為止,并報告錯誤,這個錯誤不代表出問題,然后查看數據文件頭部與控制文件中記錄的SCN是否一致,如果一致則直接 open resetlogs。
如果最后創建的歸檔重做日志具有序列號N,那么指定until sequence n+1,以便RMAN應用到日志序列號N后停止。
如果使用恢復目錄數據庫,并且數據庫名稱在恢復目錄中不是唯一的,那么必須在還原控制文件之前執行SET DBID命令。
例如:
–set dbid 123456
run{
set newname for datafile 1 to ‘xxxx’
set newname for datafile 2 to ‘xxxx’
set newname for datafile 3 to ‘xxxx’
allocate channel t1 device type disk;
restore controlfile from autobackup;
alter database mount;
set until sequence 124 thread 1;
restore database;
switch datafile all;
recover database;
}
RMAN>alter database open resetlogs
查看DBID:
控制文件自動備份文件名上記錄了數據庫的DBID
RMAN連接時會顯示DBID
Select dbid from v$database
含有RMAN備份信息的數據字典:
RMAN備份作業
v $RMAN_BACKUP_JOB_DETAILS
處于備份模式中的聯機數據文件狀態(熱備份)
V $BACKUP
歸檔日志備份
v $ backup_archivelog_details
控制文件備份
v $ backup_controlfiles_details
控制文件和數據文件副本
v$ backup_copy_details
-控制文件和數據文件
v$ backup_datafile
v$ backup_datafile_details
已備份的文件
v$ backup_files
備份片文件
v$ backup_piece
v$ backup_piece_details
備份集
v$ backup_set
v$ backup_set_details
————————————————
版權聲明:本文為CSDN博主「人不忘本」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/baoyuhang0/article/details/106129267
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。