解析DB2数据库恢复概念


  本文标签:DB2数据库 恢复

  DB2数据库恢复是怎样的呢?如果您是个初学者,下面的内容将会帮到你很大的忙  。那么就由我带领大家进入DB2数据库恢复的世界  。

  恢复场景

  您永远也无法知道您的系统何时会碰到灾难或故障  。因此最好早作准备,不但要防止数据受到外部因素的影响,也要防止内部用户无意中用不正确的信息破坏您的数据库  。

  您有备份您的数据库吗?您能够恢复执行到最后一秒的所有事务吗?

  为了尽量减少丢失的数据,需要有一个恢复策略,确保这个恢复策略可行,并不断地加以演练  。您应该考虑以下一些恢复场景:

  1. 系统运行中断  。
  2. 停电,硬件故障,或者能导致数据库处于不一致状态的软件故障  。
  3. 事务失败  。
  4. 用户可能无意中用不正确的数据修改您的数据库  。
  5. 媒介故障  。
  6. 如果您的磁盘驱动器变得无法使用,那么可能会丢失所有或部分数据  。
  7. 灾难  。
  8. 放置系统的设施遭到火灾、洪水或其他类似灾难的毁坏  。

  恢复策略

  为了制定恢复策略,应该问一问自己下面这些问题:

  1. 您的数据可以从另一个地方装载吗?
  2. 您能承受多少数据的丢失?
  3. 您需要花多少时间才能恢复数据库?
  4. 您有什么可用的资源来存储备份和日志文件?

  事务

  一个工作单元(UOW),也称一个事务,由一条或多条 SQL 语句组成,最后是一条 COMMIT 或 ROLLBACK 语句  。这个 UOW 中的所有语句被看作一个单元,以确保数据的一致性  。例如,一个客户试图将 100 美元从一个储蓄帐户转到一个支票帐户  。在这种情况下,UOW 是这样的:

  DELETE 100 dollars from SAVINGS account

  INSERT 100 dollars to CHECKING account

  COMMIT

  如果这些语句没有被当作一个单元,那么可以想像一下,如果在 DELETE 之后、INSERT 语句之前出现硬件故障,会出现什么情况:这个客户将丢失 100 美元  。但是,如果将这些语句当作一个单元,就不会发生这样的事情  。DB2 将知道这个单元没有完成(COMMIT),因此它将回滚之前的语句作出的所有更改,并将受影响的行返回到事务开始之前的状态  。

  没有语句用于标识一个事务的开始  。COMMIT 或 ROLLBACK 之后的语句将开始一个新的事务  。

  恢复的类型

  我们来熟悉一下恢复类型方面的概念  。DB2 允许以下类型的恢复:

  1、紧急事故恢复

  通过撤销(回滚)未提交的事务,使处于不一致状态的数据库恢复到一致状态  。再次考虑前一屏中的例子  。如果在 COMMIT 语句之前出现停电事故,则下一次 DB2 重新启动并访问数据库时,DB2 将首先回滚 INSERT 语句,然后回滚 DELETE 语句  。(回滚的语句的顺序与这些语句当初执行的顺序相反  。)

    2、版本恢复

  允许使用从 BACKUP 命令获得的一个备份镜像恢复前一个版本的数据库  。被恢复的数据库将包含关于当执行 BACKUP 命令时该数据库所处状态的信息  。如果在备份之后又执行了新的活动,则该信息将丢失  。

    3、前滚恢复

  这种恢复结合使用完整的数据库备份和日志文件,从而扩展了版本恢复  。在使用一个备份作为基准之前,必须首先存储这个备份,然后在该备份上应用日志  。这个过程允许将数据库或表空间恢复到某个特定的时间点上  。前滚恢复要求启用归档日志记录   。在 日志记录类型 中对归档日志记录作了讨论  。
 

  总结:

  1.在进行DB2异地DB2数据库恢复的时候,已经要先建好相应的目录,数据文件目录,日志目录,归档日志目录  。

  2.在操作失败需要查看日志时候,尽量想办法去看老日志,因为重新操作,再实时看日志,虽然比较明朗,但是需要花费更多的时间  。