现在的位置: 首页 > 综合 > 正文

恢复情形的场景

2018年04月26日 ⁄ 综合 ⁄ 共 1549字 ⁄ 字号 评论关闭

完全恢复

完全恢复是包括将数据库恢复到最近时间的前滚日志并且没有数据丢失的恢复。

下面是一些在不丢失数据的情况下的恢复类型:

  • 用好的备份映像联机恢复数据库。前滚至日志的结束,然后完成备份。注意,这包括了各种媒介失败,容器被损坏等。请参阅上面的步骤来执行数据库级恢复。
  • 用好的备份映像联机恢复表空间。前滚到日志的结束,然后完成备份。注意,这包括了各种媒介失败,容器被损坏等。请参阅上面的步骤来执行表空间级恢复。
  • 意外删除表。要恢复被删除的表,需要执行下面一些操作:
    • 您必须将 DROP_RECOVERY 选项设置为 Y,来为表空间启用被删除表的恢复支持。发出下面的命令来检查是否为表空间启用了对被删除表的恢复支持,如果没有启用,就打开它。

      • db2 select tbspace, drop_recovery from syscat.tablespaces。
      • db2 alter tablespace userspace1 dropped table recovery on。
    • 确保 LOGRETAIN 被设为 ON,如果不是,请发出下面命令:

      • db2 update db cfg using logretain on(您需要断开所有应用程序的连接以使该命令生效)。
    • 执行完全脱机备份。

      • db2 backup database sample to e:/tmp。

    如果在某个时间点,您发现一张表被一位业余的 DBA(或者更加准确地说是一位 DBA 新手)意外删除了。要恢复该表,请执行下面的操作:

    • 通 过发出命令来列出被删除表的历史。您将注意到少数的几件事;备份 ID(比如 000000000000bb000002000d),表删除操作的开始和结束时间(比如 20040705150008)及被删除表的 DDL。在一些后续步骤中,您需要用到被删除表备份 ID 和 DDL。

      • db2 list history dropped table all for sample
    • 在没有前滚操作的情况下,使用备份映像来恢复表空间。

      • db2 restore database sample tablespace (userspace1) from e:/tmp taken at 2004070515 without rolling forward
    • 使用完全恢复将被删除表前滚至 e:/tmp。您将看到 ROLLFORWARD 命令成功完成的提示。

      • db2 rollforward database sample to end of logs and complete recover dropped table 000000000000bb000002000d to e:/tmp
    • 现在,在被删除表的 DDL 语句清单中创建被删除的表。
    • 导入被导出的数据,例如:

      • db2 import from d:/tmp/node0000/data of del method p (1,2,3,4,5,6,7,8,9,10,11,12,13,14) messages d:/tmp/imp.loog insert into employee(empno, firstnme, midinit, lastname, workdept, phoneno, hiredate, job, edlevel, sex, birthdate, salary, bonus, comm)

不完全恢复

不完全恢复是这样的一种恢复,该恢复包括前滚重做日志,以便数据库恢复到某个时间戳,该前滚操作允许您丢失一些数据。顾名思义,这是部分恢复。

在 DB2 中,不完全恢复可能由下面情况引起:

  • 活动日志的丢失。这可能是最坏的情形场景。因此强制使用数据库配置参数 MIRRORLOGPATH 来镜像活动日志。

    • 寻求 IBM 支持的帮助。
  • 归档日志的丢失。在这种场景中,您只能前滚到某个时间点,前滚到上次完好归档的日志文件,例如:
    • db2 rollforward db sample to 2004-06-28-10.30.50.000000。

抱歉!评论已关闭.