ITPub博客

首页 > Linux操作系统 > Linux操作系统 > db2 前滚最小恢复时间和时间戳问题

db2 前滚最小恢复时间和时间戳问题

原创 Linux操作系统 作者:keeptrying 时间:2012-11-30 10:13:07 0 删除 编辑

前滚的最小恢复时间

 

该时间是系统目录表对表空间或其中表的最后一次更新操作的时间戳记,也就是任何rollforward命令要成功执行必须前滚的一个最小的时间点。这个最小的时间点可以确保表空间和日志与系统目录表中的信息一致。

当对表空间或表空间中的表运行DDL语句时,最小时间点将被更新。

考虑下面这个例子:

  1. 假设在时间 t1 上您做了一个完整数据库备份,其中包括表空间 mytbls1。
  2. 在时间 t2 上,您在表空间 mytbls1 中创建了表 myTable。这将为表空间 mytbs1 到 t2 的恢复设置最小时间点。
  3. 在时间 t3 上,您决定使用 t1 时做的完整数据库备份只恢复表空间 mytbls1。
  4. 恢复完成之后,表空间 mytbls1 将被置于 rollforward pending 状态。如果您可以前滚到最小时间点之前的一个时间点上,那么表空间 mytbls1 中将不包括表 myTable;然而,系统编目却说这个表的确在 mytbls1 中。为了避免出现这样的不一致,当您恢复一个表空间时,DB2 将强制使您至少前滚到最小时间点上。

 

使用两种方法确定一个表空间的最小恢复时间:

l     list tablespaces show detail

l     get snapshot for tablespace on db_name.

 

如:

db2 => list tablespaces show detail

…

最小恢复时间                            = 2012-11-29-07.00.45.000000

…

 

db2 => get snapshot for tablespaces on test

…

最小恢复时间                            = 2012-11-29 07:00:45.000000

 

 

此外,SNAPSHOT_TBS_CFG表函数所返回的表的MIN_RECOVERY_TIME字段中的值也为最小恢复时间。例如:

db2 => select substr(tablespace_name,1,15) as tablespace_name,min_recovery_time from table

 (snapshot_tbs_cfg('TEST',-1))

 

TABLESPACE_NAME MIN_RECOVERY_TIME

--------------- --------------------------

SYSCATSPACE     -

TEMPSPACE1      -

USERSPACE1      -

SYSTOOLSPACE    -

TEST            2012-11-29-15.00.45.000000

SYSTOOLSTMPSPAC -

 

  6 条记录已选择。

 

这种方法获得的最小恢复时间与前两种不同。前两种方法返回的时间戳使用的时UTC(Coordinated Universal Time,也为GMT),即标准世界时,与“格林威治时间”是一样的,使用此计时方式不用考虑不同时区的问题。而后SNAPSHOT_TBS_CFG表函数返回的时间戳使用的是本机所设时区的本地时间。两种计时方式都可用于DB2前滚命令中的前滚时间戳参数,缺省情况下使用的是UTC方式,如果要使用本地时间戳记,必须在时间戳后加上USING LOCAL TIME选项。

可通过专用寄存器CURRENT TIMEZONE返回本地时间与UTC时间之间的差:

db2 => values(CURRENT TIMEZONE)

 

1

--------

  80000.

这表示它们之间的时差为+8小时,即UTC时间加上8小时即为本地时间

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25744374/viewspace-750311/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: DB2日志原理
下一篇: DB2备份恢复测试
请登录后发表评论 登录
全部评论

注册时间:2011-04-25

  • 博文量
    130
  • 访问量
    1031769