RMAN高階應用之Duplicate複製資料庫(1)概述

junsansi發表於2007-12-03
使用rman的duplicate命令複製資料庫系列,本系列可以視為一步一步學RMAN的姊妹篇~~~~

使用RMAN DUPLICATE命令可以在保留目標資料庫的基礎上依靠目標資料庫(Target Database)的備份建立一個副本資料庫(Duplicate Database)。該副本即可與目標資料庫完全相同,也可僅包含目標資料庫表空間的一部子集。目標站點(Target Site)以及副本站點(Duplicate Site)甚至可以在同一臺機器上。哈哈,使用Duplicate命令建立Duplicate資料庫,所謂術業有專攻僅字面意義理解用到這裡也算名有所指了吧:)

副本資料庫呢是目標資料庫的一個拷貝。言下之義即是說可以把它當成很正式的測試資料庫,想幹嘛幹嘛:),比如:

l 測試備份和恢復過程。

l 匯出資料,例如在生產資料庫上被有意無意刪除的表,然後你就可以再將其匯入生產資料庫。

再比如,你可以從Host1複製生產資料庫到Host2,然後使用Host2上的副本資料庫實踐修復、恢復等操作,而生產資料庫則完全不受其影響。

需要注意的是,雖然都可以通過Duplicate命令建立,但是副本資料庫與備庫(Standby Database)還是有區別地。備庫是主庫(Primary Database)的一份拷貝,你可以根據主庫的Archived Logs定期或不定期的更新它。如果主庫崩潰,你還可以將其轉換為主庫使用。而副本資料庫則並非為故障切換設計,而且也不支援這種Standby恢復和故障切換。(Duplicate命令建立備庫與建立副本庫只是語法上小有差異,但由於備庫涉及的大部分操作均與duplicate無關聯,所以本章節中不會體現,如有興趣可以自行參照:Oracle Data Guard Concepts and Administration,或者你有足夠的心耐心等俺出相關筆記,放心不出三五十年俺一定會寫成的。)

RMAN如何建立資料庫副本。

首先需要建立一個輔助例項(auxiliary instance, 至於如何建立嘛,本章是概述就不細緻體現了,你要是著急想看,請翻頁)。通過RMAN必須能夠連線到目標資料庫及啟動到nomount模式下的輔助例項。

至少在輔助例項上分配一條輔助通道,複製的主要工作都是通過在副本站點啟動的伺服器session的輔助通道實施的。然後應用主庫的必要備份,並建立及恢復副本資料庫。

RMAN客戶端可以在任何地方執行,只要能夠連線到主、輔例項。所有可被副本站點訪問到的備份以及archived redo logs都將被用於建立和恢復副本資料庫。如果副本站點與目標站點不在一起,你必須確保副本站點的備份所在路徑與主庫路徑一致,如果路徑無法保持一致,則必須保證副本站點能夠訪問到備份所在路徑

如果你使用的磁碟備份,可以通過下列方式確保路徑可用

l 手工複製備份源站點到遠端站點的相同路徑。例如,源站點的備份檔案在d:oradatabkp下,則複製到副本站點時也複製到d:oradatabkp目錄下。

l 手工操作備份從源站點到副本站點的新路徑下,例如,源站點的備份檔案在d:oradatabkp下,你可以將其複製到副本站點的d:oradatadup2下。d:oradatadup2對於目標站點和副本站點都要可訪問到,執行Catalog命令新增這些備份到副本站點Rman備份集中。

l 使用NFS共享磁碟來確保遠端站點在相同路徑下。

如果使用的是磁帶備份。。。。。。。。。。。。。。。。磁帶這東西我們可沒用過,如果你不想看使用說明書的話,那你就直接問上帝他老人家吧。

做為複製操作的一部分,RMAN自動執行下列步驟:

l 為副本資料庫建立控制檔案。

l Restore資料檔案到副本資料庫,並通過增量備份和Archived Redo Logs進行不完全恢復。

l 重啟輔助例項,以載入伺服器端的初始化引數檔案。

l 不完全恢復後通過Resetlogs方式Open副本資料庫以Online Redo Logs(Duplicate ... For Standby方式除外,該操作不會開啟資料庫)。

l 為副本資料庫產生一個新的,唯一的DBID(Duplicate ... For Standby方式除外,該方式不會建立新的唯一DBID)。

在建立副本期間,RMAN必須進行不完全恢復,因為目標庫的Online Redo Logs並不能時時備份並應用到副本資料庫。RMAN最多也就能取到目標資料庫最近一次備份的資料恢復到副本資料庫。

RMAN資料庫副本:可選操作

為了避免你在建立副本資料庫時,每次都翻著死魚一樣的白眼盯著黑乎乎的螢幕無所事事,oracle非常用心地提供了一些選項期望能讓你每次的操作都可以不同如下:

l Duplicate命令可在Catalog或Nocatalog模式下執行(關於catalog的知識你可以找找三思的另一個系列:一步一步學RMAN)

l 使用SKIP READONLY子句跳過只讀表空間。預設情況下複製包含只讀表空間。

l 通過SKIP TABLESPACE子句跳過指定表空間。SYSTEM表空間或包含回滾、UNDO的表空間除外。

l 可以將副本資料庫建立到新站點,如果新站點的目錄結構與主相同的話,必須指定NOFILENAMECHECK 選項。

l 從傳統檔案系統複製到ASM或OMF

l 預設情況下,DUPLICATE命令通過目標資料的最近一次備份建立副本資料庫,並恢復到歸檔日誌中的最近一致點。另外,你也可以使用RUN命令塊,執行SET UNTIL命令,或者執行DUPLICATE命令時附帶UNTIL子句,控制RMAN將副本資料庫恢復到指定的時間點(不過,注意指定的時間點不要超出了備份的範圍)。

l 可以將副本資料庫在相同恢復目錄中註冊成一個目標資料庫,因為該副本資料庫擁有一個新的唯一的DBID。

l 在某些情況下,你可以設定副本資料庫的DB_NAME與目標資料庫DB_NAME不同,更明確的講,如果副本資料庫與目標庫在相同的Oracle Home,則DB_NAME的初始化引數必須不同。如果兩者在不同的Oracle Home,則副本資料庫的DB_NAME在其所在的Oracle Home中必須唯一這才是副本資料庫可以目標庫在相同站點的真正原因。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-22298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章