DB2数据库表空间重定向恢复
一、情况说明
在为某市搭建新营销系统演示环境时,从公司测试环境(以下简称公司环境)备份出来的数据库TCDATA文件无法在某市演示环境(以下简称某市环境)还原,提示容器错误。
原因是公司环境服务器的盘符为C、D、E、F,某市环境的盘符为C、D、E。
公司环境TCDATA 库的部份表空间容器指向盘符F,在某市环境无法找到盘符F。
二、解决流程
1、在公司环境备份TCDA TA库,并记录备份时间戳20100916122505
Db2 backup tcdata to e:/db2backup
2、将备份文件复制到某市环境,并在某市环境E盘新建一个TCDATA库
db2 create db tcdata on e:
3、用重定向语句还原TCDATA库,还原过程中会提示需要设置容器
db2 RESTORE DATABASE tcdata USER tc USING tcpwd FROM e:\db2backup TAKEN AT 20100916122505 TO e: INTO tcdata redirect
4、在公司环境查看TCDA TA库每个表空间的容器情况,一般容器用path,类型为file的容器用file。
注意:每个容器都需要重定向
db2 set tablespace containers for 1 using (path "E:\DB2\NODE0000\SQL00002\SQLT0001.0") db2 set tablespace containers for 2 using (path "E:\DB2\NODE0000\SQL00002\SQLT0002.0") db2 "set tablespace containers for 3 using(File 'e:\db2data\tcdata\userfile\datafile01.dat' 64000,File 'e:\db2data\tcdata\userfile\datafile02.dat' 64000,file 'e:\db2data\tcdata\userfile\datafile03.dat' 64000,File 'e:\db2data\tcdata\userfile\datafile04.dat' 64000,File 'e:\db2data\tcdata\userfile\datafile05.dat' 64000)"
db2 "set tablespace containers for 4 using(File 'E:\db2data\tcdata\tmpfile\public_usrtmp01.dat' 32000,File 'E:\db2data\tcdata\tmpfile\public_usrtmp02.dat' 32000,File 'E:\db2data\tcdata\tmpfile\public_usrtmp03.dat' 32000)"
db2 "set tablespace containers for 5 using(File 'E:\db2data\tcdata\tmpfile\public_systmp01.dat' 32000,File 'E:\db2data\tcdata\tmpfile\public_systmp02.dat' 32000,File 'E:\db2data\tcdata\tmpfile\public_systmp03.dat' 32000)"
db2 set tablespace containers for 6 using (path "E:\DB2\NODE0000\SQL00002\SYSTOOLSPACE")
db2 set tablespace containers for 7 using (path "E:\DB2\NODE0000\SQL00002\TBSP32K0000") db2 set tablespace containers for 8 using (path "E:\DB2\NODE0000\SQL00002\TBSP32KTMP0000")
db2 set tablespace containers for 9 using (path "E:\DB2\NODE0000\SQL00002\SQLT0250.0") 4、继续执行恢复
db2 restore db tcdata continue
5、如数据库不一致就执行一下前滚
db2 rollforward db tcdata to end of logs and complete。