关于 Oracle ORA-01017 异常的解决
近期,生成环境切了新的数据库后,间歇性出现“ORA-01017: invalid username/password; logon denied”错误。排查及解决方式总结如下。
问题背景
最近,由于项目高运算量,项目组将数据库从项目群中剥离了出来,以减轻整个数据库平台的压力。新的数据库采用的是12c,故升级 Oracle 驱动至 ojdbc 7。升级后就发现了处理DATE类型存在问题,通过“MyBatis使用自定义TypeHandler转换类型”的方式做了解决。
但几天后,通过日志平台发现了另外的问题,即“ORA-01017: invalid username/password; logon denied”错误——用户、密码不正确。
这个问题比较奇怪:
- 账号、密码是在华为的配置中心进行配置,所以应用是不会去做密码的更改;
- 应用启动时,会去配置中心拉取一次数据库的配置,之后,配置在本地缓存,不会再做更改;
- 通过日志观察,“ORA-01017: invalid username/password; logon denied”错误一天大概出现几次,频率不高,大部分时间都能正常访问数据库。这同时验证了,账号密码是正确的。
- 应用是采用Spring+MyBatis+DBCP的架构,且用了几年都没有出过问题。相当稳定。
- 观察日志,是从切换了新数据库之后才出现了。
- 数据库平台采用了“双活架构”
问题分析
从上述分析看,感觉跟应用的关系不大。问题还是出在数据库平台。 拉平台的人一起查问题,我们项目组认为问题在数据库平台,而平台却认为问题出,几天也没有个结论。 后面,平台的人把问题反馈给了Oracle的人。
几天后,Oracle反馈了,说是ojdbc7-4.0驱动上面的bug。该bug只在大数据量处理时才会出现。晕死。
这也从侧面反映出了这个项目的数据库运算量是有点高了,远远超过了Oracle的压力测试了。
解决方案
目前,把驱动降级到原来的版本。观察了几日不再报这个错误了。遂解决。