Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134100
  • 博文数量: 47
  • 博客积分: 1220
  • 博客等级: 中尉
  • 技术积分: 565
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-09 10:07
个人简介

unix/linux shell、c/c++、java、oracle pl/sql、db2 sql pl、informatica

文章分类

全部博文(47)

文章存档

2012年(11)

2011年(3)

2010年(8)

2009年(20)

2008年(5)

我的朋友

分类: Sybase

2012-03-13 23:51:46

问题:

 

(可见如下图的)节点failed 了,报障过来,我们这边的同事检查可能是脚本的问题,认为是调用子shell脚本的问题(可见如下程序片断),将里面的 . lastdate.sh改成了 .  ./ lastdate.sh. nextday.sh改成了./nextday.sh,然后测试,运行了将近一天都没结束,此问题便转到了我手

 

 

 

 

shell片断:

 

#!/bin/sh

 

cd /file2/ods/cbill_sum/CNet/cdma_yff

.  ./lastdate.sh

if [ $# -lt 1 ]; then

time_date=${lastdate}

else

time_date="$1"

fi

./nextday.sh ${time_date}

next1date=${next_date}

 

排查步骤:

1、  为什么测试用了这么久,平时运行个把小时就完成了

 

首先这个脚本的逻辑是:取相应日期相应目录外系统送过来的不同业务类型的文件的相应字段,并且加上类型标识字段进行sybase IQ 入库,后面再调一个存储过程进行相应的处理。

查日志,看到连去年的文件都在处理的范围,处理生成的结果文件也超级大(10G以上),而且按类型处理的顺序,第一种都还没处理完。因相应日期是从子shell 脚本里获取的,于是我截取脚本上面相应片段并在后面加了句 echo "next1date ${next1date}" ,进行测试,运行结果:

 

$ ./t_getdate.sh 20120306

20120307

next1date

$

可以看出并没有获取日期,而获取文件的语句

ls|grep "YFF_CDMA${_listtype}_ACCT.${next1date}"|while read _file_name

 

出现上面的问题也就不奇怪了!

其实上面两个脚本都改为 .  ./  或者恢复原来的样子 .

于是更正被错改的地方,继续测试

 

2、  在测试过程中报调用 Sybase 存储过程时报错

 

[2012/03/09 00:31:32] load data done.

Error in file "/file2/ods/cbill_sum/CNet/cdma_yff/CALL_SP_TB_BILL_SUM_SERV_POSI_YF_DAY.sql" at line 2

Query rejected because it exceeds resource: Query_Temp_Space_Limit

--(dfo_Root.cxx 778)

 

网上查了下资料

 

 

 

于是脚本备份,并再修改如下:

echo "set temporary option Query_Temp_Space_Limit=0;">${cxdir}/CALL_SP_TB_BILL_SUM_SERV_POSI_YF_DAY.sql

echo "call SP_TB_BILL_SUM_SERV_POSI_YF_DAY('${time_date}');">> ${cxdir}/CALL_SP_TB_BILL_SUM_SERV_POSI_YF_DAY.sql

echo "exit;">>${cxdir}/CALL_SP_TB_BILL_SUM_SERV_POSI_YF_DAY.sql

 

第一行是新增的,第二行的>改为>> 于是再重跑,成功跑过!

 

3、  恢复自动调度

 

 

UnSchedule ,然后再 Schedule ,检查第二天的自动调度生成正常

阅读(2394) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~