首页 > 代码库 > db2 前滚会话

db2 前滚会话

前滚会话 - CLP 示例

ROLLFORWARD DATABASE 命令允许每次指定多个操作,各个操作由关键字 AND 隔开。例如,要前滚至日志末尾,然后完成,可将下列独立的命令:

      db2 rollforward db sample to end of logs
      db2 rollforward db sample complete

组合为:

      db2 rollforward db sample to end of logs and complete

虽然这两种方法是等效的,但建议您分两个步骤来完成此类操作。在停止前滚操作前验证它是否具有预期的进度,以免丢失任何日志,这一点很重要。

如果前滚命令遇到错误,前滚操作就无法完成。在此情况下,将返回该错误,这样,您就能够修正该错误并重新发出以上命令。但是,如果无法修正该错误,那么可以通过发出以下命令强制前滚完成:

      db2 rollforward db sample complete

此命令使数据库联机并复原到发生故障前日志点。

示例 2

将数据库前滚至日志末尾(已复原了两个表空间):

      db2 rollforward db sample to end of logs
      db2 rollforward db sample to end of logs and stop

这两个语句是等效的。不需要 AND STOP 或 AND COMPLETE 表空间就可以前滚恢复至日志末尾。不需要表空间名称。如果未指定,将包括所有需要前滚恢复的表空间。如果将只前滚这些表空间的一个子集,那么必须指定它们的名称。

示例 3

复原了 3 个表空间后,将其中一个前滚至日志末尾,另两个前滚到某时间点,所有操作都要联机执行:

      db2 rollforward db sample to end of logs tablespace(TBS1) online
   db2 rollforward db sample to 1998-04-03-14.21.56 and stop
            tablespace(TBS2, TBS3) online

应注意,两个前滚操作不能并发运行。只有在成功地完成了第一个前滚操作后,才能调用第二个命令。

示例 4

复原数据库后,前滚到某时间点,使用 OVERFLOW LOG PATH 来指定用户出口用来保存已归档日志的目录:

   db2 rollforward db sample to 1998-04-03-14.21.56 and stop
            overflow log path (/logs)

示例 5

在以下示例中,有一个称为 sample 的数据库。备份该数据库,在备份映像中包含恢复日志;复原该数据库;然后,将该数据库前滚到备份时间戳记末尾。

备份该数据库,在备份映像中包含恢复日志:

   db2 backup db sample online include logs

使用备份映像复原该数据库:

      db2 restore db sample

将该数据库前滚到备份时间戳记末尾:

   db2 rollforward db sample to end of backup

示例 6(分区数据库环境)

有三个数据库分区:0、1 和 2。在所有数据库分区上定义表空间 TBS1,在数据库分区 0 和 2 上定义表空间 TBS2。在数据库分区 1 上复原了数据库,并在数据库分区 0 和 2 上复原了 TBS1 之后,在数据库分区 1 上前滚数据库:

      db2 rollforward db sample to end of logs and stop

这会返回警告 SQL1271(已恢复数据库,但数据库分区 0 和 2 上的一个或多个表空间处于脱机状态)。

   db2 rollforward db sample to end of logs

此命令在数据库分区 0 和 2 上前滚 TBS1。在此情况下,子句 TABLESPACE(TBS1) 是可选的。

示例 7(分区数据库环境)

在以下示例中,有一个称为 sample 的分区数据库。使用单系统视图备份备份所有数据库分区;在所有数据库分区上复原该数据库;将该数据库前滚到备份时间戳记末尾。

执行单系统视图 (SSV) 备份:

   db2 backup db sample on all nodes online include logs

在所有数据库分区上复原该数据库:

   db2_all "db2 restore db sample taken at 1998-04-03-14.21.56"

将该数据库前滚到备份时间戳记末尾:

   db2 rollforward db sample to end of backup on all nodes

示例 8(分区数据库环境)

在以下示例中,有一个称为 sample 的分区数据库。使用 db2_all,通过一个命令备份所有数据库分区;在所有数据库分区上复原该数据库;并将该数据库前滚到备份时间戳记末尾。

使用 db2_all,通过一个命令备份所有数据库分区:

   db2_all "db2 backup db sample include logs to /shared/dir/"

在所有数据库分区上复原该数据库:

   db2_all "db2 restore db sample from /shared/dir/"

将该数据库前滚到备份时间戳记末尾:

   db2 rollforward db sample to end of backup on all nodes

示例 9(分区数据库环境)

只在数据库分区 0 和 2 上复原表空间 TBS1 之后,在数据库分区 0 和 2 上前滚 TBS1:

      db2 rollforward db sample to end of logs

忽略数据库分区 1。

   db2 rollforward db sample to end of logs tablespace(TBS1)

此命令失败,因为 TBS1 未对在数据库分区 1 上进行前滚恢复作好准备。报告 SQL4906N。

   db2 rollforward db sample to end of logs on
            dbpartitionnums (0, 2) tablespace(TBS1)

成功完成。

   db2 rollforward db sample to 1998-04-03-14.21.56 and stop
            tablespace(TBS1)

此命令失败,因为 TBS1 未对在数据库分区 1 上进行前滚恢复做好准备;必须将所有段一起前滚。

注: 在将表空间前滚到某时间点之后,将不接受 dbpartitionnum 子句。前滚操作必须在表空间所在的所有数据库分区上进行。

在数据库分区 1 上复原 TBS1 后:

   db2 rollforward db sample to 1998-04-03-14.21.56 and stop
            tablespace(TBS1)

成功完成。

示例 10(分区数据库环境)

在所有数据库分区上复原表空间后前滚至 PIT2,但不指定 AND STOP。前滚操作仍在进行中。取消并前滚至 PIT1:

   db2 rollforward db sample to pit2 tablespace(TBS1)
      db2 rollforward db sample cancel tablespace(TBS1)

  ** restore TBS1 on all dbpartitionnums **

      db2 rollforward db sample to pit1 tablespace(TBS1)
      db2 rollforward db sample stop tablespace(TBS1)

示例 11(分区数据库环境)

前滚恢复 db2nodes.cfg 文件中列示的 8 个数据库分区(3 至 10)上的表空间:

      db2 rollforward database dwtest to end of logs tablespace (tssprodt)

前滚恢复至日志末尾(而不是时间点)的操作成功完成。不必指定表空间所在的数据库分区。实用程序缺省到 db2nodes.cfg 文件。

示例 12(分区数据库环境)

前滚恢复单一数据库分区数据库分区组(在数据库分区 6 上)上的 6 个小表空间:

   db2 rollforward database dwtest to end of logs on dbpartitionnum (6)
            tablespace(tsstore, tssbuyer, tsstime, tsswhse, tsslscat, tssvendor)

前滚恢复至日志末尾(而不是时间点)的操作成功完成。

示例 13(分区表 - 在所有数据分区上前滚至日志末尾)

使用表空间 tbsp1、tbsp2 和 tbsp3 创建了分区表,索引在 tbsp0 中。后来,用户对 tbsp4 中的表添加了数据分区,并从 tbsp5 中的表连接了数据分区。可以将所有表空间前滚至日志末尾。

   db2 rollforward db PBARDB to END OF LOGS and stop
           tablespace(tbsp0, tbsp1, tbsp2, tbsp3, tbsp4, tbsp5)

成功完成。

示例 14(分区表 - 在一个表空间上前滚至日志末尾)

最初使用表空间 tbsp1、tbsp2 和 tbsp3 创建了分区表,索引在 tbsp0 中。后来,用户对 tbsp4 中的表添加了数据分区,并从 tbsp5 中的表连接了数据分区。表空间 tbsp4 损坏并要求复原和前滚至日志末尾。

   db2 rollforward db PBARDB to END OF LOGS and stop tablespace(tbsp4)

成功完成。

示例 15(分区表 - 在所有数据分区上前滚到时间点,这些数据分区包括那些已添加、已连接、已拆离或带索引的数据分区)

使用表空间 tbsp1、tbsp2 和 tbsp3 创建了分区表,索引在 tbsp0 中。后来,用户对 tbsp4 中的表添加了数据分区,从 tbsp5 中的表连接了数据分区,并从 tbsp1 拆离了数据分区。用户对分区表使用的所有表空间(包括 INDEX IN 子句中指定的那些表空间)执行前滚到 PIT 操作。

   db2 rollforward db PBARDB to 2005-08-05-05.58.53 and stop 
           tablespace(tbsp0, tbsp1, tbsp2, tbsp3, tbsp4, tbsp5)

成功完成。

示例 16(分区表 - 在一小部分表空间上前滚到 PIT)

使用三个表空间(tbsp1、tbsp2 和 tbsp3)创建了分区表。后来,用户从 tbsp3 中拆离了所有数据分区。只允许在 tbsp1 和 tbsp2 上前滚到 PIT。

   db2 rollforward db PBARDB to 2005-08-05-06.02.42 and stop 
            tablespace( tbsp1, tbsp2)


本文出自 “arvin_0213” 博客,请务必保留此出处http://arvin0213.blog.51cto.com/2455782/1929595

db2 前滚会话