在研究RMAN的時候忽然想到,使用RMAN作的數據庫全備的備份集可不能夠拿到其餘的服務器作一個恢復操做?說幹就幹,我在帖子上看到最好是相同版本相同安裝目錄的一個數據庫,而後僅安裝Oracle軟件,而後使用rman備份恢復。那麼一個大體流程出來了:數據庫
1.使用RMAN備份整個源數據庫;bash
2.使用VirtualBox的複製虛擬機功能複製一個相同的副本,配置好網絡;服務器
3.將副本虛擬機內的Oracle實例刪除;網絡
4.完成恢復前的準備工做oracle
5.使用當前只有Oracle軟件的副本虛機加上源數據庫的備份完成恢復工做。工具
第一步: 備份ui
在源數據庫上登陸RMAN使用全備命令作一個全備操做spa
RMAN target / --登陸rman工具
backup database format '/home/oracle/prod_%s.bak'; --數據庫全備
list backupset; --查看所有備份集複製代碼
能夠看到備份5包括的是數據文件,備份6包括的是控制文件和參數文件。3d
第二步:複製虛擬機rest
爲了保證一個相同的數據庫軟件版本相同的安裝路徑,同時也是爲了偷懶,在這裏我就直接作了一個複製副本的操做,正常應該搭建一個相同的服務器,安裝同版本的數據庫,但不建數據庫的操做。
複製虛擬機後重新配置好網絡ip。
若是你要是本身搭建環境的話可使用相同的數據版本安裝,最好路徑相同,在選擇安裝Oracle軟件仍是同時建庫時能夠選擇僅安裝Oracle軟件。
第三步:刪除副本服務器內的Oracle實例,這裏我選擇簡單點的操做,使用圖形界面使用DBCA操做刪除數據庫實例,而後就會自動刪除掉數據文件等。固然也能夠手動刪除這些文件,必定要先關閉實例纔好。
第四步:恢復前的準備工做
1.在我操做的過程當中有兩個報錯產生,第一個是和審計文件有關,另外一個是在恢復控制文件時和建立有關,他們都有一個共同的錯誤,沒有辦法本身建立文件夾!!!!
如圖:這兩個文件夾在作第三步的時候,刪除Oracle的實例時已經被刪掉了,在恢復的過程當中沒有辦法本身建立這個文件夾,因此須要本身建立好,在建立文件時要注意屬主和屬組的問題。
2.另外一個準備工做很重要,可是由於我是作的虛擬機直接拷貝的操做,因此理論上這步不須要作,可是若是你要是本身搭建必定要作這個操做。那就是.bash_profile文件的建立。這個是必需要作的操做,若是是在Windows下,必定要指定ORACLE_SID和建立服務。
在這裏咱們就能夠直接將源數據庫的.bash_profile文件拷貝過來。
這樣咱們的準備工做就作好了。
第五步:RMAN恢復
如今咱們的環境已經配置好了,Oracle數據庫的啓動模式是首先調取參數文件,參數文件內記錄着數據控制文件的位置和一系列內存分配狀況,參數文件分配好內存後指定控制文件位置,在nomount狀態下打開控制文件,控制文件內記錄着數據庫的一系列的參數和數據文件的位置,在mount狀態下打開數據文件,完成數據庫實例打開的操做。
一樣這也是個人數據庫實例恢復流程,參數文件——控制文件——數據文件
1.首先打開rman環境,在這裏咱們首先要指定好源數據庫的DBID
rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on 星期四 12月 13 14:47:32 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=335947904)
這段是rman啓動時的顯示狀況,是在源數據啓動時拷貝的,咱們的副本數據庫不會存在這DBID的。
RMAN> set DBID=335947904
executing command: SET DBID
複製代碼
2.恢復參數文件
正常啓動到nomount環境下須要調取參數文件,可是目前咱們的副本環境下不存在參數文件,並且首先要恢復的就是參數文件,很矛盾,因此在這裏可打開rman自帶的一個nomount小環境下去恢復參數文件。
RMAN> startup nomount; --rman自帶的nomount小環境
RMAN> restore spfile from '/home/oracle/prod_6.bak'; 複製代碼
在dbs/目錄下查看,此時spfileprod.ora文件已經恢復成功
RMAN> startup force nomount --使用恢復的spfile啓動複製代碼
3.恢復控制文件
在nomount下恢復實例的控制文件
RMAN> restore controlfile from '/home/oracle/prod_6.bak';
RMAN> alter database mount; --加載恢復的控制文件
RMAN> list backup; --能夠看到RMAN的元數據了複製代碼
4.還原全部的數據文件
在mount環境下能夠看到rman備份的元數據,能夠直接使用restore恢復數據庫。
RMAN> restore database;複製代碼
5.運用日誌恢復
運用recover日誌儘量的多恢復數據。
RMAN> recover database; 嘗試恢復,使用盡可能多的歸檔恢復。複製代碼
7.打開數據庫
在數據庫備份時因爲當前日誌沒有切換,因此當前日誌不在備份中,當前日誌的缺失,又使用備份的控制文件,因此是不徹底恢復的形式打開數據庫。不然沒法打開數據庫。
RMAN> alter database open resetlogs; 複製代碼
總結:這是一個不徹底的恢復操做,緣由是缺乏當前日誌文件,全部在下次備份時,最好作一第二天志切換,盡最大可能的恢復數據。整體來講RMAN是一個很好用的工具。