透過搭建恢復目錄實現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 '';
以下是採用並行方式的多通道備份指令碼,執行增量級別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 '';
backup as compressed backupset
archivelog all delete all input
format '';
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 '';
backup as compressed backupset
archivelog all delete all input
format '';
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 TAG20180502T115920 2018-05-02 11:59:22 2018-05-02 11:59:31 9 105791488 YES
2056489697 6308 6304 D 0 TAG20180502T115920 2018-05-02 11:59:36 2018-05-02 11:59:36 0 1130496 YES
2056489697 6309 6305 D 0 TAG20180502T115920 2018-05-02 11:59:37 2018-05-02 11:59:37 0 81920 YES
2056489697 6352 6344 L TAG20180502T115942 2018-05-02 11:59:42 2018-05-02 11:59:42 0 1102848 YES
2056489697 6310 6306 D 0 TAG20180502T115920 2018-05-02 11:59:22 2018-05-02 11:59:39 17 211460096 YES
2056489697 6351 6343 L TAG20180502T115942 2018-05-02 11:59:42 2018-05-02 11:59:42 0 376832 YES
2056489697 6353 6345 L TAG20180502T115942 2018-05-02 11:59:44 2018-05-02 11:59:44 0 8704 YES
2056489697 6372 6370 D 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 '';
啟動 restore 於 2018-05-02 22:56:06
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=396 裝置型別=DISK
通道 ORA_DISK_1: 正在從 AUTOBACKUP 還原 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 '';
啟動 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
225 225 1 1 EXPIRED DISK
226 226 1 1 EXPIRED DISK
227 227 1 1 EXPIRED DISK
228 228 1 1 EXPIRED DISK
是否確定要刪除以上物件 (輸入 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 '';
搜尋與樣式 匹配的所有檔案
資料庫未知檔案的列表
=====================================
檔名:
檔名:
檔名:
檔名:
檔名:
檔名:
是否確實要將上述檔案列入目錄 (輸入 YES 或 NO)? y
正在編制檔案目錄...
目錄編制完畢
已列入目錄的檔案的列表
=======================
檔名:
檔名:
檔名:
檔名:
檔名:
檔名:
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: 正在讀取備份片段
通道 ORA_DISK_1: 段控制程式碼 = 標記 = 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: 正在讀取備份片段
通道 ORA_DISK_1: 段控制程式碼 = 標記 = 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命令將其刪除和登出,檔案不再保留,新的資料庫應當儘快重做備份。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2153718/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN備份異機恢復
- RMAN備份恢復典型案例——異機恢復未知DBID
- rman備份異機恢復(原創)
- 透過RMAN備份standby database成功恢復還原Database
- rman 增量備份恢復
- RMAN備份恢復技巧
- 12 使用RMAN備份和恢復檔案
- RMAN備份恢復效能優化優化
- RMAN備份與恢復測試
- OceanBase-OB備份異地恢復流程
- 備份和恢復
- RMAN備份恢復典型案例——RMAN備份&系統變慢
- Oracle 備份恢復篇之RMAN catalogOracle
- ORACLE DG從庫 Rman備份恢復Oracle
- KunlunDB備份和恢復
- redis 備份和恢復Redis
- RAC備份恢復之Voting備份與恢復
- RMAN備份恢復典型案例——ORA-00245
- RMAN恢復實踐
- 備份恢復Lesson 04.Using the RMAN Recovery Catalog
- SqlServer備份和恢復(二)SQLServer
- SqlServer 備份和恢復(一)SQLServer
- 【MySQL】MySQL備份和恢復MySql
- 備份與恢復:polardb資料庫備份與恢復資料庫
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- G017-ORACLE-MIGRATION-01 RMAN備份異機不完全恢復Oracle
- mydumper備份恢復
- Mysql備份恢復MySql
- MySQL 非常規恢復與物理備份恢復MySql
- RMAN備份恢復典型案例——資料庫卡頓資料庫
- dg丟失歸檔,使用rman增量備份恢復
- RMAN增量恢復
- innobackupex 部分表備份和恢復
- Oracle 備份和恢復介紹Oracle
- 【RMAN】Oracle12c以後rman 備份恢復命令參考Oracle
- 【RMAN】在多租戶環境下的RMAN備份及恢復
- OceanBase物理備份恢復實踐
- MySQL備份與恢復——實操MySql