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