ITPub博客

首页 > 数据库 > 数据库开发技术 > [原]DB2归档模式及与DB2复制相关问题

[原]DB2归档模式及与DB2复制相关问题

原创 数据库开发技术 作者:jarrygao 时间:2007-01-23 14:37:02 0 删除 编辑

该文简单介绍了DB2归档模式,并说明了如何设置归档模式及其与DB2复制相关的问题。

[@more@]

1. DB2日志简介

1.1. 日志类型

1.1.1. 活动日志(ACTIVE LOG)

功能类似于ORACLE的online redo log, 该日志包含尚未提交或回滚的事务单元的相关信息,以及已提交但尚未写入数据库文件的事务的信息。

具体又分两种

l 主日志 数量由参数LOGPRIMARY决定,预先分配

l 从日志 当主日志不够时,临时分配最多LOGSECOND数目个从日志

1.1.2. 存档日志(ARCHIVED LOG)

存在于归档模式。

1.1.2.1. 联机存档日志(ONLINE ARCHIVED LOG)

它们是驻留在数据库活动日志目录(“online”)中、普通数据库活动不再需要的日志文件。

1.1.2.2. 脱机存档日志(OFFLINE ARCHIVED LOG)

它们是已经从数据库日志目录移到脱机存储位置(如备份服务器)、普通数据库活动不需要的日志文件

这两者的不同仅在于联机归档日志存在于活动日志目录下,而脱机的不是

1.2. 日志模式

1.2.1. 循环日志模式

如图所示,预先分配好的若干个主日志循环利用,当不够的时候,临时申请若干个从日志

1.2.2. 归档日志模式

当开启归档模式后,日志将不会被覆盖,而是不停新产生。如果不设LOGARCHMETH1参数的话,归档日志将仍然待原目录,就成为联机归档日志。如下图:

而如果,设置LOGARCHMETH1参数到另外一个目录的话,归档后的日志将被自动移动到新目录下,即被称为脱机归档日志,如下图:

2. DB2归档模式设定

1. 修改参数LOGRETAIN为recovery (缺省为N)

Db2 update db cfg for TEST using logretain recovery

2. 将数据库做一次全备

Db2 BACKUP DATABASE TEST TO "C:test"

3. 修改USER_EXIT参数

a) 可以通过图形界面;控制中心-》数据库》DBNAME》右键》配置数据库记录向导

b) 通过命令行

Db2 UPDATE DB CFG FOR TEST USING logarchmeth1 "DISK:C:testMYLOG"

这样日志就被自动归档到C:testMYLOG目录下了。

3. DB2日志跟ORACLE日志的比较

有两个比较大的不同点:

1. DB2要求活动日志被覆盖或者归档之前必须保证里面的事务已经commit或者rollback了,也就是说,如果一个事务太大,超过了主日志加从日志的和的话,将会报日志满错误。而ORACLE没这个要求,只可能在归档模式时,空间满了才会报日志满错误。

2. 对于归档模式而言,DB2的活动日志总是新分配的,不象oracle,在线日志总是重用的

4. 与复制相关的问题

1. 如果DB2启用复制并且作为数据源后,必须使用归档日志模式,DB2复制是从日志或者归档日志里捕获需要的表的修改信息的。

2. 如果复制进程中途断掉,经过一段时间再启用时,这时可能相应的表修改信息已经被归档了,这时db2将从归档日志(可能联机归档日志,也可能是脱机归档日志)里面将信息去找。

3. 这就涉及到一个问题,归档日志不会无限期的放到归档目录下,如何设定归档日志存放时间呢?如果时间过短,复制的capture进程可能会发生找不到相应日志,从而失败的问题。存放时间太长的话,需要的归档空间又太多。这就需要根据实际情况,两方面均衡的考虑了。

4. 如果真的发生了找不到日志的情况,可以有两种方法

a) 将日志从别处拷回

b) 将复制完全刷新

对单向复制而言,复制完全刷新这个选项就已经够了。但对双向复制而言,完全刷新的话,意味着从节点自上次刷新之后的修改就完全丢失了,所以最好将日志拷回来。

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

请登录后发表评论 登录
全部评论
  • 博文量
    5
  • 访问量
    7457