天地不仁,以万物为刍狗!

[原]db2 的 SYSPROC.ADMIN_CMD() procedure 的简单学习

上一篇 / 下一篇  2008-04-12 10:48:48 / 个人分类:db2

db2SYSPROC.ADMIN_CMD() procedure的简单学习

 

使用db2的人都知道,db2过程的使用有很大的局限,比起oracle差了很多,因为过程中只能操作简单的DDLDML!对于很多操作(比如runstatus,load等)都不能在sql过程中做!个人觉得DB2似乎不很重视这方面的研发,比如说DB2之前连sql过程都不支持,再比如,DB2oracle之前提出来了分析函数,但自从提出来以后一直就那么几个,直到V9.5做了相对oracle的完善(Laglead等)!呵呵!

 

言归正传,db2 V9以后出了一个系统的过程ADMIN_CMD,这个过程基本上解决了上述(过程中只能使用简单DDLDML)问题,但个人觉得还是有一定局限性(IBM的东东就是补补贴贴,不能做到一次到位),呵呵!

 

因为今天pub有人发帖问关于db2SYSPROC.ADMIN_CMD的一些东东!又逢周末,所以抽时间整理了一下,现在分享给大家!

 

首先来看ADMIN_CMD都能做什么?我查询了一下db2的官网,V9.5中能做的事大致如下:

ü         ADD CONTACT

ü         ADD CONTACTGROUP

ü         AUTOCONFIGURE

ü         BACKUP - online only

ü         DESCRIBE

ü         DROP CONTACT

ü         DROP CONTACTGROUP

ü         EXPORT

ü         FORCE APPLICATION

ü         IMPORT

ü         INITIALIZE TAPE

ü         LOAD

ü         PRUNE HISTORY/LOGFILE

ü         QUIESCE DATABASE

ü         QUIESCE TABLESPACES FOR TABLE

ü         REDISTRIBUTE

ü         REORG INDEXES/TABLE

ü         RESET ALERT CONFIGURATION

ü         RESET DATABASE CONFIGURATION

ü         RESET DATABASE MANAGER CONFIGURATION

ü         REWIND TAPE

ü         RUNSTATS

ü         SET TAPE POSITION

ü         UNQUIESCE DATABASE

ü         UPDATE ALERT CONFIGURATION

ü         UPDATE CONTACT

ü         UPDATE CONTACTGROUP

ü         UPDATE DATABASE CONFIGURATION

ü         UPDATE DATABASE MANAGER CONFIGURATION

ü         UPDATE HEALTH NOTIFICATION CONTACT LIST

ü         UPDATE HISTORY

 

 

再说执行ADMIN_CMD需要的权限!

  • sysadm
  • dbadm

ADMIN_CMD采用返回结果集的方式,返回执行过程中的系统的信息!这个结果集包括sqlcodeMSG等,并且根据所执行操作的不同,有时候会返回2个结果集,但有的操作就下部需要会返回结果集(比如RUNSTATS),用户可以对结果集进行操作,来对执行结果进行其他的处理。

 

这边具体讨论下,SQL过程中ADMIN_CMD关于EXPORT的操作!对于其他类型的操作可以通过如下连接访问IBM官网,查询相关信息!

http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm.db2.luw.sql.rtn.doc/doc/r0012547.html?resultof=%22%41%44%4d%49%4e%5f%43%4d%44%22%20

 

EXPORT操作返回一个结果集,包括3部分内容:

l         ROWS_EXPORTED----记录export多少行!类型为BIGINT

l         MSG_RETRIEVAL--记录export执行后的信息(sqlcode等)类型为VARCHAR(512)

这里返回的是一段字符串代码,然后可以通过如下操作查询到对应的信息SELECT SQLCODE, MSG
  FROM TABLE (SYSPROC.ADMIN_GET_MSGS('3203498_txu')) AS MSG

l         MSG_REMOVAL--记录清除export的信息的代码!类型为VARCHAR(512)

这里返回的也同样是一段字符串代码,然后可以通过如下操作查询到对应的信息SELECT CALL SYSPROC.ADMIN_REMOVE_MSGS
  ('3203498_txu')

那么怎么在存储过程中操作返回的结果集呢,PUB上有人问,其实这就属于基础知识了,但是这边还是做了一个补充

 

--首先建立一个结果集数组

--这里定义一个就够了,因为ADMIN_CMDEXPORT操作返回值为1result set,但是要注意别的操作有可能返回2result set的,这时就需要定义2个了

 

declare loc1 result_set_locator varying; 

 

 

--然后执行存储过程ADMIN_CMD

CALL SYSPROC.ADMIN_CMD ('EXPORT to /home/user1/data/myfile.ixf OF ixf MESSAGES ON SERVER select * from staff');

 

--然后调用该ADMIN_CMD返回结果集。

associate result set locator(loc1) with procedure ADMIN_CMD;

--将返回结果集和结果集数组关联

 

--再然后将结果集数组分配给cursor

 allocate cursor1 cursor for result set loc1;

 

--下来就是操作游标的东东了J

fetch cursor1 into ....--这里就不详细说了。。

 

--最后需要关闭游标

close cursor1;       

 

就说这么多了!J


TAG:

引用 删除 plikefly   /   2008-05-15 10:18:07
可惜说的是v9.5的,v8.2中还远远没这么完善
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-07  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 4001
  • 日志数: 259
  • 文件数: 2
  • 建立时间: 2007-12-01
  • 更新时间: 2008-07-03

RSS订阅

Open Toolbar