DB2 重定向恢复和前滚常见问题解析

前言
数据库管理和维护工作中一项重要的内容就是对数据库进行定期的备份和恢复。这种工作的重要性除了表现在数据的保全,系统的容灾方面,还表现在为应用系统的开发和测试搭建数据库环境。
设想在一个不断更新升级的应用环境中,数据库的数据在不断的更新,程序开发人员也在不断开发新的版本,建立测试数据和环境,对应用进行测试,再发布到生产环境下。这样,对于一个高复杂性的应用,使用生产环境中的真实数据来建立测试环境就变成了合理的选择。当然,在使用真实数据之前,为了保护公司利益可能需要删除或修改一些敏感的数据。
在上述场景下,数据库管理员就要根据项目开发的要求,把生产环境的数据复制到开发和测试环境。数据库重定向恢复技术就提供了一个比较快的方式帮助管理员完成这项工作。
本文针对哪有对 DB2 恢复有初步知识的读者,重点讨论在重定向恢复和前滚的过程当中经常碰到的问题,并通过一些实际应用中遇到的问题,探讨如何事先避免以及问题发生之后的解决办法。
回页首
DB2 重定向恢复和前滚知识简介
从上一节假定的场景中,我们知道 DB2 重定向恢复常用于在不同的环境中进行数据库的恢复。这些环境的不同就会给重定向恢复造成一些麻烦。比如:生产环境的内存通常比测试环境的都要大,生产环境中给事物日志分配的空间也要大一些,另外,最明显的区别就是测试环境中表空间的位置和原来在生产环境上不一样了。对于这些区别,提前了解和掌握以后就有助于预防和解决在数据库恢复时遇到的问题。下面就分别介绍重定向恢复和前滚的操作方法和相关命令。
自动生成重定向恢复脚本以及重定向恢复状态查询
DB2 提供了命令,供用户从一次数据库备份文件中提取数据库重定向恢复脚本。示例如下,其中 /db2_backup/db2inst1/sample 是数据库备份文件所在的目录,20101023180128 是数据库备份文件的时间戳。
db2 restore db sample from /db2_backup/db2inst1/sample taken at 20101023180128
redirect generate script redirect_sample.sql
DB20000I The RESTORE DATABASE command completed successfully.

所生成的重定向文件 redirect_sample.sql,可以分为三个部分:
1. Restore 语句
此语句用来标示一个重定向的恢复操作命令开始,它在普通恢复的命令上加了 redirect 参数。
RESTORE DATABASE SAMPLE
FROM '/db2_backup/db2inst1/sample'
TAKEN AT 20101023180128
INTO SAMPLE
REDIRECT;

2. set containers 语句:
当目标数据库所的物理存储设备与原来的数据库不一样时,就需要下面的命令来指定新的物理容器。
SET TABLESPACE CONTAINERS FOR 0
USING (
PATH '/db2inst1/SAMPLE'
);
SET TABLESPACE CONTAINERS FOR 1
USING (
PATH '/ db2inst1/temp'
);
SET TABLESPACE CONTAINERS FOR 2
USING (
DEVICE '/dev/rsample_1G' 131072
);
……

3. restore continue 语句:
此语句代表重定向恢复语句序列完成,系统开始恢复数据库。
RESTORE DATABASE SAMPLE CONTINUE;

在数据库进行恢复的过程中,我们可以通过 list utilities 命令查看 restore 的状态。示例如下:
db2 list utilities show detail

ID = 4
Type = RESTORE
Database Name = SAMPLE
Partition Number = 0
Description = db
Start Time = 10/24/2010 13:49:17.515893
State = Executing
Invocation Type = User
Progress Monitoring:
Completed Work = 2938126336 bytes
Start Time = 10/24/2010 13:49:17.515898

其中的 Completed Work 代表已完成的数据量,与备份文件的大小比较可以估算出大概的完成时间。
常用前滚命令 , 所需日志文件的确定以及状态查询
前滚命令多种多样,这里不一一列举。最常用的语句就是 rollforward to 和 rollforward complete。
例如,使用指定目录的日志文件,前滚到某一时刻点:
rollforward db sample to 2010-11-21-17.00.00.000000
using local time overflow log path ( /db2_bac
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值