如何使用重定向恢復(fù)操作克隆DB2數(shù)據(jù)庫(kù)
導(dǎo)讀:如何使用數(shù)據(jù)庫(kù)恢復(fù)操作使用數(shù)據(jù)庫(kù)備份映象來(lái)重新創(chuàng)建數(shù)據(jù)庫(kù)。如果要將數(shù)據(jù)庫(kù)從一臺(tái)機(jī)器克隆到另一臺(tái),最簡(jiǎn)單的方法就是從備份映象恢復(fù)數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)使用的文件系統(tǒng)路徑也包含在備份映象中。因此,除非源系統(tǒng)上的數(shù)據(jù)庫(kù)引用的文件系統(tǒng)和物理設(shè)備與目標(biāo)系統(tǒng)的設(shè)置方法完全相同,否則就需要執(zhí)行重定向恢復(fù)操作。
提示:如果有DB2 V8,就可以從任何高位優(yōu)先服務(wù)器獲取備份,并將它恢復(fù)到任何其它高位優(yōu)先服務(wù)器。例如,您可以將備份映象從 DB2 for HP-UX 恢復(fù)到 DB2 for AIX® 或 Sun Solaris。但是,這并不適用于 Windows 和 Linux。
重定向恢復(fù)操作包括兩步數(shù)據(jù)庫(kù)恢復(fù)過(guò)程,并且中間有一個(gè)表空間容器定義步驟:
帶REDIRECT選項(xiàng)發(fā)出 RESTORE DATABASE 命令。
使用 SET TABLESPACE CONTAINERS 命令來(lái)定義被恢復(fù)的數(shù)據(jù)庫(kù)的表空間容器(DB2需要知道您想要讓表空間駐留在目標(biāo)系統(tǒng)上的什么位置)。
再次發(fā)出 RESTORE DATABASE 命令,這次指定 CONTINUE 選項(xiàng)。
整個(gè)重定向恢復(fù)操作必須在同一個(gè)會(huì)話(huà)中調(diào)用;否則,將返回 SQL0900N,恢復(fù)操作會(huì)失敗,記住這一點(diǎn)很重要。確保不會(huì)發(fā)生這種情況的一個(gè)方法是創(chuàng)建并運(yùn)行包含重定向恢復(fù)過(guò)程中全部三部分的腳本。
以下(Windows)示例顯示了如何成功地執(zhí)行重定向恢復(fù)操作。我將演示如何從不同的 實(shí)例恢復(fù)備份映象,而不是從另一臺(tái) 服務(wù)器恢復(fù)備份映象。原理相同,細(xì)節(jié)也一樣。
本示例中的源實(shí)例名為 PROD。目標(biāo)實(shí)例名為 MYINST。將要在 MYINST 上被恢復(fù)(創(chuàng)建)的 PROD 上的現(xiàn)有數(shù)據(jù)庫(kù)名為 MOVIES。MOVIES 數(shù)據(jù)庫(kù)在 D 盤(pán)上。
創(chuàng)建PROD上的 MOVIES 數(shù)據(jù)庫(kù)的完整數(shù)據(jù)庫(kù)備份映象:
set DB2INSTANCE=PROD
db2start
db2 backup db movies
這個(gè)映象的時(shí)間戳記是 20021006213640 ,該映象在 D:\MOVIES.0\PROD\NODE0000\CATN0000\20021006 中。DB2 在發(fā)出 BACKUP DATABASE 命令的目錄中創(chuàng)建這個(gè)子目錄樹(shù)。子目錄名稱(chēng)表示以下含義:
\\\\
在這個(gè)子目錄樹(shù)中,將會(huì)有一個(gè)表示實(shí)際備份映象的文件(213640.0)。文件名表示獲取備份的時(shí)間。
創(chuàng)建相似的路徑(使用 MYINST 代替 PROD):
md MOVIES.0\MYINST\NODE0000\CATN0000\20021006
這是關(guān)鍵步驟:如果沒(méi)有正確創(chuàng)建這個(gè)路徑,后續(xù)的數(shù)據(jù)庫(kù)恢復(fù)操作就會(huì)失敗。如果正在將備份映象重新定位到另一臺(tái)機(jī)器,那么在目標(biāo)機(jī)器上創(chuàng)建上述路徑(用適當(dāng)?shù)哪繕?biāo)實(shí)例名代替 MYINST),并且將備份映象(在此案例中是 213640.0)復(fù)制到該目錄。在為傳送維護(hù)目錄樹(shù)時(shí),也可以使用壓縮工具將備份映象打包。
啟動(dòng) MYINST,然后調(diào)用重定向恢復(fù)操作的第一步。
set DB2INSTANCE=MYINST
db2start
db2 restore db movies from d taken at 20021006213640 to d redirect
如果從不包含備份映象的目錄中調(diào)用 DATABASE RESTORE 命令,則必須指定 FROM 參數(shù)。TO 參數(shù)指定了目標(biāo)數(shù)據(jù)庫(kù)目錄(只有在 Windows 操作系統(tǒng)上要指定盤(pán)符)。
為與所恢復(fù)的數(shù)據(jù)庫(kù)相關(guān)的三個(gè)缺省表空間(SYSCATSPACE、TEMPSPACE1 和 USERSPACE1)定義新的表空間容器:
db2 set tablespace containers for 0 using (path 'd:\ts0con1')
db2 set tablespace containers for 1 using (path 'd:\ts1con1')
db2 set tablespace containers for 2 using (path 'd:\ts2con1')
可以使用 LIST TABLESPACES SHOW DETAIL 命令來(lái)獲取關(guān)于源數(shù)據(jù)庫(kù)中所有表空間的信息;這將幫助您確保已經(jīng)為目標(biāo)數(shù)據(jù)庫(kù)中的所有表空間設(shè)置了容器。
完成重定向恢復(fù)操作:
db2 restore db movies continue
驗(yàn)證是否正確地為所恢復(fù)的數(shù)據(jù)庫(kù)建立了目錄,以及為它定義的表空間容器是否真正與所恢復(fù)的數(shù)據(jù)庫(kù)相關(guān):
db2 list db directory
db2 connect to movies
db2 list tablespace containers for 0
db2 list tablespace containers for 1
db2 list tablespace containers for 2
db2 connect reset
db2 terminate
db2stop
set DB2INSTANCE=PROD
db2stop
【編輯推薦】