WEB开发网
开发学院数据库DB2 DB2 LOAD 工具使用技巧集合 阅读

DB2 LOAD 工具使用技巧集合

 2010-04-15 00:00:00 来源:WEB开发网   
核心提示: 清单 7. LOAD 命令执行状态>db2listutilitiesshowdetail标识=5类型=LOAD数据库名称=SAMPLE分区号=0描述=OFFLINELOADDELAUTOMATICINDEXINGINSERTCOPYNOYUAN.T1开始时间=2009-01-0510:44

清单 7. LOAD 命令执行状态

>db2 list utilities show detail 
标识 = 5 
类型 = LOAD 
数据库名称 = SAMPLE 
分区号 = 0 
描述 = OFFLINE LOAD DEL AUTOMATIC INDEXING INSERT COPY NO YUAN .T1 
开始时间 = 2009-01-05 10:44:57.203583 
状态 = 执行 
调用类型 = 用户 
进度监视: 阶段号 = 1 描述 = SETUP 总计工作 = 0 bytes 已完成的工作 = 0 bytes 
开始时间 = 2009-01-05 10:44:57.203592 
 阶段号 [ 当前 ] = 2 描述 = LOAD 总计工作 = 2174631 rows 
已完成的工作 = 1106547 rows 开始时间 = 2009-01-05 10:44:57.248663 

上面的输出中只有两个阶段,如果有目标表有索引存在的话还会有第三个阶段 -BUILD 阶段。评估正在执行着的 LOAD 工具的剩余时间主要通过比较“总计工作”和“已完成的工作”这个两个值大小和比例。

使用 LOAD 观察表的状态

我们知道,观察数据库的状态可以通过快照或 list db 命令,观察表空间的状态可以通过快照或 list tablespace 命令,而观察表的状态我们通常只知道快照可以反映表被访问的一些情况,而当表不可用的时候,需要获得表的故障状态时候却没有对应的 list 命令可以使用。

那么这种情况下,我们可以使用 LOAD QUERY 工具来实现。示例如下:

清单 8. 观察表的状态

C:\Program Files\IBM\SQLLIB\BIN>db2 "select * from t1" 
 
 DEPTNUMB DEPTNAME MANAGER DIVISION LOCATION 
 -------- -------------- ------- ---------- ------------- 
 SQL0668N 不允许对表 "YUAN.T1" 执行操作,原因码为 "3" 。 SQLSTATE=57016 
 C:\Program Files\IBM\SQLLIB\BIN>db2 load query table t1 
 SQL3501W 由于禁用数据库正向恢复,因此表所驻留的表空间将不被置于备份暂挂状态。 
 SQL3109N 实用程序正在开始从文件 "e:\t1.out" 装入数据。 
 SQL3500W 在时间 "2009-01-05 10:52:56.661277",实用程序在开始 "LOAD" 。 
 SQL3519W 开始装入一致点。输入记录数 = "0" 。 
 SQL3520W “装入一致点”成功。 
 SQL3005N 处理被中断。 
 SQL3532I Load 实用程序当前正处于 "LOAD" 阶段。 
读取行数 = 0 
跳过行数 = 0 
装入行数 = 0 
拒绝行数 = 0 
删除行数 = 0 
落实行数 = 0 
警告数 = 0 
表状态: 装入暂挂 

由此,我们可以判断,当前的表不能被访问,是由于处于“装入暂挂”的状态,那么我们可以通过 LOAD 工具将 LOAD 执行完 (restart) 或终止 (terminate) 将这个故障处理掉再访问这个表。

使用 LOAD 快速的清空一张表

在不需要一张表中的数据的时候,我需要将其清空。而做这个工作我们可以选择多种办法:

删除表中数据:delete from tablename

不记 log 删除表中数据: alter table tabname activate not logged initially;delete from tablename

修改表不记录 log 方式:alter table tabname activate not logged with empty table

LOAD 的 replace 方式:load from empfile of del replace into tabname

注:文件 empfile 为空

“ 1 ”的方式可用性非常差,会消耗大量的时间和 log 空间,一般不使用。除非需要有选择的删除数据的时候。

“ 2 ”的方式可以使用,但是过于麻烦,尤其还要注意两条语句必须在同一事务中执行。

“ 3 ”的方式是一种较好的快速清空数据表的方式。

“ 4 ”的方式也是一种较好的快速清空数据表的方式,而且对于“ 3 ”来说,过程更加可控,因为 load 支持 restart 和 terminate 等故障控制选项。

所以推荐使用“ 4 ”的方式来快速的清空一张表。

上一页  1 2 3 4 5 6 

Tags:DB LOAD 工具

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接