技术开发 频道

Oracle和DB2的联机热备份比较

  DB2 UDB 联机备份

  DB2 UDB 执行时间点恢复的机制类似于 Oracle。要了解 DB2 UDB 联机备份和恢复,就需要了解归档日志记录。有三种我们需要熟悉的日志定义:

  活动日志 —— 该日志包含没有提交或回滚的事务,或者已提交但尚未刷新到磁盘的事务。
  联机归档日志 —— 该日志包含已提交并且被记录到硬盘的事务的信息,和活动日志位于同一目录。
  脱机归档日志 —— 如果将联机归档日志从活动日志所在目录移动到其他目录或磁带中,就成为了脱机归档日志。

  有许多与日志记录有关的配置参数:

  LOGFILSIZ —— 每个日志文件的大小,默认值是 250,单位为 4KB。
  LOGPRIMARY —— 主日志文件的个数(默认值是 3)。
  LOGSECOND —— 主日志文件占用满时,可以分配的二级日志文件的个数。当把这个参数设为 -1 时(版本 8),可以使用无限数量的活动日志。
  NEWLOGPATH —— 用来更改日志文件的存储位置。要想使该参数生效,需要重新激活数据库。
  MIRRORLOGPATH —— 日志文件的镜像路径,以避免单点故障。
  OVERFLOWLOGPATH —— 指定前滚期间可以在哪些目录搜索需要的日志,以允许前滚操作能访问多个目录中的日志。
  USEREXIT——用于启动用户出口功能,进行日志的自动归档。
  BLK_LOG_DSK_FUL——当 DB2 无法在活动日志路径中创建新日志文件时,防止生成磁盘已满错误。

  为了使用联机备份,必须打开归档日志记录。通过将 LOGRETAIN 设为 ON,可以打开归档日志记录。

  归档日志记录是一种不同于循环日志记录的日志记录机制,因为循环日志记录重写了提交的日志,而归档日志记录归档了提交的日志。

  在归档日志记录中,不能重用已经变成归档日志的日志。要移动那些联机归档日志,您需要手动移动它们或者使用用户出口程序(user exit)来移动它们。 图 1举例说明了归档日志记录机制:

  图中的 LOG (n+1)是活动日志,log (n) 和 log (n-i)(其中 i<=n)都是联机归档日志。这些归档日志既可以位于存储活动日志的路径中,也可以使用用户出口程序来指定将保存它们的目录或媒介。

  默认情况下,活动和联机归档日志保存在 SQLOGDIR 目录中。NEWLOGPATH 数据库配置参数确定了将在哪里存储未来的活动归档日志。要想使 NEWLOGPATH 参数生效,需要停用数据库(目的是关闭所有活动日志文件)。然后,重新激活数据库将导致在新路径中创建新日志文件,原来的归档日志将留在原来的路径中。

  当进行联机备份时,将记录所有的数据库事务。在完成联机备份之后,DB2 将强行关闭当前活动日志,并对其进行归档,如 图 2 所示:

  要防止脱机归档日志的单点故障,比如媒介失败,则应该使用日志镜像。MIRRORLOGPATH 是用来指定镜像路径的配置参数,它允许 DB2 将相同日志文件的第二份副本写入不同目录中。您需要重新激活数据库,以使 MIRRORLOGPATH 配置参数变得有效。

  如果将副本写入镜像日志路径时发生问题,那么 DB2 将在管理通知日志中写入消息,指出已经碰到错误。DB2 将继续把日志记录写入能工作的日志路径中。不需要同步日志路径。要确定哪个日志是活动的,哪些日志是归档的,请使用 DB2 命令 GET DB CFG 来查看“第一个活动日志文件”。该命令提供了目前活动的日志文件,因此被归档的日志将是那些比当前日志更早的日志。

  此外,诸如数据库、表空间或增量的备份的每个备份操作都将包括恢复历史文件(RHF)的一个副本。您可以使用历史文件中提供的信息,将整个数据库或数据库的一部分恢复到某个时间点。每个数据库都会创建一个恢复历史文件,并且在下列情况下会自动对该文件进行更新:

  备份数据库或表空间。
  恢复数据库或表空间。
  前滚数据库或表空间。
  创建表空间。
  修改表空间。
  休止表空间。
  重命名表空间。
  删除表空间。
  加载表。
  删除表。
  重组表。
  

0
相关文章