某项目x系统使用DM8 1-2-128版本数据库,按要求需要升级数据库版本【DM8 1-2-128版本-->DM8 1-2-192版本】。该系统生产库升级之前需要在测试环境数据库先升级验证,测试环境有5套主备需要升级。
本文对升级验证中遇到几个应用连接数据库报错信息、原因和如何解决进行总结分享。
应用报错日志报【网络通信异常】。
数据库升级后应用JDBC驱动jar包还是DM8 1-2-128版本数据库的jar包,参考下面命令检查驱动jar包版本:
[dmdba@OwumVYU4IUuZaxxP-0001 jdbc]$ java -jar DmJdbcDriver18.jar
V8.1.2.128-Build(2022.07.14-11496)
应用JDBC驱动jar包需要更新至DM8 1-2-192版本数据库对应的驱动jar包,【数据库JDBC驱动目录示例,/dm8/drivers/jdbc】。
[dmdba@owumvyu4iuuzaxxp-0004 jdbc]$ pwd
/dm8/drivers/jdbc
[dmdba@owumvyu4iuuzaxxp-0004 jdbc]$ java -jar DmJdbcDriver18.jar
Dameng JDBC Driver V8.1.2.192-Build(2023.01.12-14750-)
usage: [options]
##说明
1. DmJdbcDriver16 对应 Jdk1.6 及以上环境
2. DmJdbcDriver17 对应 Jdk1.7 及以上环境
3. DmJdbcDriver18 对应 Jdk1.8 及以上环境
数据库升级DM8 1-2-192版本后应用连接数据库异常,应用日志报错【连接缓冲池初始化失败】:
具体的JDBC字串符连接配置如下:
因为DM8 1-2-192版本数据库更新URL解析方式,增加了【库名|模式名】检验规则,正确配置只是需要IP+端口或者服务名即可,示例如下:
jdbc:dm://xx.xx.xx.xx:5236
jdbc:dm://DMHA:5236
将应用JDBC连接字符串中【库名|模式名】去掉。
该系统某子应用使用Hibernate框架,再更新JDBC驱动jar包后应用还是无法正常提供服务。
原因是应用在达梦数据库升级DM8 1-2-192版本以后对应的Hibernate方言包版本没有更新。
从DM8 1-2-192版本数据库【Hibernate 方言包目录示例,/dm8/drivers/jdbc/dialect】目录选取对应版 本的方言包在应用中替换相关方言包。
数据库升级至DM8 1-2-192版本后,应用服务在网页发起点击保存操作报错, 应用日志报连错【连接尚未建立或已经关闭】:
数据库报错如下:
数据库检验参数COMM_VALIDATE默认值为1 ,开启了消息检验,发现不符合检验预期的消息内容。
将数据库检验参数 COMM_VALIDATE设置为0 ,即不进行检验,应用恢复正常。
数据库升级不止要升级数据库,还建议更换对应的JDBC驱动版本及框架方言包版本。另外,也关注下应用连接字符串写法。总之,建议升级生产库之前先在测试环境进行升级验证,万一有问题可以提前发现处理,这样充分验证升级方案,以确保生产库升级变更安全和成功。
文章
阅读量
获赞