使用RMAN DUPLICATE命令可以在保留目標(biāo)數(shù)據(jù)庫(kù)的基礎(chǔ)上依靠目標(biāo)數(shù)據(jù)庫(kù)(Target Database)的備份創(chuàng)建一個(gè)副本數(shù)據(jù)庫(kù)(Duplicate Database)。該副本即可與目標(biāo)數(shù)據(jù)庫(kù)完全相同,也可僅包含目標(biāo)數(shù)據(jù)庫(kù)表空間的一部子集。目標(biāo)站點(diǎn)(Target Site)以及副本站點(diǎn)(Duplicate Site)甚至可以在同一臺(tái)機(jī)器上。哈哈,使用Duplicate命令創(chuàng)建Duplicate數(shù)據(jù)庫(kù),所謂術(shù)業(yè)有專攻僅字面意義理解用到這里也算名有所指了吧,
副本數(shù)據(jù)庫(kù)呢是目標(biāo)數(shù)據(jù)庫(kù)的一個(gè)拷貝。言下之義即是說(shuō)可以把它當(dāng)成很正式的測(cè)試數(shù)據(jù)庫(kù),想干嘛干嘛:),比如: 測(cè)試備份和恢復(fù)過(guò)程。 導(dǎo)出數(shù)據(jù),例如在生產(chǎn)數(shù)據(jù)庫(kù)上被有意無(wú)意刪除的表,然后你就可以再將其導(dǎo)入生產(chǎn)數(shù)據(jù)庫(kù)。 再比如,你可以從Host1復(fù)制生產(chǎn)數(shù)據(jù)庫(kù)到Host2,然后使用Host2上的副本數(shù)據(jù)庫(kù)實(shí)踐修復(fù)、恢復(fù)等操作,而生產(chǎn)數(shù)據(jù)庫(kù)則完全不受其影響。
需要注意的是,雖然都可以通過(guò)Duplicate命令創(chuàng)建,但是副本數(shù)據(jù)庫(kù)與備庫(kù)(Standby Database)還是有區(qū)別地。備庫(kù)是主庫(kù)(Primary Database)的一份拷貝,你可以根據(jù)主庫(kù)的Archived Logs定期或不定期的更新它。如果主庫(kù)崩潰,你還可以將其轉(zhuǎn)換為主庫(kù)使用。而副本數(shù)據(jù)庫(kù)則并非為故障切換設(shè)計(jì),而且也不支持這種Standby恢復(fù)和故障切換。(Duplicate命令創(chuàng)建備庫(kù)與創(chuàng)建副本庫(kù)只是語(yǔ)法上小有差異,但由于備庫(kù)涉及的大部分操作均與duplicate無(wú)關(guān)聯(lián),所以本章節(jié)中不會(huì)體現(xiàn),如有興趣可以自行參照:Oracle Data Guard Concepts and Administration,或者你有足夠的心耐心等俺出相關(guān)筆記,放心不出三五十年俺一定會(huì)寫(xiě)成的。)
RMAN如何創(chuàng)建數(shù)據(jù)庫(kù)副本?
首先需要?jiǎng)?chuàng)建一個(gè)輔助實(shí)例(auxiliary instance, 至于如何創(chuàng)建嘛,本章是概述就不細(xì)致體現(xiàn)了,你要是著急想看,請(qǐng)翻頁(yè))。通過(guò)RMAN必須能夠連接到目標(biāo)數(shù)據(jù)庫(kù)及啟動(dòng)到nomount模式下的輔助實(shí)例。
至少在輔助實(shí)例上分配一條輔助通道,復(fù)制的主要工作都是通過(guò)在副本站點(diǎn)啟動(dòng)的服務(wù)器session的輔助通道實(shí)施的。然后應(yīng)用主庫(kù)的必要備份,并創(chuàng)建及恢復(fù)副本數(shù)據(jù)庫(kù)。
RMAN客戶端可以在任何地方運(yùn)行,只要能夠連接到主、輔實(shí)例。所有可被副本站點(diǎn)訪問(wèn)到的備份以及archived redo logs都將被用于創(chuàng)建和恢復(fù)副本數(shù)據(jù)庫(kù)。如果副本站點(diǎn)與目標(biāo)站點(diǎn)不在一起,你必須確保副本站點(diǎn)的備份所在路徑與主庫(kù)路徑一致,如果路徑無(wú)法保持一致,則必須保證副本站點(diǎn)能夠訪問(wèn)到備份所在路徑。
如果你使用的磁盤備份,可以通過(guò)下列方式確保路徑可用: 手工復(fù)制備份源站點(diǎn)到遠(yuǎn)程站點(diǎn)的相同路徑。例如,源站點(diǎn)的備份文件在d:\oradata\bkp下,則復(fù)制到副本站點(diǎn)時(shí)也復(fù)制到d:\oradata\bkp目錄下。 手工操作備份從源站點(diǎn)到副本站點(diǎn)的新路徑下,例如,源站點(diǎn)的備份文件在d:\oradata\bkp下,你可以將其復(fù)制到副本站點(diǎn)的d:\oradata\dup2下。d:\oradata\dup2對(duì)于目標(biāo)站點(diǎn)和副本站點(diǎn)都要可訪問(wèn)到,運(yùn)行Catalog命令添加這些備份到副本站點(diǎn)Rman備份集中。 使用NFS共享磁盤來(lái)確保遠(yuǎn)程站點(diǎn)在相同路徑下。
如果使用的是磁帶備份。。。。。。。。。。。。。。。。磁帶這東西咱可沒(méi)用過(guò),如果你不想看使用說(shuō)明書(shū)的話,那你就直接問(wèn)上帝他老人家吧。
做為復(fù)制操作的一部分,RMAN自動(dòng)執(zhí)行下列步驟: 為副本數(shù)據(jù)庫(kù)創(chuàng)建控制文件。 Restore數(shù)據(jù)文件到副本數(shù)據(jù)庫(kù),并通過(guò)增量備份和Archived Redo Logs進(jìn)行不完全恢復(fù)。 重啟輔助實(shí)例,以加載服務(wù)器端的初始化參數(shù)文件。 不完全恢復(fù)后通過(guò)Resetlogs方式Open副本數(shù)據(jù)庫(kù)以重建Online Redo Logs(Duplicate ... For Standby方式除外,該操作不會(huì)打開(kāi)數(shù)據(jù)庫(kù))。 為副本數(shù)據(jù)庫(kù)產(chǎn)生一個(gè)新的,唯一的DBID(Duplicate ... For Standby方式除外,該方式不會(huì)創(chuàng)建新的唯一DBID)。
在創(chuàng)建副本期間,RMAN必須進(jìn)行不完全恢復(fù),因?yàn)槟繕?biāo)庫(kù)的Online Redo Logs并不能時(shí)時(shí)備份并應(yīng)用到副本數(shù)據(jù)庫(kù)。RMAN最多也就能取到目標(biāo)數(shù)據(jù)庫(kù)最近一次備份的數(shù)據(jù)恢復(fù)到副本數(shù)據(jù)庫(kù)。 RMAN數(shù)據(jù)庫(kù)副本:可選操作 為了避免你在創(chuàng)建副本數(shù)據(jù)庫(kù)時(shí),每次都翻著死魚(yú)一樣的白眼盯著黑乎乎的屏幕無(wú)所事事,oracle非常用心地提供了一些選項(xiàng)期望能讓你每次的操作都可以不同如下: Duplicate命令可在Catalog或Nocatalog模式下運(yùn)行(關(guān)于catalog的知識(shí)你可以找找三思的另一個(gè)系列:一步一步學(xué)RMAN)。 使用SKIP READONLY子句跳過(guò)只讀表空間。默認(rèn)情況下復(fù)制包含只讀表空間。 通過(guò)SKIP TABLESPACE子句跳過(guò)指定表空間。SYSTEM表空間或包含回滾、UNDO的表空間除外。 可以將副本數(shù)據(jù)庫(kù)創(chuàng)建到新站點(diǎn),如果新站點(diǎn)的目錄結(jié)構(gòu)與主相同的話,必須指定NOFILENAMECHECK 選項(xiàng)。 從傳統(tǒng)文件系統(tǒng)復(fù)制到ASM或OMF。 默認(rèn)情況下,DUPLICATE命令通過(guò)目標(biāo)數(shù)據(jù)的最近一次備份創(chuàng)建副本數(shù)據(jù)庫(kù),并恢復(fù)到歸檔日志中的最近一致點(diǎn)。另外,你也可以使用RUN命令塊,執(zhí)行SET UNTIL命令,或者執(zhí)行DUPLICATE命令時(shí)附帶UNTIL子句,控制RMAN將副本數(shù)據(jù)庫(kù)恢復(fù)到指定的時(shí)間點(diǎn)(不過(guò),注意指定的時(shí)間點(diǎn)不要超出了備份的范圍)。 可以將副本數(shù)據(jù)庫(kù)在相同恢復(fù)目錄中注冊(cè)成一個(gè)目標(biāo)數(shù)據(jù)庫(kù),因?yàn)樵摳北緮?shù)據(jù)庫(kù)擁有一個(gè)新的唯一的DBID。 在某些情況下,你可以設(shè)置副本數(shù)據(jù)庫(kù)的DB_NAME與目標(biāo)數(shù)據(jù)庫(kù)DB_NAME不同,更明確的講,如果副本數(shù)據(jù)庫(kù)與目標(biāo)庫(kù)在相同的Oracle Home,則DB_NAME的初始化參數(shù)必須不同。如果兩者在不同的Oracle Home,則副本數(shù)據(jù)庫(kù)的DB_NAME在其所在的Oracle Home中必須唯一。這才是副本數(shù)據(jù)庫(kù)可以與目標(biāo)庫(kù)在相同站點(diǎn)的真正原因。
|