让db2系统定时runstats、reorg
上一篇 / 下一篇 2007-08-23 00:00:00 / 个人分类:db2
让db2系统定时runstats、reorgITPUB个人空间 b+rzXh mQt2j[V
Q:定期runstats、reorgITPUB个人空间;MW0{{|x%y*x
[YKq
A:在db2 v8.2以上可以使用 CALL SYSPROC.ADMIN_CMD来实现,ITPUB个人空间j!B&dWf
这里主要讲在v8.2以前的版本中利用shell或者批处理来实现同样的功能
因为在以前的版本中存储过程中是不能使用DDL操作语句的!(这点对于oracle刚转过来的人来说很是郁闷的)
7QsvgR"Xqy9OeM0然后可以利用db2自带的配置自动维护来做,但是java做的东西比较让人感觉头痛!尤其是速度和莫名的错误!
本代码使用操作系统的脚本来实现这部分功能!
1.windows下
v5{(k.r[H
Y0如下:
YK*M%o1~%LG"xlP9f,W0下一个cmd文件s.cmd
j\"j2}wv0H0内容如下:ITPUB个人空间%rB3h0b-H~]
db2 connect to ccp_dm
*A)vt*RL0db2 -x "select 'runstats on table '||rtrim(tabschema)||'.'||tabname||' on all columns' from sysstat.tables where card=-1">tab.sql
db2 -f tab.sql
--其中where后的条件可以修改ITPUB个人空间FN(Ou-Bn
MB ]
然后就是定制任务:用windos的定制任务!每周或者每月运行,这个就不讲了哈!
这部分经测试,通过!
不过能,这里只提到了runstats,对于reorg同理也可以实现!
s6oFI4XbK&}02.
u4_d
r!f)Fy?0非windows下(这个是从网上搞得,没有测试过):ITPUB个人空间N1Hf*e;Bec
一:#!/usr/bin/ksh ITPUB个人空间^$T7GA)g@V
#DB2V8统计更新脚本 by Ray001 2006/09/06
fR1Rj6`x8b5j&b
S,s0if [ $# -ne 3 ] ITPUB个人空间2_hK)Xr jS-|8L
[
then ITPUB个人空间;J{mlr\#i_o
echo "Usage:$0 DBNAME USER PASSWD!" ITPUB个人空间1t,r_+g%|F gij#_
exit 1 ITPUB个人空间3p0FnS#H7dq
fi
\bk
dW&xc0DBNAME=$1 ITPUB个人空间D-Ux-xHes
USER=$2 ITPUB个人空间9i"MhBI^
PASSWD=$3
i+M!Y(Wu
c z0rm -f tab.tmp ITPUB个人空间cg4?uiQc%CV]
rm -f ind.tmp ITPUB个人空间LRK,Mv+m
db2 connect to $DBNAME user $USER using $PASSWD ITPUB个人空间;JZ%VR?V7s
db2 -x "select tabschema,tabname from sysstat.tables where card=-1">tab.tmp
-X x'd,VKsk9A0if [ $? -ne 0 ]
|,g9nv+w0then ITPUB个人空间4Yz n6J+Pqh
if [ ! -s tab.tmp ]
1R!K,Tt:a(B8KT%YdL)zX0then
}v`N_Q0echo "NO TABLES NEED TO BE PROCESS"
+TPg3M-a(E6pc@0#exit 0
?/X/NU%G+D3F8L0else ITPUB个人空间y WJ$J1Gq
echo "SELECT SYSSTAT.TABLES ERROR"
g+o
uCu1E$n&V,?:R0exit 1