??? 如果你看過三思之前的幾個筆記系列,那么對于rman 想必已經(jīng)非常熟悉,操作這個必然也不成問題,如果你還沒有看過,建議你先回去看看,然后再回來操作必然也沒有問題,如果你一定不準(zhǔn)備看,沒關(guān)系,只要你嚴(yán)格按照實(shí)踐部分的步驟操作,我相信你一定也可以創(chuàng)建成功,操作應(yīng)該也沒有問題,不過如果這樣你也覺著沒有問題,那么我要告訴你,可能就這是最大的問題:不知道做過什么,不知道該做什么,不知道為什么要做,一旦需求稍變,你甚至什么都不敢做。
??? ● RMAN 自動重命名OMF 的文件及路徑結(jié)構(gòu)。
??? ● RMAN 修復(fù)歸檔日志文件并執(zhí)行恢復(fù)以盡可能保證standby 與primary 數(shù)據(jù)一致相同。
??? 另外在這里三思更明確的指出,使用RMAN 的duplicate 命令只能直接創(chuàng)建物理standby,幸還是不幸?
??? ● 已經(jīng)在primary 數(shù)據(jù)庫設(shè)置了所有相關(guān)的初始化參數(shù);
??? ● 已經(jīng)創(chuàng)建了standby 的初始化參數(shù)文件并配置了所有相關(guān)的初始化參數(shù);
??? ● 已經(jīng)配置了實(shí)例,NetService,Listener 等;
??? ● 啟動standby 實(shí)例到nomount 狀態(tài);
??? 1).RMAN> backup current controlfile for standby;
??? 2).RMAN> copy current controlfile for standby to 'e:\ora10g\oradata\jssrman\JSSRMAN01.CTL';
?
等等,這些相關(guān)參數(shù)、命令的應(yīng)用我們都在"Duplicate 復(fù)制數(shù)據(jù)庫"系列中介紹并應(yīng)用過,后面還會再次提及。
??? 通常情況下,rman 創(chuàng)建完standby 之后不會自動執(zhí)行recover。
??? 1、RMAN 連接standby 與primary,及catalog(如果使用了的話);
??? 2、檢索catalog(nocatalog 的話是primary 數(shù)據(jù)庫的控制文件),確定primary 的備份以及standby 控制文件;
??? 3、如果使用介質(zhì)恢復(fù),RMAN 需要連接介質(zhì)管理器以獲取所需備份數(shù)據(jù);
??? 4、恢復(fù)standby 控制文件到standby 服務(wù)器;
??? 5、恢復(fù)primary 數(shù)據(jù)庫備份集中相應(yīng)數(shù)據(jù)文件到standby 服務(wù)器;
??? 6、rman 自動將standby 數(shù)據(jù)庫打開到mount 狀態(tài),不過不會自動打開redo 應(yīng)用。
??? 7、在所有數(shù)據(jù)都restored 之后,rman 自動執(zhí)行recovery,如果recovery 過程需要?dú)w檔文件,但是這些文件又不在本地盤,則rman 會嘗試從備份中獲取。
??? 8、rman 執(zhí)行recovery 之前,你可以通過指定time,scn,logfile sequence 來確定recovery 的內(nèi)容,如果什么都不指定,則rman 一直recover 到最后一個歸檔文件。
??? 9、rman 自動將standby 數(shù)據(jù)庫打開到mount 狀態(tài),同樣也不會自動打開redo 應(yīng)用。
??? 基本上,可以分成二類:
??? duplicate 不同服務(wù)器相同目錄結(jié)構(gòu)創(chuàng)建standby 的操作極為簡單, 你即不需要動用DB_FILE_NAME_CONVER/LOG_FILE_NAME_CONVERT之類參數(shù),也不需要通過set newname之類命令,基本步驟如下:
??? 2) 確認(rèn)備份集中文件scn 大于或等于控制文件中的scn。
??? 3) 如果需要,可以通過set 命令指定time,scn 或log 序號以執(zhí)行不完全恢復(fù)。
??????? 例如:set until scn 152;
??????? 提示:注意如果有set,則set 與duplicate 必須在同一個run 命令塊中。
??? 4) 如果沒有配置自動分配通道的話,需要手工指定至少一條輔助通道。
??? 5) 務(wù)必指定nofilenamecheck 參數(shù),我們之前"duplicate 復(fù)制數(shù)據(jù)庫"系列中就曾提到過,異機(jī)操作路徑相同還必需指定NOFILENAMECHECK。因?yàn)榇颂巓racle 表現(xiàn)的很傻,它不知道你要恢復(fù)的路徑是在另一臺機(jī)器上,它只是認(rèn)為要恢復(fù)到的路徑怎么跟目標(biāo)數(shù)據(jù)庫表現(xiàn)的一樣呢?會不會是要覆蓋目標(biāo)數(shù)據(jù)庫啊,為了避免這種情形,于是它就報錯。所以一旦異機(jī)恢復(fù),并且路徑相同,那么你必須通過指定NOFILENAMECHECK 來避免oracle 的自動識別。
??? sql> duplicate target database for standby nofilenamecheck dorecover;
??? 注意,dorecover 并非是必須參數(shù),如果你不指定的話,則duplicate 修復(fù)數(shù)據(jù)文件到服務(wù)器,并自動將standby 啟動到mount 狀態(tài),不過并不會執(zhí)行恢復(fù)操作。
??? 對于不同目錄結(jié)構(gòu)創(chuàng)建standby(與是否同一臺服務(wù)器就基本無關(guān)了),你需要對數(shù)據(jù)文件和日志文件路徑重新定義,那你的選擇可就多多了喲:
??? ● 確保已設(shè)置standby 服務(wù)器中所有相關(guān)的初始化參數(shù)。
??? ● 確認(rèn)備份集中文件scn 大于或等于控制文件中的scn。
??? ● 如果需要,可以通過set 命令指定time,scn 或log 序號以執(zhí)行不完全恢復(fù)。
??? ● 如果沒有配置自動分配通道的話,需要手工指定至少一條輔助通道。
??? ● 通過set newname 命令為standby 數(shù)據(jù)文件指定新路徑
??? ● 執(zhí)行duplicate 命令。
??? RUN
??? {
??? # Set new file names for the datafiles
??? SET NEWNAME FOR DATAFILE 1 TO '?/dbs/standby_data_01.f';
??? SET NEWNAME FOR DATAFILE 2 TO '?/dbs/standby_data_02.f';
??? . . .
??? DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER;
??? }
??? # set auxiliary names for the datafiles
??? CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
??? CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
??? . . .
??? CONFIGURE AUXNAME FOR DATAFILE n TO '/oracle/auxfiles/aux_n.f';
??? DUPLICATE TARGET DATABASE FOR STANDBY;
??? CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
??? CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
??? . . .
??? CONFIGURE AUXNAME FOR DATAFILE n CLEAR;