终于搞定被客户投诉的问题

      之前在用户有新需求的情况下,改了不少代码,最后升级上去,一个月后,进行月度检查时,发现有一半部分数据并没有插入数据库。说道这里你可能有点晕了,我解释解释。

整个结构分为总循环控制程序,出账程序,包括预处理,批价等,还有入库程序。共有4个进程,同时在跑。当用户订购时,会产生原始话单,然后进行批价,批价会生成账单,这个用于扣帐,还有会生成导入数据库的话单,方便用户对账。

              control-----------启动------------->price-----------结束有文件产生时---------------->loadDatabase

       当时我更新了批价程序,然后现场单机服务器变成了双机,还有需要入库的话单文件格式变了,多增加了几个字节,这个时候双机过来的订单大于等于2个,发现入库程序只能入成功其中一个账单,另外一个没入成功,分析了很久,我没有改入库程序,所以应该其他程序对它应该没有影响,话单内容格式也没变,只是话单文件格式变了,后来发现当话单文件格式变长时,其中一个函数的局部常量变量,在第一次循环时,还有值,第2次循环时,该变量变为空的了,导致第2次循环无法入库。我实在无法解释这种情况,没有人为地清除这个局部变量,这个局部变量也不是动态的。

 

我的解释:入库程序实现方式为:每隔3秒入库程序扫描需要入库的文件,然后遍历这些文件,一个文件一个文件入库。
当文件标识字段变长(由原来的2为改为4位)时:
有个局部变量常量,初始化内容为路径,
遍历第一个文件时,该变量值存在,所以入库成功;
遍历之后的文件时,由于文件长度变长,内存段被占用,导致取该变量值变成空,导致执行入库sqlldr命令时,其中的一个参数错误,无法入库成功。
所以当由2改为4为后,每次扫描都只会入第一个文件。 

 

还有谁给解释下呢?

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值