归档数据库备份使用include logs,恢复时发现包含的日志并不完整是怎么回事?

shenhai800 2010-09-15 06:01:56
今天使用作如下操作:
1、backup db dbname online include logs,
2、restore db dbname logtarget e:\logtemp __释放所含日志文件
3、rollforward db dbname to end of logs overflow log path e:\logtemp

执行第三步时报如下错误:
SQL1268N 由于检索节点 "0" 上的数据库 "D2" 的日志文件 "S0000003.LOG"
时发生错误 "1",前滚恢复停止。

现象:
1、检查发现执行第二步后,e:\logtemp目录下只有一个日志文件"S0000003.LOG"
2、当我手工将原日志文件中的"S0000004.LOG""S0000005.LOG""S0000006.LOG"都放到e:\logtemp目录下时,
再执行第三步rollforward......就可以成功了。

疑问:
1、归档数据库备份时,include logs包含的日志文件难道没完全包含进去吗?
2、那么include logs又有什么意义?
3、又如何知道"S0000003.LOG"之外还需要拷贝那几个日志文件?

db2版本是:"DB2 v9.7.0.441"、"s090521" 和 "NT3297",修订包为 "0"。
谢谢了。
...全文
456 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
周锋 2012-03-11
  • 打赏
  • 举报
回复
12.
在“选择页”窗格中,单击“选项”。

13.
可以通过单击以下选项之一来选择“覆盖介质”选项:

备份到现有介质集

对于此选项,请单击“追加到现有备份集”或“覆盖所有现有备份集”。有关详细信息,请参阅追加到现有备份集和覆盖备份集。

或者选择“检查介质集名称和备份集过期时间”,以使备份操作对介质集和备份集的过期日期和时间进行验证。

或者在“介质集名称”文本框中输入名称。如果没有指定名称,将使用空白名称创建介质集。如果指定了介质集名称,将检查介质(磁带或磁盘),以确定实际名称是否与此处输入的名称匹配。

如果将介质名称保留空白,并选中该框以便与介质进行核对,则只有当介质上的介质名称也是空白时才能成功。


备份到新介质集并清除所有现有备份集

对于该选项,请在“新建介质集名称”文本框中输入名称,并在“新建介质集说明”文本框中描述介质集(可选)。有关详细信息,请参阅创建新媒体集。


14.
或者,在“可靠性”部分中,选中:

完成后验证备份。


“写入介质前检查校验和”和“出现校验和错误时继续”(可选)。有关校验和的信息,请参阅在备份和还原期间检测和处理媒体错误。


15.
在“事务日志”部分,选中“备份日志尾部,并使数据库处于还原状态”。

这相当于指定以下 BACKUPTransact-SQL 语句:

BACKUP LOG database_name TO <backup_device> WITH NORECOVERY

周锋 2012-03-11
  • 打赏
  • 举报
回复
数据库备份时,很容易出现,日志尾部没有备份的问题,这里边的工作机制我就不知道了,但是还原数据库时可以在选项里选择,覆盖原有的数据库,这样就恢复成功了,我想可能是,日志尾部一些没用的东西在备份时,没有备份,到还原时,源数据库有这些,所以就恢复不成了,使用覆盖就不存在这种情况了
zhaojianmi1 2010-09-25
  • 打赏
  • 举报
回复
C:\Documents and Settings\db2admin>db2 create db tt on d:\
DB20000I CREATE DATABASE命令成功完成。


C:\Documents and Settings\db2admin>db2 connect to tt

数据库连接信息

数据库服务器 = DB2/NT 9.1.0
SQL 授权标识 = DB2ADMIN
本地数据库别名 = TT


C:\Documents and Settings\db2admin>db2 backup db tt online to d:\db2 compress in
clude logs

备份成功。此备份映像的时间戳记是:20100429104317


C:\Documents and Settings\db2admin>db2 restore db tt from d:\db2 taken at 201004
29104317 logtarget d:\db2
SQL2539W 警告!正在复原至与备份映像数据库相同的现有数据库。数据库文件将被删除。


要继续吗?(y/n) y
DB20000I RESTORE DATABASE命令成功完成。


C:\Documents and Settings\db2admin>db2 rollforward db tt to end of logs and stop
overflow log path (d:\db2)

前滚状态

输入数据库别名 = tt
节点数已返回状态 = 1

节点号 = 0
前滚状态 = 未暂挂
下一个要读取的日志文件 =
已处理的日志文件 = S0000003.LOG - S0000003.LOG
上次落实的事务 = 2010-04-29-14.25.37.000000 Local

DB20000I ROLLFORWARD命令成功完成。
zhaojianmi1 2010-09-25
  • 打赏
  • 举报
回复
给你个例子
zhaojianmi1 2010-09-25
  • 打赏
  • 举报
回复
db2 restore db tt from d:\db2 taken at 20100429104317 logtarget d:\db2
db2 rollforward db tt to end of logs and stop overflow log path (d:\db2)
你在前滚是少了stop关键字!!!
xing_6 2010-09-19
  • 打赏
  • 举报
回复
你包含的日志文件应该是截止到备份时点已经落实了的事务日志文件, 之后生成的事务日志是不包括在内的,如,S0000004.LOG,S0000005.LOG,S0000006.LOG 这几个日志文件应该是后来生成的,另外一台机器上并没有。恢复时可以加个时间点,指定到比备份的时间戳稍靠后一些,事务日志里面就应该包含相应的信息了。
liyan93834183 2010-09-18
  • 打赏
  • 举报
回复
关注一下
shenhai800 2010-09-17
  • 打赏
  • 举报
回复
自己顶一下,
这种应该不属于特殊情况,难道大家都没有遇到过?
shenhai800 2010-09-16
  • 打赏
  • 举报
回复
补充:
"备份镜像路径"指的是不是数据库的备份文件呀?我是在windows上做的,当前操作路径已经
切换到备份文件路径了,这点没有问题。
shenhai800 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mr_bean 的回复:]

include logs就包含所有日志
第二部就要把备份中的日志提取出来到logtemp 可能没有指定备份镜像路径 所以无法提取
[/Quote]
"备份镜像路径"是什么概念?帮忙解释一下。
另外,我若是从A机器将数据库在线备份,然后在B机做上述步骤恢复数据库,又需要增加哪些操作呢?
Mr_Bean 2010-09-15
  • 打赏
  • 举报
回复
include logs就包含所有日志
第二部就要把备份中的日志提取出来到logtemp 可能没有指定备份镜像路径 所以无法提取
Mr_Bean 2010-09-15
  • 打赏
  • 举报
回复
db2 rollforward db $db to end of logs,操作完成后所有在数据库备份后写的日志文件都会前滚
步骤都没错
似乎第二步restore的时候没有指定镜像所在目录,也许就是此时无法从备份当中提取日志文件
造成第三部无法执行

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧