转载

DB2表空间重定向恢复数据库实战

DB2的备份恢复有点坑,当源系统和目标系统的路径设置不同时,要手动进行重定向恢复,本文是我一次实战操作之后总结的过程,仅供参考。

一、发出重定向恢复命令

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
正文到此结束
Loading...