分享
 
 
 

DB2 LOAD命令中COPY NO/COPY的说明(1)

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

内容提要主要介绍 DB2 LOAD 命令所提供的 COPY NO/COPY YES/NONRECOVERABLE 选项,以及与之相关的注册表变量 DB2_LOAD_COPY_NO_OVERRIDE 的功能和使用方法等。当 DB2 的数据库启用了前滚恢复模式,即将日志由循环日志方式改为归档日志,以便用户在进行恢复操作时,可在恢复了数据库或表空间的备份后,再通过前滚归档日志中的事务,恢复数据库备份时间点之后提交的事务,最大程度的保护数据库的数据。而 DB2 的 LOAD 实用程序为实现快速导入数据的功能,除采用了通过直接向数据库中写入格式化的数据页装载数据,导入过程中不激活触发器,不会检查参考完整性和表检查约束当等方式外,还最小化了记录事务日志的操作。在 LOAD 的 LOAD、BUILD、DELETE 和 INDEX COPY 四个处理阶段中,仅在 DELETE 阶段记录对每个删除事件记日志,即只对每个违反唯一约束的行的删除操作记日志,因此整个 LOAD 操作仅记录了极少的日志。由于 LOAD 最小化了日志的记录,有因启用了前滚恢复的数据库在恢复在线备份时需要归档日志的特性,对于这种数据库的 LOAD 操作,为避免执行 LOAD 操作后,表在使用 ROLLFORWARD 命令前滚归档日志的过程中因缺少日志而被置为非正常状态,DB2 为 LOAD 命令提供了如下选项:·COPY NO(缺省)·COPY YES·NONREVERABLE为更清楚地说明这些选项的作用,这里将以举例的方式进行说明。而在开始操作之前,首先了解一下 DB2 备份操作所产生的映象文件的形式和命名特点:在 UNIX 环境下是文件的形式:Databasealias.Type.Instancename.Nodename.Catnodename.Timestamp.number在 Windows 环境下是子目录及文件的形式:

123456下一页

Databasealias.TypeInstancenameNode0000Catn0000yyyymmddhhmmss.number而其中的 Type 则因备份类型的不同而不同:0 -- 数据库全备份3 -- 表空间备份4 -- 由 LOAD 操作产生的备份1. 进行一次数据库的全备份:首先对已启用前滚恢复模式的 SAMPLE 数据库进行一次全备份:E:TEST>db2 backup db sample备份成功。此备份映像的时间戳记是:20051230174105这时看到在当前目录下产生了一个 SAMPLE.0 的子目录,表明产生的是一个数据库全备份。下面将对这些现象逐个予以举例说明:2. 关于 COPY NO:在 LOAD 操作结束时,将表所在的表空间置于“备份暂挂”状态,此时虽然其中的表可以进行 SELECT 操作,但不能进行 UPDATE 和 DELETE 操作。为使该表状态恢复正常,除去备份暂挂状态,必须手动对其表空间执行一个 BACKUP 命令。由于该选项为缺省选项,假如 LOAD 命令中未指明,则默认为使用该选项,如:E:TEST>db2 connect to sample

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

E:TEST>db2 list tablespaces

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统治理空间

内容 = 任何数据

状态 = 0x0020

具体解释:

备份暂挂

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

1

-----------

70

1 条记录已选择。

E:TEST>db2 update staff set id=335 where id=340DB21034E 该命令被当作 SQL 语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:

上一页123456下一页

SQL0290N 不答应存取表空间。 SQLSTATE=55039在手动对 USERSPACE1 表空间进行一次备份操作后,表空间状态将正常,再次尝试更新操作就会成功:E:TEST>db2 backup db sample tablespace (userspace1)备份成功。此备份映像的时间戳记是:20051230184841命令完成后可以在当前目录下看到产生了一个 SAMPLE.3 的子目录,表明产生的是一个表空间级的备份。E:TEST>db2 connect to sample

E:TEST>db2 list tablespaces

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统治理空间

内容 = 任何数据

状态 = 0x0000具体解释:正常而所产生这份关于表空间的备份可在数据库因前滚操作将表空间置为“复原暂挂”状态时用于将表空间状态恢复为正常,并恢复 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

SQL1271W 已恢复数据库 "SAMPLE",但在节点 "0"上有一个或多个表空间脱机

E:TEST>db2 connect to sample

E:TEST>db2 list tablespaces

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统治理空间

内容 = 任何数据

状态 = 0x0100

具体解释:

复原暂挂

此时可利用这一表空间级的备份进行恢复操作:

E:TEST>db2 restore db sample tablespace (userspace1) taken at 20051230184841

DB20000I RESTORE DATABASE 命令成功完成。

E:TEST>db2 connect to sample

E:TEST>db2 list tablespaces

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统治理空间

内容 = 任何数据

状态 = 0x0080

具体解释:

前滚暂挂

E:TEST>db2 rollforward db sample to end of logs and stop tablespace (userspace1)

前滚状态

输入数据库别名 = sample

节点数已返回状态 = 1

节点号 = 0

前滚状态 = 未暂挂

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

已处理的日志文件 = -

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

DB20000I ROLLFORWARD 命令成功完成。

E:TEST>db2 list tablespaces

:

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统治理空间

内容 = 任何数据

状态 = 0x0000

具体解释:

正常

:

E:TEST>db2 update staff set id=335 where id=340

上一页123456下一页

DB20000I SQL 命令成功完成。可见表空间状态已正常,表也可执行更新操作了。3. 关于 COPY YES:在 LOAD 操作结束时,DB2 自动对表所在的表空间进行一次备份操作,因而 LOAD 结束后,表所在的表空间不会再处于“备份暂挂”状态,而为“正常”状态。但由于要进行备份操作,所以这种 LOAD 操作的时间会较没有备份的长。如:E:TEST>db2 connect to sample

E:TEST>db2 load from staff.del of del insert into staff copy yes to .

E:TEST>db2 list tablespaces

:

表空间标识 = 2

名称 = USERSPACE1

类型 = 系统治理空间

内容 = 任何数据

状态 = 0x0000

具体解释:

正常

:

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

1

-----------

105

1 条记录已选择。此时可在当前目录下看到一个 SAMPLE.4 的子目录,表明产生的是一个由 LOAD 操作生成的备份,而这份备份将在数据库进行前滚恢复操作时用于重新创建 LOAD 操作对数据库的修改。如:E:TEST>db2 restore db sample taken at 20051230174105

DB20000I RESTORE DATABASE 命令成功完成。

前滚状态

输入数据库别名 = 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 条记录已选择。

上一页123456下一页

这表明在 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 20051230174105DB20000I 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

上一页123456下一页

这表明该表已不可操作,此时只有将表删除,重新构建,或使用 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 操作的表的可用性。

上一页123456

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有