您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何通過搭建恢復目錄實現RMAN異地備份和恢復的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
一、為何需要恢復目錄
RMAN備份的存儲庫總是存在于RMAN目標數據庫的控制文件中的,這樣會有兩個問題:
1、RMAN過分依賴目標數據庫控制文件,如果控制文件的所有副本都損壞了,將導致存儲庫丟失。這種情況下即便備份是完好的,但是由于丟失了RMAN備份的元數據信息,導致RMAN無法知道他們的存在而不能使用備份。
2、位于目標數據庫控制文件中的存儲庫,只能保存和恢復由control_file_record_keep_time參數指定的數據,默認該參數是保留7天。
因此,采用恢復目錄的手段是必要的,主要體現在以下幾點:
1、采用恢復目錄則RMAN的備份不再依賴于目標數據庫控制文件。這樣即便控制文件的所有副本都損壞了,通過恢復目錄也可以很方便的使用備份。較好的做法是將恢復目錄數據庫存放在與目標數據庫不同的機器上。
2、恢復目錄可以存儲RMAN腳本。沒有恢復目錄,則腳本必須做為操作系統文件存儲在運行RMAN可執行文件的機器上。
3、恢復目錄可以存儲多個數據庫的元數據,做為多個數據庫備份和恢復信息的集中式存儲庫。并且一個目錄可用于任何平臺上的數據庫,即它的連接過程是跨平臺的。
4、使用恢復目錄還可以簡化一些操作。如恢復過程對于目標數據庫不必處于MOUNT模式,當連接到恢復目錄時,RMAN能夠自動定位SPFILE和控制文件的備份并還原它們,簡化恢復嚴重受損的數據庫的引導過程。
5、恢復目錄保存元數據的期限長度沒有限制。而基于控制文件的存儲庫保留數據的時間長度則完全由實例參數control_file_record_keep_time來確定。
恢復目錄數據庫通常不是特別龐大或繁忙的數據庫,不會有很高的資源要求,但卻能夠顯著增強RMAN功能。
RMAN可執行文件可以同時連接最多三個數據庫實例:
1、將對其應用備份或還原及恢復操作的一個目標數據庫;
2、存儲描述目標數據庫及其所有可用備份的元數據的恢復目錄數據庫;
3、使用目標數據庫的備份創建的一個輔助數據庫。
二、利用恢復目錄數據庫實現異地備份
有時我們希望將RMAN備份保存在異地,以便更好的容災,這里說明一下在Windows環境中的實現方法。
1、修改本地數據庫Oracle后臺服務
修改Oracle監聽服務和數據庫服務的登錄方式,用確定的賬戶登錄,而不是默認的本地系統賬戶。
修改后重啟這兩個服務。
2、在異地機器上創建好訪問本地目標數據庫的服務名,保證能夠正常連接
mes =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vm-ora11g-1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mes)
)
)
3、在異地機器上搭建恢復目錄數據庫,專門用于RMAN備份的元數據管理。創建恢復目錄并非必須,但為了更好的異地容災,防止本地機器遭到破壞后導致所有控制文件丟失,那么即便存在RMAN備份,也是難以使用的。
在異地機器上創建恢復目錄分為以下幾個步驟:
1)創建一個數據庫用作恢復目錄。如創建一個數據庫名為catdb。
2)創建一個存儲目錄對象的表空間
SQL> create tablespace rmancat datafile 'd:\oradata\catdb\rmancat01.dbf' size 200m;
3)創建一個默認使用存儲目錄對象表空間的用戶
SQL> create user rman identified by rman default tablespace rmancat quota unlimited on rmancat;
4)授予該用戶recovery_catalog_owner角色,它包括了必要的對象權限
SQL> grant recovery_catalog_owner to rman;
5)用RMAN連接到目錄數據庫,并使用create catalog命令創建目錄
C:\> rman catalog rman/rman@catdb
RMAN> create catalog;
6)用RMAN以SYS用戶身份連接到目標數據庫
RMAN> connect target sys/mesHz2@mes
7)在目錄中注冊目標數據庫,從而將相關信息從目標數據庫的控制文件復制到目錄中
RMAN> register database;
8)同時連接到目錄和目標數據庫進行備份和恢復操作
C:\> rman target sys/mesHz2@mes catalog rman/rman
該命令對目標數據庫和目錄數據庫所在環境的RMAN版本關系是有要求的,即RMAN可執行文件的版本必須與目標數據庫的版本相同,而創建恢復目錄的RMAN版本必須等于或高于在其中注冊的任何數據庫的版本。
4、創建異地備份腳本
RMAN連接成功后可創建常用的備份腳本,腳本將自動保存在恢復目錄數據庫中。
為達到完善的備份效果,先修改目標數據庫RMAN備份參數,對控制文件和SPFILE文件開啟自動備份
RMAN> configure controlfile autobackup on;
RMAN> configure controlfile autobackup format for device type disk to '\\vm-catdb\e\rman_bak\mes\control_bak\%F';
以下是采用并行方式的多通道備份腳本,執行增量級別0備份,自動完成對備份集的檢查和清理,手工指定備份位置到網絡機器vm-catdb的路徑上,而控制文件和SPFILE文件根據配置將自動備份
create global script bak_0 {
sql 'alter system archive log current';
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 0 as compressed backupset
database
format '\\vm-catdb\e\rman_bak\mes\d_%d_%u_%c_%T';
backup as compressed backupset
archivelog all delete all input
format '\\vm-catdb\e\rman_bak\mes\a_%d_%u_%c_%T';
delete noprompt obsolete;
release channel c1;
release channel c2;
}
以下則是對應的增量級別1備份的腳本
create global script bak_1 {
sql 'alter system archive log current';
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 1 as compressed backupset
database
format '\\vm-catdb\e\rman_bak\mes\d_%d_%u_%c_%T';
backup as compressed backupset
archivelog all delete all input
format '\\vm-catdb\e\rman_bak\mes\a_%d_%u_%c_%T';
delete noprompt obsolete;
release channel c1;
release channel c2;
}
5、執行異地備份
在恢復目錄中執行0級備份腳本來完成對目標數據庫的全備份
RMAN> run {execute script bak_0;}
再次備份時可執行1級備份腳本來完成對目標數據庫的增量備份
RMAN> run {execute script bak_1;}
三、管理恢復目錄
目錄數據庫也可以和目標數據庫是同一個數據庫。這種情況下就應當在目標數據庫中創建一個用于存放RMAN恢復元數據的恢復目錄表空間rmancat,并將管理恢復目錄的用戶rman的默認表空間指向該表空間。之后以該用戶連接到目錄數據庫,同時也就連接到了目標數據庫,因為它們是同一個庫,然后再創建目錄
create catalog tablespace rmancat;
之后再注冊數據庫
register database;
目錄數據庫與任何生產數據庫一樣,應該運行在歸檔日志模式下,定期進行完整的備份。但是不要只是使用RMAN來備份恢復目錄數據庫,因為如果目錄數據庫損壞,那么還原它的任何嘗試都會出現一個遞歸性的問題:如果包含目錄信息的控制文件或表空間受損,那么打開數據庫并作為目錄連接它的任何操作都將失敗。因此,通過其它方式保護目錄數據庫是必要的,如用戶管理的備份。
如果出于某種原因沒有連接到目錄來執行備份,那么目錄存儲庫必須與控制文件存儲庫重新同步。在RMAN下一次同時連接到目標數據庫和目錄時會自動執行同步操作,重新同步操作將所有信息從控制文件存儲庫轉移到目錄中,從而保持它是最新的。因此,只有當沒有執行重新同步的周期超過control_file_record_keep_time時才會丟失有關備份的數據。
重新同步操作也可以在RMAN提示符中使用重新同步目錄的命令來強制執行
RMAN> resync catalog;
同時連接到目標數據庫和恢復目錄,可以用以下命令從恢復目錄中注銷目標數據庫
RMAN> unregister database;
如果要刪除創建的目錄,則命令為
RMAN> drop catalog;
通過目錄數據庫提供的一些視圖,包括rc_database、rc_tablespace、 rc_datafile、rc_backup_set、rc_backup_piece等,可以查詢在恢復目錄中注冊的目標數據庫信息以及備份的信息,另外還包括一些記錄RMAN運行狀態的信息,如rc_rman_configuration等。這些視圖都是以字母rc打頭
conn rman/rman
查看恢復目錄中的RMAN配置信息
col db_unique_name for a20
col name for a50
col value for a70
select db_unique_name, name, value from rc_rman_configuration;
DB_UNIQUE_NAME NAME VALUE
-------------------- -------------------------------------------------- ----------------------------------------------------------------------
MES CONTROLFILE AUTOBACKUP ON
MES CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\rman_bak\mes\control_bak\%F'
MES CHANNEL DEVICE TYPE DISK FORMAT 'd:\rman_bak\mes\%d_%u_%c_%T'
查看恢復目錄中的數據庫信息
select dbid, name from rc_database;
DBID NAME
---------- --------------------------------------------------
2056489697 MES
查看恢復目錄中的表空間信息
col name for a20
select db_name, ts#, name, creation_time, included_in_database_backup, bigfile, temporary from rc_tablespace;
DB_NAME TS# NAME CREATION_TIME INC BIG TEM
-------- ---------- -------------------- ------------------- --- --- ---
MES 0 SYSTEM 2013-10-09 18:23:41 YES NO NO
MES 1 SYSAUX 2013-10-09 18:23:44 YES NO NO
MES 2 UNDOTBS1 2013-10-09 19:09:38 YES NO NO
MES 3 TEMP 2018-04-08 13:01:44 NO NO YES
MES 4 USERS 2013-10-09 18:23:53 YES NO NO
MES 11 FDA 2018-04-24 09:17:41 YES NO NO
MES 7 CMES 2018-04-17 21:03:01 YES NO NO
MES 8 RMES 2018-04-17 21:03:34 YES NO NO
MES 9 HMES 2018-04-17 21:04:11 YES NO NO
MES 10 INDX 2018-04-17 21:04:54 YES NO NO
MES 6 EXAMPLE 2018-04-08 13:02:46 YES NO NO
查看恢復目錄中的數據文件信息
col name for a50
select db_name, ts#, tablespace_name, file#, name, bytes/1024/1024 size_m, creation_time from rc_datafile;
DB_NAME TS# TABLESPACE_NAME FILE# NAME SIZE_M CREATION_TIME
-------- ---------- ------------------------------ ---------- -------------------------------------------------- ---------- -------------------
MES 0 SYSTEM 1 D:\ORADATA\MES\SYSTEM01.DBF 770 2013-10-09 18:23:41
MES 1 SYSAUX 2 D:\ORADATA\MES\SYSAUX01.DBF 580 2013-10-09 18:23:44
MES 2 UNDOTBS1 3 D:\ORADATA\MES\UNDOTBS01.DBF 100 2013-10-09 19:09:38
MES 4 USERS 4 D:\ORADATA\MES\USERS01.DBF 5 2013-10-09 18:23:53
MES 6 EXAMPLE 5 D:\ORADATA\MES\EXAMPLE01.DBF 331.25 2018-04-08 13:02:46
MES 7 CMES 6 D:\ORADATA\MES\CMES01.DBF 100 2018-04-17 21:03:01
MES 8 RMES 7 D:\ORADATA\MES\RMES01.DBF 100 2018-04-17 21:03:34
MES 9 HMES 8 D:\ORADATA\MES\HMES01.DBF 100 2018-04-17 21:04:11
MES 10 INDX 9 D:\ORADATA\MES\INDX01.DBF 100 2018-04-17 21:04:54
MES 11 FDA 10 D:\ORADATA\MES\FDA01.DBF 100 2018-04-24 09:17:41
查看恢復目錄中的備份集信息
select db_id, bs_key, backup_type, incremental_level, start_time, completion_time, elapsed_seconds, controlfile_included from rc_backup_set;
DB_ID BS_KEY B INCREMENTAL_LEVEL START_TIME COMPLETION_TIME ELAPSED_SECONDS CONTROL
---------- ---------- - ----------------- ------------------- ------------------- --------------- -------
2056489697 6303 D 0 2018-05-02 11:59:20 2018-05-02 11:59:32 12 NONE
2056489697 6304 D 0 2018-05-02 11:59:35 2018-05-02 11:59:36 1 BACKUP
2056489697 6305 D 0 2018-05-02 11:59:37 2018-05-02 11:59:37 0 NONE
2056489697 6306 D 0 2018-05-02 11:59:20 2018-05-02 11:59:39 19 NONE
2056489697 6343 L 2018-05-02 11:59:42 2018-05-02 11:59:42 0 NONE
2056489697 6344 L 2018-05-02 11:59:42 2018-05-02 11:59:43 1 NONE
2056489697 6345 L 2018-05-02 11:59:44 2018-05-02 11:59:44 0 NONE
2056489697 6370 D 2018-05-02 11:59:46 2018-05-02 11:59:48 2 BACKUP
查看恢復目錄中的備份片信息
col handle for a70
select db_id, bp_key, bs_key, backup_type, incremental_level, handle, tag, start_time, completion_time, elapsed_seconds, bytes, compressed from rc_backup_piece;
DB_ID BP_KEY BS_KEY B INCREMENTAL_LEVEL HANDLE TAG START_TIME COMPLETION_TIME ELAPSED_SECONDS BYTES COM
---------- ---------- ---------- - ----------------- ---------------------------------------------------------------------- -------------------------------- ------------------- ------------------- --------------- ---------- ---
2056489697 6307 6303 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6FT1SM0O_1_20180502 TAG20180502T115920 2018-05-02 11:59:22 2018-05-02 11:59:31 9 105791488 YES
2056489697 6308 6304 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6HT1SM17_1_20180502 TAG20180502T115920 2018-05-02 11:59:36 2018-05-02 11:59:36 0 1130496 YES
2056489697 6309 6305 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6IT1SM19_1_20180502 TAG20180502T115920 2018-05-02 11:59:37 2018-05-02 11:59:37 0 81920 YES
2056489697 6352 6344 L \\VM-CATDB\E\RMAN_BAK\MES\A_MES_6KT1SM1E_1_20180502 TAG20180502T115942 2018-05-02 11:59:42 2018-05-02 11:59:42 0 1102848 YES
2056489697 6310 6306 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6GT1SM0O_1_20180502 TAG20180502T115920 2018-05-02 11:59:22 2018-05-02 11:59:39 17 211460096 YES
2056489697 6351 6343 L \\VM-CATDB\E\RMAN_BAK\MES\A_MES_6JT1SM1E_1_20180502 TAG20180502T115942 2018-05-02 11:59:42 2018-05-02 11:59:42 0 376832 YES
2056489697 6353 6345 L \\VM-CATDB\E\RMAN_BAK\MES\A_MES_6LT1SM1G_1_20180502 TAG20180502T115942 2018-05-02 11:59:44 2018-05-02 11:59:44 0 8704 YES
2056489697 6372 6370 D \\VM-CATDB\E\RMAN_BAK\MES\CONTROL_BAK\C_MES_6MT1SM1I_1_20180502 TAG20180502T115946 2018-05-02 11:59:47 2018-05-02 11:59:48 1 10141696 NO
四、使用恢復目錄存儲RMAN腳本
RMAN腳本可以作為操作系統文件來存儲,如以下是腳本文件e:\script1.rman內容
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 1 as compressed backupset
database plus archivelog delete all input;
release channel c1;
release channel c2;
}
執行腳本時,用RMAN連接到目標數據庫和恢復目錄,并用@符連接和執行
C:\> rman target / catalog rman/rman@catdb @e:\script1.rman
也可以直接把腳本存儲在恢復目錄中。以下一些命令是關于腳本的,注意這些命令必須同時連接到目標數據庫和目錄數據庫才能使用,腳本創建同時會進行語法有效性檢查。默認情況下,腳本是目標數據庫特有的,使用關鍵字global表示腳本對于所有目標數據庫都可見,否則同樣的腳本需要分別連接到每個目標數據庫去創建它。
創建腳本
create { global } script
替換腳本
replace { global } script
運行腳本
execute { global } script
顯示腳本
print { global } script
列出腳本
list { global } script names
刪除腳本
delete { global } script
可以使用如下的命令將作為操作系統文件存儲的RMAN腳本保存為目錄數據庫中的腳本
RMAN> create script script1 from file 'e:\script1.rman';
沒有直接編輯腳本的命令,但是可以通過查詢視圖rc_stored_script和rc_stored_script_line來查看存儲的腳本,并可用DML來編輯它們。為方便編輯,也可以將腳本轉出為操作系統文件
RMAN> print script script1 to file 'e:\script1.rman';
通過視圖rc_stored_script和rc_stored_script_line來查詢存儲的腳本,需要時可以直接通過DML操作來編輯
col script_name for a30
col script_comment for a30
select * from rc_stored_script;
DB_KEY DB_NAME SCRIPT_NAME SCRIPT_COMMENT
---------- -------- ------------------------------ ------------------------------
GLOBAL bak_1
1 MES script1
GLOBAL bak_0
col script_name for a30
col text for a80
select * from rc_stored_script_line where script_name = 'script1';
DB_KEY SCRIPT_NAME LINE TEXT
---------- ------------------------------ ---------- --------------------------------------------------------------------------------
1 script1 1 run {
1 script1 2 allocate channel c1 type disk;
1 script1 3 allocate channel c2 type disk;
1 script1 4 backup incremental level 1 as compressed backupset
1 script1 5 database plus archivelog delete all input;
1 script1 6 release channel c1;
1 script1 7 release channel c2;
1 script1 8 }
最后可以在恢復目錄中執行存儲的腳本,目錄首先會自動執行一次與目標數據庫的同步,然后再開始執行備份
RMAN> run {execute script script1;}
五、數據庫破壞恢復實驗
這里模擬一個故障處理的過程,假定目標數據庫的參數文件和控制文件都已損壞,數據文件也部分損壞。并且恢復目錄數據庫因故障無法啟動,雖然備份存在于恢復目錄數據庫服務器的磁盤上,但RMAN此時無法直接找到這些備份,這種情況看如何能將系統恢復。
實驗前的工作:
1、在恢復目錄機器上用RMAN連接到目標數據庫和恢復目錄數據庫,并確認備份完整
C:\Users\Administrator>rman target sys/mesHz2@mes catalog rman/rman
RMAN> resync catalog;
RMAN> list backup;
如果目標數據庫沒有備份,則實驗前先做一次完整的備份。
2、將恢復目錄數據庫關閉,模擬恢復目錄不可用。
shutdown immediate;
3、用shutdown abort直接關閉目標數據庫,刪除參數文件SPFILE、PFILE、控制文件的所有副本、數據文件cmes01.dbf。
恢復實驗:
1、在恢復目錄數據庫服務器上用RMAN命令連接到目標數據庫,并啟動到nomount,RMAN將使用一個啞參數文件來啟動實例
C:\Users\Administrator>rman target sys/mesHz2@mes
恢復管理器: Release 11.2.0.4.0 - Production on 星期三 5月 2 22:54:27 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已連接到目標數據庫 (未啟動)
RMAN> startup nomount
啟動失敗: ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITMES.ORA'
在沒有參數文件的情況下啟動 Oracle 實例以檢索 spfile
Oracle 實例已啟動
系統全局區域總計 1068937216 字節
Fixed Size 2288080 字節
Variable Size 285214256 字節
Database Buffers 775946240 字節
Redo Buffers 5488640 字節
2、因為知道磁盤備份的所在位置,因此可以手動指定備份路徑給RMAN。首先恢復參數文件,然后使用恢復的SPFILE重啟實例,再還原控制文件
RMAN> restore spfile from '\\vm-catdb\e\rman_bak\mes\control_bak\C-2056489697-20180502-06';
啟動 restore 于 2018-05-02 22:56:06
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=396 設備類型=DISK
通道 ORA_DISK_1: 正在從 AUTOBACKUP \\vm-catdb\e\rman_bak\mes\control_bak\C-2056489697-20180502-06 還原 spfile
通道 ORA_DISK_1: 從 AUTOBACKUP 還原 SPFILE 已完成
完成 restore 于 2018-05-02 22:56:10
RMAN> shutdown abort
Oracle 實例已關閉
RMAN> startup nomount
已連接到目標數據庫 (未啟動)
Oracle 實例已啟動
系統全局區域總計 1286066176 字節
Fixed Size 2280896 字節
Variable Size 771752512 字節
Database Buffers 503316480 字節
Redo Buffers 8716288 字節
RMAN> restore controlfile from '\\vm-catdb\e\rman_bak\mes\control_bak\C-2056489697-20180502-06';
啟動 restore 于 2018-05-02 22:59:05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156 設備類型=DISK
通道 ORA_DISK_1: 正在還原控制文件
通道 ORA_DISK_1: 還原完成, 用時: 00:00:02
輸出文件名=D:\ORADATA\MES\CONTROL01.CTL
輸出文件名=E:\FAST_RECOVERY_AREA\MES\CONTROL02.CTL
完成 restore 于 2018-05-02 22:59:08
3、用恢復的控制文件重啟實例到mount狀態,根據已知的備份集存儲位置,重新在存儲庫中編目和注冊備份文件
RMAN> shutdown abort
Oracle 實例已關閉
RMAN> startup mount
已連接到目標數據庫 (未啟動)
Oracle 實例已啟動
數據庫已裝載
系統全局區域總計 1286066176 字節
Fixed Size 2280896 字節
Variable Size 771752512 字節
Database Buffers 503316480 字節
Redo Buffers 8716288 字節
為保證恢復成功,先更改RMAN備份文件所在路徑,再用crosscheck backup命令做交叉檢查,確認備份狀態為expired已失效,再用delete expired命令將備份登記刪除,當然這個只是刪除了備份記錄,而磁盤上的備份文件不會被刪掉
RMAN> crosscheck backup;
啟動 implicit crosscheck backup 于 2018-05-02 23:01:55
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=189 設備類型=DISK
已交叉檢驗的 5 對象
完成 implicit crosscheck backup 于 2018-05-02 23:01:57
啟動 implicit crosscheck copy 于 2018-05-02 23:01:57
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 2018-05-02 23:01:57
搜索恢復區中的所有文件
正在編制文件目錄...
目錄編制完畢
已列入目錄的文件的列表
=======================
文件名: E:\FAST_RECOVERY_AREA\MES\archivelog\ARC_7A938AE1_1_975085062_5.LOG
使用通道 ORA_DISK_1
交叉校驗備份片段: 找到為 'EXPIRED'
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502 RECID=224 STAMP=975087154
交叉校驗備份片段: 找到為 'EXPIRED'
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502 RECID=225 STAMP=975087154
交叉校驗備份片段: 找到為 'EXPIRED'
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7QT1T9IE_1_20180502 RECID=226 STAMP=975087182
交叉校驗備份片段: 找到為 'EXPIRED'
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7PT1T9IE_1_20180502 RECID=227 STAMP=975087182
交叉校驗備份片段: 找到為 'EXPIRED'
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7RT1T9IF_1_20180502 RECID=228 STAMP=975087183
已交叉檢驗的 5 對象
RMAN> delete expired backup;
使用通道 ORA_DISK_1
備份片段列表
BP 關鍵字 BS 關鍵字 Pc# Cp# 狀態 設備類型段名稱
------- ------- --- --- ----------- ----------- ----------
224 224 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502
225 225 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502
226 226 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\A_MES_7QT1T9IE_1_20180502
227 227 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\A_MES_7PT1T9IE_1_20180502
228 228 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\A_MES_7RT1T9IF_1_20180502
是否確定要刪除以上對象 (輸入 YES 或 NO)? y
已刪除備份片段
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502 RECID=224 STAMP=975087154
已刪除備份片段
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502 RECID=225 STAMP=975087154
已刪除備份片段
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7QT1T9IE_1_20180502 RECID=226 STAMP=975087182
已刪除備份片段
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7PT1T9IE_1_20180502 RECID=227 STAMP=975087182
已刪除備份片段
備份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7RT1T9IF_1_20180502 RECID=228 STAMP=975087183
5 EXPIRED 對象已刪除
RMAN> list backup;
說明與資料檔案庫中的任何備份都不匹配
現在再把剛才備份的路徑改回,表示備份已經拿來,然后重新編目和注冊備份,讓RMAN知道備份的存在
RMAN> catalog start with '\\vm-catdb\e\rman_bak\mes';
搜索與樣式 \\vm-catdb\e\rman_bak\mes 匹配的所有文件
數據庫未知文件的列表
=====================================
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7PT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7QT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7RT1T9IF_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\control_bak\C-2056489697-20180502-06
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7NT1T9HG_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7OT1T9HG_1_20180502
是否確實要將上述文件列入目錄 (輸入 YES 或 NO)? y
正在編制文件目錄...
目錄編制完畢
已列入目錄的文件的列表
=======================
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7PT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7QT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7RT1T9IF_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\control_bak\C-2056489697-20180502-06
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7NT1T9HG_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7OT1T9HG_1_20180502
4、執行數據庫還原
RMAN> restore database;
啟動 restore 于 2018-05-02 23:05:55
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始還原數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_DISK_1: 將數據文件 00001 還原到 D:\ORADATA\MES\SYSTEM01.DBF
通道 ORA_DISK_1: 將數據文件 00003 還原到 D:\ORADATA\MES\UNDOTBS01.DBF
通道 ORA_DISK_1: 將數據文件 00004 還原到 D:\ORADATA\MES\USERS01.DBF
通道 ORA_DISK_1: 將數據文件 00006 還原到 D:\ORADATA\MES\CMES01.DBF
通道 ORA_DISK_1: 將數據文件 00008 還原到 D:\ORADATA\MES\HMES01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502
通道 ORA_DISK_1: 段句柄 = \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502 標記 = TAG20180502T173232
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:36
通道 ORA_DISK_1: 正在開始還原數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_DISK_1: 將數據文件 00002 還原到 D:\ORADATA\MES\SYSAUX01.DBF
通道 ORA_DISK_1: 將數據文件 00005 還原到 D:\ORADATA\MES\EXAMPLE01.DBF
通道 ORA_DISK_1: 將數據文件 00007 還原到 D:\ORADATA\MES\RMES01.DBF
通道 ORA_DISK_1: 將數據文件 00009 還原到 D:\ORADATA\MES\INDX01.DBF
通道 ORA_DISK_1: 將數據文件 00010 還原到 D:\ORADATA\MES\FDA01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502
通道 ORA_DISK_1: 段句柄 = \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502 標記 = TAG20180502T173232
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:26
完成 restore 于 2018-05-02 23:06:57
5、為了確保數據庫的完全恢復,可能還需要利用歸檔日志,因此需將歸檔日志編目。
首先查看RMAN存儲庫中關于歸檔日志的記錄,這里顯示沒有記錄
RMAN> list archivelog all;
說明與資料檔案庫中的任何歸檔日志都不匹配
重新編目
RMAN> catalog start with 'E:\fast_recovery_area\mes\archivelog';
搜索與樣式 E:\fast_recovery_area\mes\archivelog 匹配的所有文件
數據庫未知文件的列表
=====================================
文件名: E:\FAST_RECOVERY_AREA\MES\archivelog\ARC_7A938AE1_1_975085062_5.LOG
是否確實要將上述文件列入目錄 (輸入 YES 或 NO)? y
正在編制文件目錄...
目錄編制完畢
已列入目錄的文件的列表
=======================
文件名: E:\FAST_RECOVERY_AREA\MES\archivelog\ARC_7A938AE1_1_975085062_5.LOG
RMAN> list archivelog all;
db_unique_name 為 MES 的數據庫的歸檔日志副本列表
=====================================================================
關鍵字 線程序列 S 時間下限
------- ---- ------- - -------------------
6 1 5 A 2018-05-02 17:32:59
名稱: E:\FAST_RECOVERY_AREA\MES\ARCHIVELOG\ARC_7A938AE1_1_975085062_5.LOG
6、執行數據庫的完全恢復
RMAN> recover database;
啟動 recover 于 2018-05-02 23:22:30
使用通道 ORA_DISK_1
正在開始介質的恢復
線程 1 序列 4 的歸檔日志已作為文件 D:\ORADATA\MES\REDO01.LOG 存在于磁盤上
線程 1 序列 5 的歸檔日志已作為文件 D:\ORADATA\MES\REDO02.LOG 存在于磁盤上
線程 1 序列 6 的歸檔日志已作為文件 D:\ORADATA\MES\REDO03.LOG 存在于磁盤上
歸檔日志文件名=D:\ORADATA\MES\REDO01.LOG 線程=1 序列=4
歸檔日志文件名=D:\ORADATA\MES\REDO02.LOG 線程=1 序列=5
歸檔日志文件名=D:\ORADATA\MES\REDO03.LOG 線程=1 序列=6
介質恢復完成, 用時: 00:00:01
完成 recover 于 2018-05-02 23:22:32
7、打開數據庫并重置日志序列
RMAN> alter database open resetlogs;
數據庫已打開
至此,完成了mes數據庫破壞后的完全恢復。
8、實驗完畢后開啟恢復目錄數據庫,之后應在恢復目錄機器上重新注冊數據庫的新化身
C:\Users\Administrator>rman target sys/mesHz2@mes catalog rman/rman
恢復管理器: Release 11.2.0.4.0 - Production on 星期三 5月 2 23:24:54 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已連接到目標數據庫: MES (DBID=2056489697)
連接到恢復目錄數據庫
RMAN> unregister database;
數據庫名為 "MES" 且 DBID 為 2056489697
是否確實要注銷數據庫 (輸入 YES 或 NO)? y
已從恢復目錄中注銷數據庫
RMAN> register database;
注冊在恢復目錄中的數據庫
正在啟動恢復目錄的全部重新同步
完成全部重新同步
9、由于生成了數據庫新的化身,以前所做的備份和歸檔都已不再有用,可以用RMAN命令將其刪除和注銷,文件不再保留,新的數據庫應當盡快重做備份。
感謝各位的閱讀!關于“如何通過搭建恢復目錄實現RMAN異地備份和恢復”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。