为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:centOS7.6
【CPU】: 8C
【问题描述】*:Connection has been switched
在java操作切换表的时候会出现这个问题,而且不是百分百出现,一般会在执行耗时操作之后出现。为什么会出现这个问题,是否可以修改某些配置来优化?小白在线提问。
集群数据库中见过类似问题,这个CONN已经被转移到其他节点(实例)了,建议:
1、检查数据库URL,方便可以发下;
2、是否使用了服务名,看看/etc/dm_svc.conf
内容;
3、看下数据库的dm.ini参数SWITCH_CONN值是多数;
4、java -jar DmJdbcDriver18.jar
看下驱动版本,太旧的驱动可能不支持新版的功能,推荐应用使用数据库对应的驱动或者最新驱动;
5、检查数据库(集群)状态是否存在异常;
据个人经验,可能性较大的是4或者2/3参数
请确认是否开了do_switch或者autoReconnect,如果在url里面或者dm_svc.conf里面配置了这任一参数,jdbc层就有自动重连功能,如果遇到连接失败,会自动重连,同时给上层应用抛这个信息作为提示。
而你这个场景情况看,要么就是网络丢包严重,稍微时间长点的操作,都无法持续,要么就是存在连接超时,执行超时等参数限制,导致超时后断开,又自动去重连,然后抛这个错误提示了。
数据库驱动和数据库版本匹配吗,把驱动换成数据库安装目录下的drivers/jdbc/目录下的驱动试试