让db2系统定时runstats、reorg

让db2系统定时runstats、reorg
Q:定期runstats、reorg
A:在db2 v8.2以上可以使用 CALL SYSPROC.ADMIN_CMD来实现,
这里主要讲在v8.2以前的版本中利用shell或者批处理来实现同样的功能

因为在以前的版本中存储过程中是不能使用DDL操作语句的!(这点对于oracle刚转过来的人来说很是郁闷的)
然后可以利用db2自带的配置自动维护来做,但是java做的东西比较让人感觉头痛!尤其是速度和莫名的错误!

本代码使用操作系统的脚本来实现这部分功能!

1.windows下
如下:
下一个cmd文件s.cmd
内容如下:
db2 connect to ccp_dm
db2 -x "select 'runstats on table '||rtrim(tabschema)||'.'||tabname||' on all columns' from sysstat.tables where card=-1">tab.sql

db2 -f tab.sql

--其中where后的条件可以修改
然后就是定制任务:用windos的定制任务!每周或者每月运行,这个就不讲了哈!

这部分经测试,通过!

不过能,这里只提到了runstats,对于reorg同理也可以实现!


2.
非windows下(这个是从网上搞得,没有测试过):
一:#!/usr/bin/ksh
#DB2V8统计更新脚本 by Ray001 2006/09/06
if [ $# -ne 3 ]
then
echo "Usage:$0 DBNAME USER PASSWD!"
exit 1
fi
DBNAME=$1
USER=$2
PASSWD=$3
rm -f tab.tmp
rm -f ind.tmp
db2 connect to $DBNAME user $USER using $PASSWD
db2 -x "select tabschema,tabname from sysstat.tables where card=-1">tab.tmp
if [ $? -ne 0 ]
then
if [ ! -s tab.tmp ]
then
echo "NO TABLES NEED TO BE PROCESS"
#exit 0
else
echo "SELECT SYSSTAT.TABLES ERROR"
exit 1
fi
fi
db2 -x "select tabschema,tabname,indschema,indname from sysstat.indexes where nl
eaf=-1">ind.tmp
if [ $? -ne 0 ]
then
if [ ! -s ind.tmp ]
then
echo "NO INDEXES NEED TO BE PROCESS"
#exit 0
else
echo "SELECT SYSSTAT.INDEXES ERROR"
exit 1
fi
fi
while read TABSCHEMA TABNAME
do
echo "runstats on table $TABSCHEMA.$TABNAME"
db2 "runstats on table $TABSCHEMA.$TABNAME"
donewhile read TABSCHEMA TABNAME INDSCHEMA INDNAME
do
echo "runstats on table $TABSCHEMA.$TABNAME for index $INDSCHEMA.$INDNAME"
db2 "runstats on table $TABSCHEMA.$TABNAME for index $INDSCHEMA.$INDNAME"
donedb2 terminate
rm -f tab.tmp
rm -f ind.tmp

二:
回到主题。若是要做DB2 RUNSTATS的话,我的习惯是写一个简单的SHELL SCRIPT,如下:

/home/db2inst/Scripts > cat runstats.sh
#! /usr/bin/ksh

. $HOME/.profile

db2 -v connect to mydb

for TABSCHEMA in DB2INST
do
for TABNAME in $(db2 -x "select tabname from syscat.tables where tabschema='$TABSCHEMA'")
do
db2 -v "runstats on table $TABSCHEMA.$TABNAME and indexes all"
done
done

/home/db2inst/Scripts > ./runstats.sh
connect to mydb


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/694276/viewspace-51437/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/694276/viewspace-51437/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值