IBM DB2数据库恢复
DB2数据库就是IBM开发的一种大型关系型数据库平台.它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据, 是IBM开发的一种分布式数据库解决方案,是关系型数据库管理系统,为客户降低成本以及节约时间等,比如客户能够在DB2上运行专为Oracle数据库编写的程序。目前有DB2工作组版、DB2企业版、DB2个人版和DB2企业扩展版。
DB2数据库常用的恢复方法
1、 应急恢复
应急恢复用于防止数据库处于不一致或不可用状态。数据库执行的事务(也称工作单元)可能被意外中断,若在作为工作单位一部分的所有更改完成和提交之前发生故障,则该数据库就会处于不一致和不可用的状态。这时,需要将该数据库转化为一致和可用的状态。为此,需要回滚未完成的事务,并完成当发生崩溃时仍在内存中的已提交事务。如在COMMIT语句之前发生了电源故障,则在下一次DB2重新启动并再次访问该数据库时,需要回滚到执行COMMMIT语句前的状态。回滚语句的顺序与开始执行时的顺序相反。
2、 版本恢复
版本恢复指的是使用备份操作期间创建的映象来复原数据库的先前版本。这种恢复是通过使用一个以前建立的数据库备份恢复出一个完整的数据库。一个数据库的备份允许你吧数据库恢复至和这个数据库在备份时完全一样的状态。而从备份建立后到日志文件中记录的所有工作事务单位将全部丢失。
3、 前滚恢复
这种恢复技术是版本恢复的一个扩展,使用完整的数据库备份和日志相结合,可以使一个数据库或者被选择的表空间恢复到某个特定时间点。如果从备份时刻起到发生故障时的所有日志文件都可以获得的话,则可以恢复到日志上涵盖到的任意时间点。前滚恢复需要在配置中被明确激活才能生效
有些故障用户无法自行恢复,补天时代主要为客户提供以下情况修复
1、 DB2 各种报错
2、 DB2不能启动
3、 SMS DMS 表空间损坏或者丢失
4、 备份文件无法还原
5、 非windows系统数据库误删除,误分区,误格式化等
6、 DB2数据库文件为0字节
7、 DB2数据库文件被误删除
8、 硬盘坏道或者磁盘阵列崩溃导致数据库文件丢失等
DB2 的恢复难点在"容器"和"日志"这两层:一个表空间往往不是一个文件,而是由多个容器按页分条拼起来的,只拿到其中一个容器,库就是残缺的。
技术难点:表空间容器分布 + 日志链
DB2 的表空间有文件容器,也有裸设备容器;页大小有 4KB/8KB/16KB/32KB 多种,由建库时决定。数据在容器之间是按页轮转分布的,容器丢失、顺序错乱、或页大小判断错误,都会导致表数据整体错位。DB2 还依赖日志:活动日志与归档日志共同决定能不能把库前滚到一致点。
我们实际怎么做
- 先只读镜像全部容器与日志目录,含裸设备与文件容器。
- 重建表空间的容器映射:解析库级元数据与表空间映射信息,确定每个表空间由哪些容器、按什么顺序组成,页大小是多少。
- 页级提取数据:按映射逐页读取,识别页头、隔离坏页,按行结构把记录提取出来。
- 恢复表结构与目录:从系统目录表中解析表名、列定义、索引与约束,让导出的数据保持可用的结构,而不是一堆无字段名的记录。
- 用日志前滚:日志完整时把库前滚到最后一个一致点,尽量保住故障前的最新写入。
- 导出验证:按表导出为可导入的脚本或表格文件,客户核对后再交付。
这些操作千万别做
- 直接执行库级恢复(restore)——没有可用备份时,这个动作会覆盖现有数据文件。
- 把裸设备容器当普通文件拷贝,或用分区工具去"识别"它。
- 只拷走系统目录不拷数据容器,或漏掉日志目录。
完整的检测步骤与交付标准见 数据恢复服务流程。
