Oracle字符乱码、数据越界訪问典型Bug分析
前言:
          作为乙方,在甲方客户那里验收阶段发现两个诡异Bug。

下面就问题来源、问题根因、解决方式、怎样避免做具体描写叙述。

。且两个表的触发器Trigger都调用这个序列。也就说,程序的频繁任务下发任务中,频繁运行后,几周或者几个月非常easy就超过65535的序号值。

综上,基本判定程序中出现越界訪问导致显示异常。

3、解决方式
1)情况着急:採取简单规避方案:更新序列Sequence当前值。当前值已经查过67000。须要回归到1又一次開始。

但有个知识点是,在sqldevelop以及全部的查看工具下,该值都不能手动改动。
须要删除后重建。

用户必须具有ALTER ANY SEQUENCE 才干改动改动sequence,能够alter除start之外的全部sequence,假设想改动start值,必须drop sequence再re-create。

2)未来须要定位到哪里越界訪问的,把类型至少改为unsigned int存储。
4、怎样避免

定义序号类型的变量,要考虑它的源头,怎样产生的,最小值、最大值是多少。再确定定义哪种类型的变量。

总结:
1.两个Bug都不难,但都须要理清思路。避免走弯路。

第一个Bug梳理到改完耗时3.5h,第二个Bug耗时5h。

2.第二个Bug非常诡异,在我运行完500个任务就突然不显示返回数据。程序基本没有改动不论什么逻辑。想了非常久,排除了非传输设备的影响,非搜索程序的影响。终于定位和65535有关。

2015-12-13 pm13:55 思于家中床前

作者:铭毅天下

转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/50282569

假设感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!