现场实施反馈系统乱码,着实吓了一跳,多少年没有碰到过这种问题。整理了一下信息:
1.系统已经运行了4年了,如果没有改配置,应该不会出现这种问题。
2.昨天晚上发布过。
3.乱码的范围,少量的模块和少量的增量数据有乱码。--有40个weblogic节点,怀疑某个节点有问题。
4.检查weblogic服务器的编码是GB18030,weblogic没有设置编码,但从jinfo -sysprops pid的结果上看file.encoding=GB18030, Oracle数据库服务器的编码是GB18030, 数据库的编码是ZHS16GBK。
5.检查weblogic日志,发现Oracle的ora-的错误是乱码。--可以判断是weblogic获取Oracle的返回的数据乱码了。
6.昨天晚上发布的时候数据库重启过,weblogic没有重启。
根据上面的信息做了如下动作:
1.做单点测试,看能不能出来乱码。--发现了一个不可思议的问题,有三个节点有的时候会出现乱码,有的时候不会,很偶然。
2.继续检查weblogic日志和数据库alert日志。--没有发现新的问题
3.分析增量包的业务,看更新增量是否与乱码的模块有关系。--没有关联性
继续追查:
先隔离有问题的节点,从有节点偶尔乱码的上看,想想有两种可能,一是有重复的JAR包,二是数据库连接出了问题。--检查了并未发现有重复的JAR包,问题节点被重启了。
weblogic重启之后就再未发生乱码问题。忙活了良久,遗憾没有找到问题,如果再来一次,我想做一次新的尝试,就是写一个程序遍历连接池的连接,查询select '中国' from dual。