一、发出重定向恢复命令
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命令成功完成。