免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3633 | 回复: 4
打印 上一主题 下一主题

关于snapshot_tbs_cfg定时调度的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-09 09:40 |只看该作者 |倒序浏览
为了监视数据库表空间的使用情况,我写了一个shell脚本get_tbstat.ksh,通过调用snapshot_tbs_cfg收集表空间信息,并将结果写入库中,该脚本每隔1小时执行一次。但是,出现了一个很奇怪的问题:该脚本有时一天24小时均能正常执行,有时一天当中只能正确执行2、3次,出错信息如下:

DB21034E The command was processed  as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0443N Routine "SYSPROC.SNAPSHOT_TBS_CFG"(specific name "SNAPSHOT_TBS_CFG") has returned an error SQLSTATE with diagnostic text "SQL1611". SQLSTATE=38553


附脚本如下:

#!/bin/ksh
#
#  before running this script ,the "bufferpool" monitor switch
#  must be turned on by :
#  db2_all "db2 update monitor switches using bufferpool on"
#

#. /opt/ETL/.profile>/dev/null
. /db2home/db2inst1/sqllib/db2profile

db2 connect to mydb

SNAP_TS=`date +"%Y-%m-%d %H:%M:%S"`

echo "Start at : $SNAP_TS"
db2 -tp-<<EOF
insert into cnc.sys_tbstat_log(snap_ts,partition_num,tbs_name,tbs_used_size,tbs_total_size)
select timestamp('$SNAP_TS'),0,tablespace_name as tbs_name,page_size * used_pages/1024/1024 as tbs_used_size,total_pages * page_size/1024/1024 as tbs_total_size
from table(snapshot_tbs_cfg('mydb',0)) as tbs
where tablespace_type = 0
union
select timestamp('$SNAP_TS'),1,tablespace_name as tbs_name,page_size * used_pages/1024/1024 as tbs_used_size,total_pages * page_size/1024/1024 as tbs_total_size
from table(snapshot_tbs_cfg('mydb',1)) as tbs
where tablespace_type = 0
union
select timestamp('$SNAP_TS'),2,tablespace_name as tbs_name,page_size * used_pages/1024/1024 as tbs_used_size,total_pages * page_size/1024/1024 as tbs_total_size
from table(snapshot_tbs_cfg('mydb',2)) as tbs
where tablespace_type = 0
union
select timestamp('$SNAP_TS'),3,tablespace_name as tbs_name,page_size * used_pages/1024/1024 as tbs_used_size,total_pages * page_size/1024/1024 as tbs_total_size
from table(snapshot_tbs_cfg('mydb',3)) as tbs
where tablespace_type = 0
;
EOF

论坛徽章:
0
2 [报告]
发表于 2006-05-10 10:59 |只看该作者
是没有数据返回吧, 系统函数没有取得数据,可能是系统问题

论坛徽章:
0
3 [报告]
发表于 2006-05-10 12:53 |只看该作者
我知道了,和你这个cnc.sys_tbstat_log的结构有关系,是不是类型不一致,db2钟的数据类型不会自己转化

论坛徽章:
0
4 [报告]
发表于 2006-05-10 14:38 |只看该作者
应该不是数据类型的问题,否则怎么会有时成功,有时失败呢?!

论坛徽章:
0
5 [报告]
发表于 2006-05-11 17:03 |只看该作者

Final answer to this question

根据IBM 800的回复及自己亲自做的一些试验,得出以下结论:

1、怀疑这是DB2这一版本(8.2 Fixpack 10)的bug;

2、这一bug还是有work around的办法,如下:
  
原有脚本中同时对4个数据库分区调用snapshot_tbs_cfg函数,然后union,这个过程改为:

for PARTITION_NO in 0 1 2 3
do
    export DB2NODE=$PARTITION_NO
    db2 -v terminate
    db2 -v connect to cncdb

db2 -tvp-<<EOF
insert into cnc.sys_tbstat_log(snap_ts,partition_num,tbs_name,tbs_used_size,tbs_total_size)
select timestamp('$SNAP_TS'),$PARTITION_NO,tablespace_name as tbs_name,page_size * used_pages/1024/1024 as tbs_used_size,total_pages * page_size/1024/1024 as tbs_total_size
from table(snapshot_tbs_cfg('cncdb',$PARTITION_NO)) as tbs
where tablespace_type = 0;
EOF

done


3、以上过程保证每次调用的时候能够返回正确结果,而不出现SQL1611N的错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP