前两天执行redirect restore,这里分享一下它的过程和遇到的一些困难。
1. 首先从生产环境得到image, online 备份的
2. 传送到测试环境后,先用db2 restore db $dbname from $imagepath taken at $timestamp redirect generate script $scriptname产生出脚本。
3. 修改脚本。里面的信息全是在生产环境中的数据库的信息,表空间信息。这里需要改为测试环境的表空间,container。里面注释了db path,LOGTARGET等信息,如果测试环境没有这个数据库,就要自己设定db path,newlogtarget等信息,如果测试环境原本就有这个数据库,那么不要用DBPATH ON, NEWLOGPATH,需要使用原来(或者重新指定的目录)的值,这时要用LOGTARGET指定log的path,ON后面指定数据库路径 。
4.执行脚本的时候,因为生产环境的表空间特别大,造成在测试环境中原本的表空间container不能容纳那么多的表空间,这时候需要用一些额外的硬盘来容纳剩余的表空间。如果restore出错想重新设置参数,可以db2 restore db $dbname abort,然后再restore
5.restore后需要rollforward, 检查image中是否包含log,db2ckbkp -h <backup_name>。如果发现INCLUDE LOGS 为 "1 ",那么说明image中有log,这时候可以用db2 restore db $dbname logs from $imagepath logtarget $logpath
6.最后rollforward成功后就可以使用database了。db2 rollforward db $dbname to end of logs and complete