一、發出重新導向恢複命令
DB2 RESTORE DB OLDDB FROM "C:\OLDDBbak" TAKEN AT 20150717164847 TO "C:" INTO NEWDB REDIRECT
其中,OLDDB是舊資料庫、備份的資料庫名稱,NEWDB是新資料庫名稱,不用事先建立也可以,C:\OLDDBbak是備份檔案放置的目錄,20150717164847是
備份檔案的時間戳記,具體可看備份檔案的名字OLDDB.0.DB2.NODE0000.CATN0000.20150717164847.001,TO "C:"是新資料庫的路徑,REDIRECT是進行重新導向恢複。
二、重新導向資料表空間
2.1列出資料表空間
DB2 LIST TABLESPACES
可以看到當前資料庫的資料表空間狀況
資料表空間標識 = 2
名稱 = SYSTOOLSTMPSPACE
類型 = 系統管理空間
內容 = 使用者臨時資料
狀態 = 0x2000100
詳細解釋:
複原暫掛
可以定義儲存空間
資料表空間標識 = 3
名稱 = TBS_01
類型 = 資料庫管理空間
內容 = 所有持久資料。大型資料表空間。
狀態 = 0x2001100
詳細解釋:
複原暫掛
必須定義儲存空間
可以定義儲存空間
可以看到資料表空間3是“必須定義儲存空間”狀態,這就要進行重新導向了。
2.2查看要進行重新導向的資料表空間詳細資料
DB2 LIST TABLESPACE CONTAINERS FOR 3 SHOW DETAIL
結果如下
資料表空間 3 的資料表空間容器
容器標識 = 0
名稱 = E:\OLDDB\TBS\CONTAINER_01_01
類型 = 檔案
總計頁數 = 25600
可用頁數 = 25568
可訪問 = 否
容器標識 = 1
名稱 = E:\OLDDB\TBS\CONTAINER_01_02
類型 = 檔案
總計頁數 = 25600
可用頁數 = 25568
可訪問 = 否
可以看到,這個資料表空間的路徑在目標系統是不可訪問的,要進行重新導向。
2.3進行重新導向
這個資料表空間有兩個容器,可以分別重新導向
DB2 SET TABLESPACE CONTAINERS FOR 3 USING (FILE "C:\NEWDB\TBS\CONTAINER_01_01" 25600,FILE "C:\NEWDB\TBS\CONTAINER_01_02" 25600)
也可以合并重新導向
DB2 SET TABLESPACE CONTAINERS FOR 3 USING (FILE "C:\NEWDB\TBS\CONTAINER_01" 51200)
頁大小要大於等於原大小
這是資料庫管理空間類型的重新導向,如果是系統管理空間類型的,命令如下:
DB2 SET TABLESPACE CONTAINERS FOR 10 USING (PATH "C:\NEWDB\TBS\TBS_SYSTEM_04")
可能有很多個資料表空間要進行重新導向,按實際環境,最後要執行的命令類似如下:
DB2 SET TABLESPACE CONTAINERS FOR 3 USING (FILE "C:\NEWDB\TBS\CONTAINER_01_01" 25600,FILE "C:\NEWDB\TBS\CONTAINER_01_02" 25600)
DB2 SET TABLESPACE CONTAINERS FOR 4 USING (FILE "C:\NEWDB\TBS\CONTAINER_02" 25600)
DB2 SET TABLESPACE CONTAINERS FOR 5 USING (FILE "C:\NEWDB\TBS\CONTAINER_03" 51200)
DB2 SET TABLESPACE CONTAINERS FOR 6 USING (FILE "C:\NEWDB\TBS\CONTAINER_04" 64000)
DB2 SET TABLESPACE CONTAINERS FOR 7 USING (FILE "C:\NEWDB\TBS\CONTAINER_05" 153600)
DB2 SET TABLESPACE CONTAINERS FOR 8 USING (FILE "C:\NEWDB\TBS\CONTAINER_06" 51200)
DB2 SET TABLESPACE CONTAINERS FOR 9 USING (FILE "C:\NEWDB\TBS\CONTAINER_07" 25600)
DB2 SET TABLESPACE CONTAINERS FOR 10 USING (PATH "C:\NEWDB\TBS\TBS_SYSTEM_04")
DB2 SET TABLESPACE CONTAINERS FOR 11 USING (PATH "C:\NEWDB\TBS\TBS_SYSTEM_08")
DB2 SET TABLESPACE CONTAINERS FOR 12 USING (PATH "C:\NEWDB\TBS\TBS_USERTMP_04")
DB2 SET TABLESPACE CONTAINERS FOR 13 USING (PATH "C:\NEWDB\TBS\TBS_USERTMP_08")
最後重新執行2.1步驟檢查看還有沒“必須定義儲存空間”的資料表空間
三、完成重新導向恢複
DB2 RESTORE DB OLDDB CONTINUE
DB2資料庫重新導向資料表空間恢複執行個體
db2 restore database sino into jinan3 redirect without rolling forward
db2 "set tablespace containers for 2 using (file '/opt/data/jinan3/ct/userspace1' 65536, file '/opt/data/jinan3/ct/userspace2' 65536 , file '/opt/data/jinan3/ct/userspace3' 65536, file '/opt/data/jinan3/ct/userspace4' 65536 , file '/opt/data/jinan3/ct/userspace5' 65536)"
db2 "set tablespace containers for 3 using (path '/opt/data/jinan3/ct_temp_sys_16')"
db2 "set tablespace containers for 4 using (path '/opt/data/jinan3/ct_temp_user_16')"
db2 restore db sino continue
------------實際操作的過程--------注意:重新定向的資料表空間位置根據實際需求自己定義-----------------------
F:/2008_1_21>db2 restore db gzk_1_5 into gzk_1 redirect without rolling forward
F:/2008_1_21>db2 "set tablespace containers for 3 using (file 'E:/db2/gzk_1/data
8/data8-1.dat' 64000, file 'e:/db2/gzk_1/data8/data8-2.dat' 64000)"
DB20000I SET TABLESPACE CONTAINERS命令成功完成。
F:/2008_1_21>db2 "set tablespace containers for 4 using (file 'E:/db2/gzk_1/data
16/data16-1.dat' 32000)"
DB20000I SET TABLESPACE CONTAINERS命令成功完成。
F:/2008_1_21>db2 "set tablespace containers for 5 using (file 'E:/db2/gzk_1/inde
x8/index8-1.dat' 64000)"
DB20000I SET TABLESPACE CONTAINERS命令成功完成。
F:/2008_1_21>db2 "set tablespace containers for 6 using (file 'E:/db2/gzk_1/long
8/long8-1.dat' 64000)"
DB20000I SET TABLESPACE CONTAINERS命令成功完成。
F:/2008_1_21>db2 "set tablespace containers for 7 using (path 'E:/db2/gzk_1/temp
8')"
DB20000I SET TABLESPACE CONTAINERS命令成功完成。
F:/2008_1_21>db2 "set tablespace containers for 8 using (path 'E:/db2/gzk_1/temp
16')"
DB20000I SET TABLESPACE CONTAINERS命令成功完成。
F:/2008_1_21>db2 restore db gzk_1_5 continue
DB20000I RESTORE DATABASE命令成功完成。