自己整理的学习资料——DB2 V8数据库基础(二十五)

表状态

DB2 UDB Version 8 load 实用程序通过表状态(以及锁)来获取对表的访问,并在执行载入操作时维护数据库的一致性。即使载入操作发生了异常终止,表状态也将会被保持。您可以用 LOAD QUERY 命令(见图 3)确定特定表的状态。LOAD QUERY 命令在其运行时检查载入操作的状态,并返回表的状态。如果载入操作完成(或异常终止)了,那么该命令只返回表的状态。关于该命令和其他 DB2 命令的更多信息,请参阅 IBM DB2 Universal Database Command Reference

 

3. 可以使用 LOAD QUERY 命令来确定指定表的状态。

9524210_200810301145091.jpg

虽然在载入操作之前,从属的表空间不再是静默的( quiesce是一种持久性的锁),但是 Load in Progress表空间状态会在执行载入操作时阻止对从属表进行备份。

Load in Progress 表空间状态不同于 Load in Progress 表空间状态:所有的载入操作都使用 Load in Progress 表状态,但是指定 COPY NO 选项的载入操作(针对可恢复的数据库)还是使用 Load in Progress 表空间状态。

一个表可以同时处于几种状态之下。例如,如果将数据载入定义了表检查约束的表中,并指定 ALLOW READ ACCESS 选项,那么在执行载入操作期间,该表就处于 Check Pending Load in Progress Read Access Only 状态下。

3. 受支持的表状态

状态

描述

示例

Check Pending

如果在一个表上定义了表检查约束,但还未验证新数据与那些已定义约束的兼容性,那么该表就处于这种状态。例如,DB2 load 实用程序当开始在定义了表检查约束的表上执行载入操作时,就将表的状态设置为 Check Pending 状态。如果想使该表恢复为 Normal状态,则需要执行一条 SET INTEGRITY 语句。要想获得更多的信息,请参阅 约束

已知载入的输入文件 staff_data.del 拥有以下内容: 11,"Melnyk",20,"Sales",10,70000,15000:
connect to sample;
alter table staff add constraint max_salary check (100000 - salary >0);
load from staff_data.del of del insert into staff;
load query table staff;
LOAD QUERY
命令返回的信息显示,STAFF 表处于 Check Pending 状态。

Load Pending

如果在可提交数据之前,表上的正在执行的载入操作被异常终止,那么该表就处于这种状态。若要使该表恢复 Normal状态,则需要调用 load terminateload restart load replace 操作。

已知载入的输入文件 staffdata.del 拥有大量数据(例如,20000 条或更多记录),创建一个包含载入操作目标表的小型表空间,新建一个名为 NEWSTAFF 的表:
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c1' 256);
create table newstaff like staff in ts1;
load from staffdata.del of del insert into newstaff;
load query table newstaff;
load from staffdata.del of del terminate into newstaff;
load query table newstaff;
connect reset;
LOAD QUERY
命令返回的信息显示,NEWSTAFF 表处于 Load Pending 状态;在执行 load terminate 操作之后,该表就重新处于 Normal状态。

Load in Progress

这是一种只在执行载入操作期间才有效的临时状态。关于当载入操作失败或被中断时,如何解除表的 Load in Progress 状态的信息,请参阅 IBM DB2 Universal Database Data Movement Utilities Guide and Reference 中关于载入操作之后的暂挂状态的小节。还请参阅 Load in Progress 表空间状态

已知载入的输入文件 staffdata.del 拥有大量数据(例如,20000 条或更多记录):
update db cfg for sample using logretain recovery;
backup db sample;
connect to sample;
create table newstaff like staff;
load from staffdata.del of del insert into newstaff copy no;
connect reset;
在执行载入操作时,从另一会话执行下列脚本:
connect to sample;
load query table newstaff;
connect reset;
LOAD QUERY
命令返回的信息显示,NEWSTAFF 表处于 Load in Progress 状态。

Normal

如果表不是处于任何其他(异常的)表状态,那么它就处于 Normal 状态。Normal 状态是表被创建之后的初始状态。

connect to sample;
create table newstaff like staff;
load query table newstaff;
LOAD QUERY
命令返回的信息显示,NEWSTAFF 表处于 Normal 状态。

Not Load Restartable

当执行完前滚操作,接着出现一个失败的载入操作,而该操作未被成功地重新启动或者终止时,表就处于这种状态。该表还将处于 Load Pending状态。若要使该表恢复 Normal状态,则需要执行一条 LOAD TERMINATE 命令。

已知载入的输入文件 staffdata.del 拥有大量数据(例如,20000 条或更多记录):
update db cfg for sample using logretain recovery;
backup db sample;
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c1' 256);
create table newstaff like staff in ts1;
connect reset;
backup db sample;
该备份映像的时间戳为:20040629205935
connect to sample;
load from staffdata.del of del insert into newstaff copy yes to /home/melnyk/backups;
connect reset;
restore db sample taken at 20040629205935;
rollforward db sample to end of logs and stop;
connect to sample;
load query table newstaff;
connect reset;
LOAD QUERY
命令返回的信息显示,NEWSTAFF 表处于 Not Load Restartable Load Pending状态。
connect to sample;
load from staffdata.del of del terminate into newstaff copy yes to /home/melnyk/backups;
load query table newstaff;
connect reset;
LOAD QUERY
命令返回的信息显示,NEWSTAFF 表现在处于 Normal状态。

Read Access Only

在执行载入操作时,如果指定了 ALLOW READ ACCESS 选项,那么表就处于这种状态。Read Access Only 是一个临时状态,它允许其他应用程序和实用程序读访问在执行载入操作 之前就存在的数据。

已知载入的输入文件 staffdata.del 拥有大量数据(例如,20000 条或更多记录):
connect to sample;
export to st_data.del of del select * from staff;
create table newstaff like staff;
import from st_data.del of del insert into newstaff;
load from staffdata.del of del insert into newstaff allow read access;
在执行载入操作时,从另一会话执行下列脚本:
connect to sample;
load query table newstaff;
select * from newstaff;
connect reset;
LOAD QUERY
命令返回的信息显示,NEWSTAFF 表处于 Read Access Only Load in Progress状态。该查询返回 STAFF 表所导出的内容,以及在执行载入操作之前,就存在于 NEWSTAFF 表中的数据。

Unavailable

当前滚一个无法恢复的载入操作时,表就处于这种状态;这样的表只能被删除,或者从备份映像恢复它。

已知载入的输入文件 staff_data.del 拥有下列内容: 11,"Melnyk",20,"Sales",10,70000,15000:
update db cfg for sample using logretain recovery;
backup db sample;
该备份映像的时间戳为:20040629182012
connect to sample;
load from staff_data.del of del insert into staff nonrecoverable;
connect reset;
restore db sample taken at 20040629182012;
rollforward db sample to end of logs and stop;
connect to sample;
load query table staff;
connect reset;
LOAD QUERY
命令返回的信息显示,STAFF 表处于 Unavailable 状态。

fj.pngimage018.jpg

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

转载于:http://blog.itpub.net/9524210/viewspace-481943/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值