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

虽然在载入操作之前,从属的表空间不再是静默的( 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 terminate、load 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 状态。 |
image018.jpg
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9524210/viewspace-481943/
,如需转载,请注明出处,否则将追究法律责任。