管理数据库日志时,请考虑以下事项:
在复原数据库之后(执行或未执行前滚恢复),DB2 数据库管理器复用日志文件名。数据库管理器会确保在前滚恢复期间不会应用错误的日志。在复原操作后,如果 DB2 数据库管理器复用日志文件名,那么将新的日志文件归档到独立的目录,以便可以归档多个同名的日志文件。日志文件的位置记录在恢复历史记录文件中,以便在前滚恢复期间应用这些位置记录。必须确保前滚恢复可以找到正确的日志。
前滚操作成功完成后,使用的最后一个日志会截断,而日志记录会从下一个按顺序的日志开始。日志路径目录中,序号大于用于前滚恢复的最后一个日志的任何日志都将复用。截断的日志中,跟在截断点后的任何条目都将用 0 覆盖。确保在调用 ROLLFORWARD 实用程序前建立了日志的副本。(可以调用用户出口程序将日志复制到另一位置。)
如果在恢复之后创建了新的日志序列,那么旧日志序列中的所有表空间备份映像都是无效的。这通常是在复原时识别的,但是如果在数据库复原操作之后立即执行表空间复原操作,那么 RESTORE 实用程序无法识别旧日志序列上的表空间备份映像。在实际上前滚了数据库前,将使用的日志序列都是未知的。如果表空间在旧日志序列上,它一定会由表空间前滚操作“捕获”。使用无效备份映像的复原操作可能会成功完成,但该表空间的表空间前滚操作将失败,而表空间将仍处于复原暂挂状态。
例如,假设一个表空间级的备份操作“备份 3”在顶级日志序列的 S0000013.LOG 和 S0000014.LOG 之间完成(请参阅图 1)。如果要使用数据库级别的备份映像“备份 2”进行复原和前滚,您将需要前滚 S0000012.LOG。然后,可以继续前滚到顶端日志序列或(较新的)底端日志序列。如果前滚底端日志序列,将不能使用表空间级别的备份映像“备份 3”来执行表空间复原和前滚恢复。
要使用表空间级别的备份映像“备份 3”完成至日志末尾的表空间前滚操作,需要复原数据库级别的备份映像“备份 2”,然后使用顶端日志序列前滚。一旦复原了表空间级的备份映像“备份 3”,就可以启动至日志末尾的前滚操作。
