设为首页 收藏本站
查看: 1126|回复: 0

[经验分享] Monitor DB2 Load & Import

[复制链接]

尚未签到

发表于 2016-11-17 10:06:59 | 显示全部楼层 |阅读模式
    在 DB2 UDB 中,通过使用 IMPORT 和 LOAD 工具,用户可将一个符合 DB2 所支持的导入文件格式(包括 ASC,DEL,PC/IXF 和 WSF(不为 LOAD 所支持)的外部文件中的数据导入到 DB2 的数据库中。如果导出的表非常大,用户导入数据的过程会持续一段时间,此时,用户可能需要对导入过程进行监控,如查询已导入表中记录有多少行等,以便估计完成这一过程大概还需要多长时间。本文主要介绍一下分别对 LOAD 和 IMPORT 命令执行过程进行监控的方法。
1. 对 LOAD 命令进行实时监控查询:
    对于使用 LOAD 命令的用户,DB2 提供了 LOAD QUERY 的命令。在开始 LOAD 操作的过程中,用户只需在一个 DB2 命令行处理器中使用 LOAD QUERY 命令便可在输出的信息中查询到已导入表中的记录的行数。以下是一个使用的实例:

1)发出 LOAD 命令,将 INS.DEL 文件中的 110800 条记录导入到 TEST 表中:
db2 load from ins.del of del insert into test
                这一导入过程完成后,会在屏幕上输出如下信息:

SQL3501W  The table space(s) in which the table resides will not be placed in
backup pending state since forward recovery is disabled for the database.

SQL3109N  The utility is beginning to load data from file "D: mpins.del".

SQL3500W  The utility is beginning the "LOAD" phase at time "03/18/2003
11:32:02.410655".   <== LOAD 操作开始的时间点

SQL3519W  Begin Load Consistency Point. Input record count = "0".

SQL3520W  Load Consistency Point was successful.

SQL3110N  The utility has completed processing.  "110800" rows were read from
the input file.

SQL3519W  Begin Load Consistency Point. Input record count = "110800".

SQL3520W  Load Consistency Point was successful.

SQL3515W  The utility has finished the "LOAD" phase at time "03/18/2003
11:32:05.165435".  <== LOAD 操作结束的时间点


Number of rows read         = 110800
Number of rows skipped      = 0
Number of rows loaded       = 110800  <== LOAD 操作正常结束后共导入的记录总数
Number of rows rejected     = 0
Number of rows deleted      = 0
Number of rows committed    = 110800  <== 提交的导入记录总数


2)在 LOAD 进行的过程中(时间介于 11:32:02.410655 至 11:32:05.165435 之间),于一个 DB2 CLP 下启动关于 LOAD 查询的命令,并将输出信息定向到文件 LdOutput 中:

db2 load query table test to LdOutput

3)待 LOAD QUERY 命令执行结束后,打开命令所产生的输出文件 LdOutput,其中内容如下:

SQL3501W  The table space(s) in which the table resides will not be placed in
backup pending state since forward recovery is disabled for the database.

SQL3109N  The utility is beginning to load data from file "D: mpins.del".

SQL3500W  The utility is beginning the "LOAD" phase at time "03/18/2003
11:32:02.410656".  <== LOAD 查询操作开始的时间点

SQL3519W  Begin Load Consistency Point. Input record count = "0".

SQL3520W  Load Consistency Point was successful.

SQL3532I  The Load utility is currently in the "LOAD" phase.


Number of rows read         = 8192
Number of rows skipped      = 0
Number of rows loaded       = 8192  <== 在 LOAD QUERY 命令发出的时间点上已导入 TEST 表中的记录的行数
Number of rows rejected     = 0
Number of rows deleted      = 0
Number of rows committed    = 0
Number of warnings          = 0


2. 对 IMPORT 命令进行实时监控查询:

    与 LOAD 命令不同,IMPORT 没有类似 LOAD QUERY 的命令用来对其导入过程进行查询,为实现这一功能,用户可使用以下两种方式:

   - 在 IMPORT 语句中加入 COMMITCOUNT 参数:

       在 IMPORT 语句中 COMMITCOUNT 参数的作用是强制 IMPORT 过程在导入 COMMITCOUNT 所指定的记录行数后便进行一次提交,将数据写入表中。例如要使 IMPORT 命令在执行过程中每导入 10000 条记录就提交一次,可使用以下命令:

db2 import from ins.del of del commitcount 10000 insert into test

    此时用户通过命令在执行过程中输出到屏幕上信息,便可监测到目前导入表中的记录数:

SQL3109N  The utility is beginning to load data from file "ins.del".

SQL3221W  ...Begin COMMIT WORK. Input Record Count = "10000".  <== 已导入 10000 条记录

SQL3222W  ...COMMIT of any database changes was successful.

SQL3221W  ...Begin COMMIT WORK. Input Record Count = "20000".  <== 已导入 20000 条记录

SQL3222W  ...COMMIT of any database changes was successful. :

SQL3221W  ...Begin COMMIT WORK. Input Record Count = "30000".

SQL3222W  ...COMMIT of any database changes was successful.




   - 使用快照监控程序(SNAPSHOT):

       如果由于应用程序的限制或其它原因,用户不希望使用在 IMPORT 语句中加入 COMMITCOUNT 参数的方式,那么 DB2 还为用户提供了功能完备的各种系统监控程序,通过巧妙地使用其中的快照监控程序,用户同样可以捕捉到快照时间点上已导入表中的记录数,从而获取某个时间点上 IMPORT 语句执行情况的信息。

1)打开快照监控程序的 SQL 语句监控开关:
      
          在一个 DB2 CLP 下打开快照监控程序的某个监控开关的方式有两种:

           a. 修改相应的数据库管理器参数:
db2 update dbm cfg using dft_mon_stmt on (对当前实例下的所有用户生效)
db2 terminate

    b. 打开应用程序级别的相应监控开关:
                    db2 update monitor swithches using statement on
                    (对发出以上命令的应用程序生效,即在该 DB2 CLP 中生效)

2)发出 IMPORT 命令,将 INS.DEL 文件中的 110800 条记录导入到 TEST 表中:

db2 import from ins.del of del insert into test

         这一导入过程完成后,会在屏幕上输出如下信息:

SQL3109N  The utility is beginning to load data from file "ins.del".

SQL3110N  The utility has completed processing.  "110800" rows were read from
the input file.

SQL3221W  ...Begin COMMIT WORK. Input Record Count = "110800".

SQL3222W  ...COMMIT of any database changes was successful.

SQL3149N  "110800" rows were processed from the input file.  "110800" rows
were successfully inserted into the table.  "0" rows were rejected.


Number of rows read         = 110800
Number of rows skipped      = 0
Number of rows inserted     = 110800  <== IMPORT 操作正常结束后共导入的记录总数
Number of rows updated      = 0
Number of rows rejected     = 0
Number of rows committed    = 110800   <== 提交的导入记录总数

注:与 LOAD 命令的输出不同,IMPORT 命令的输出没有时间戳的信息。


3)启动快照监控程序,对 SQL 语句的执行情况捕捉快照。

db2 get snapshot for dynamic sql on sample > MonOutput   <== 将输出定向到 MonOutput 文件中

          命令完成后打开 MonOutput 定向输出文件,可以找到如下信息:

               Dynamic SQL Snapshot Result

Database name                      = SAMPLE
Database path                      = D:DB2NODE0000SQL00001

:
:

Number of executions               = 1
Number of compilations             = 1
Worst preparation time (ms)        = 1
Best preparation time (ms)         = 1
Internal rows deleted              = 0
Internal rows inserted             = 0  
Rows read                          = 0  
Internal rows updated              = 0  
Rows written                       = 20353  <== 在快照发生的时间点上已插入表中的记录数
Statement sorts                    = 0  
Total execution time (sec.ms)      = 1.735299  
Total user cpu time (sec.ms)       = 1.031482  
Total system cpu time (sec.ms)     = 0.020028  
Statement text                     = INSERT INTO test ("A1" VALUES (CAST (? AS  DEC(4,1))               
                                                         |
                                   以对表进行插入的 SQL 语句作为标记,在具有该 Statement
                                         的输出段中查找如上 Rows written 的信息
:
:

    以上是如何对 DB2 的两种数据导入工具:LOAD 和 IMPORT 的执行过程实现监控的介绍,其中对 IMPORT 使用了 DB2 提供的监控程序,实际上 DB2 监控程序所能监控的信息远不止于此,感兴趣的用户可以对它们的使用进行更进一步的研究,这对于帮助用户分析和解决问题,提高数据库的性能都是非常有好处的。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301576-1-1.html 上篇帖子: db2字符串函数 下篇帖子: DB2操作指令指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表