最近公司项目需求,要从oracle往mysql迁移存量1.2亿数据。处理逻辑比较复杂,硬件方面,对机器性能要求较高;软件方面,受制于外部服务能力。因此,在开发过程中,需要特别注意各方面资源的管理,及时释放占用的资源。
调优过程中,数据库方面遇到以下几个问题:
1.Unknow psmId。
这个是preparedStatement报出来的,具体原因没查出来。后来改了statement后能正常运行,猜测是我们使用的DBLE可能有隐藏的bug,在某些情况下不能正常处理。
2.关闭的结果集/Statement/Before start of ResultSet
这类问题比较好查,看下是否在在结果集还在使用之前将结果集关闭了;看下resultset在使用时候有没有移动游标。
3.oracle报出来:超出打开游标最大数
一般都是statement/preparedStatement没关。
另外,mysql有自动回收statement/preparedStatement的机制,不需手工关闭,oralce必须写在代码里。关闭顺序为:resultset、statement/preparedstatement、connection.