Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103688150
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-13 08:16:07

     来源:赛迪网    作者:晨曦

E:\TEST>db2 restore db sample taken at 20051230174105

DB20000I RESTORE DATABASE 命令成功完成。

E:\TEST>db2 rollforward db sample to end of logs and stop

前滚状态

输入数据库别名 = sample

节点数已返回状态 = 1

节点号 = 0

前滚状态 = 未暂挂

下一个要读取的日志文件 =

已处理的日志文件 = S0000002.LOG - S0000003.LOG

上次落实的事务 = 2005-12-30-11.48.26.000000

DB20000I ROLLFORWARD 命令成功完成。

E:\TEST>db2 connect to sample

E:\TEST>db2 list tablespaces

:

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统管理空间

内容 = 任何数据

状态 = 0x0000

详细解释:

正常

:

E:\TEST>db2 select count(*) from staff

1

-----------

105

1 条记录已选择。

这表明在 SAMPLE.4 下的备份被用于了前滚恢复操作,而重新创建了 LOAD 操作对数据库插入的记录。

4. 关于 NONRECOVERABLE:

该选项会将 LOAD 操作标志为不可恢复,即数据库不能通过后续的前滚操作而被恢复。LOAD 操作结束后,数据库既不会处于“备份暂挂”状态,也不会产生任何的备份。 E:\TEST>db2 connect to sample

E:\TEST>db2 load from staff.del of del insert into staff nonrecoverable

E:\TEST>db2 list tablespaces

:

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统管理空间

内容 = 任何数据

状态 = 0x0000

详细解释:

正常

:

虽然 LOAD 之后表空间和表的状态都正常,但如果今后需要执行前滚命令恢复数据库时,前滚操作将跳过 LOAD 事务的处 理,而将 LOAD 的表标记为无效,是对表的任何操作都不能进行。如: E:\TEST>db2 restore db sample taken at 20051230174105

DB20000I RESTORE DATABASE 命令成功完成。

E:\TEST>db2 rollforward db sample to end of logs and stop

前滚状态

输入数据库别名 = sample

节点数已返回状态 = 1

节点号 = 0

前滚状态 = 未暂挂

下一个要读取的日志文件 =

已处理的日志文件 = S0000002.LOG - S0000003.LOG

上次落实的事务 = 2005-12-30-12.19.55.000000

DB20000I ROLLFORWARD 命令成功完成。

E:\>db2 connect to sample

E:\TEST>db2 list tablespaces

:

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统管理空间

内容 = 任何数据

状态 = 0x0000

详细解释:

正常

:

E:\>db2 select * from staff

ID NAME DEPT JOB YEARS SALARY COMM

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

SQL1477N 不能存取表 "LIWENLI.STAFF"。 SQLSTATE=55019

这表明该表已不可操作,此时只有将表删除,重新构建,或使用 LOAD 操作时间点之后所做的数据库全备份或表空间备份来恢复该表。

5. 关于注册表变量 DB2_LOAD_COPY_NO_OVERRIDE 的介绍:

另外 DB2 还提供了一个注册表变量:DB2_LOAD_COPY_NO_OVERRIDE,可将 LOAD 的缺省选项 COPY NO 设置为 NONRECOVERABLE 或 COPY YES。具体使用方法举例为:

设置为 COPY YES 的方法: E:\TEST>db2set DB2_LOAD_COPY_NO_OVERRIDE="COPY YES TO E:\TEST"

E:\TEST>db2 terminate

E:\TEST>db2set

DB2_LOAD_COPY_NO_OVERRIDE=COPY YES TO E:\TEST

:

E:\TEST>db2 load from staff.del of del insert into staff

SQL27966W DB2_LOAD_COPY_NO_OVERRIDE 注册表变量值 "COPY YES TO E:\TEST" 将覆盖在 Load 中指定的 COPY NO 参数。

:

:

设置为 NONRECOVERABLE 的方法: E:\TEST>db2set DB2_LOAD_COPY_NO_OVERRIDE=NONRECOVERABLE

E:\TEST>db2 terminate

E:\TEST>db2set

DB2_LOAD_COPY_NO_OVERRIDE=NONRECOVERABLE

E:\TEST>db2 load from staff.del of del insert into staff

SQL27966W DB2_LOAD_COPY_NO_OVERRIDE 注册表变量值 "NONRECOVERABLE" 将覆盖在Load 中指定的 COPY NO 参数。

通过上述对 LOAD 的 COPY NO,COPY YES 和 NONRECOVERABLE 参数,以及 DB2 注册表变量 DB2_LOAD_COPY_NO_OVERRIDE 的详细和举例说明,到此我们已经掌握了它们的功能和使用方法。由于 LOAD 操作几乎不记日志的特性,在对启用了前滚恢复的数据库实现 LOAD 操作时应注意从中选择适当的选项,以保证执行了 LOAD 操作的表的可用性。

阅读(535) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~