atomikos使用问题,数据备份出现问题。大数据量。

fluent627 2017-05-25 11:28:41
我使用了2套方案都失败了,未加入分布式事务之前 用本地事务测试100W数据是成功通过的;
加入了分布式事务 ,数据量超过30W条就会出错。
一:错误提示 :提取违反顺序;
UserTransactionManager tm = new UserTransactionManager();
tm.setTransactionTimeout(60*60*24);
tm.begin();
Transaction ts = tm.getTransaction();
srcContext = Utils.generateSrcContext(entity);
destContext = Utils.generateDestContext(entity);
ts.enlistResource(srcContext.getXaRes());
ts.enlistResource(destContext.getXaRes());
--数据备份操作,分页拉取数据 备份数据 清除数据等业务逻辑,期间会产生大量的statement和RetResult
--我都会及时关闭这些statement RetResult 总而言之逻辑中只会有两个Connection。
///////业务逻辑结束
ts.delistResource(srcContext.getXaRes(), XAResource.TMSUCCESS);
ts.delistResource(destContext.getXaRes(), XAResource.TMSUCCESS);
//异常判断 回滚提交
tm.rollback();
tm.commit();
关闭之类
conn.close
XaConn.close
这套方案失败了。
...全文
377 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fluent627 2017-05-25
  • 打赏
  • 举报
回复
二:报 结果集耗尽 statement 耗尽 UserTransaction tm = new UserTransactionImp(); tm.setTransactionTimeout(60*60*24); tm.begin(); OracleXADataSource oxds1 = new OracleXADataSource(); oxds1.setURL(url); oxds1.setUser(user); oxds1.setPassword(password); AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); ds.setUniqueResourceName("srcDs"); ds.setXaDataSource(oxds1); ds.setPoolSize(1); context.setAdsb(ds); context.setConn(ds.getConnection()); OracleXADataSource oxds2 = new OracleXADataSource(); oxds1.setURL(url); oxds1.setUser(user); oxds1.setPassword(password); AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); ds.setUniqueResourceName("srcDs"); ds.setXaDataSource(oxds1); ds.setPoolSize(1); context.setAdsb(ds); context.setConn(ds.getConnection()); //业务操作 tm.rollback(); tm.commit(); //关闭操作

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧