Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2802924
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2013-06-12 15:24:03

      业务场景:前端一台timesten服务器中有一个表T1,后端oracle中有一个表T1和T1_HIS,三个表结构一样,oracle中的表以时间做了分区

       在timesten上建了一个write cache group,应用程序操作前端timesten服务器表T1,由timesten自动propagate到oracle中表T1中.

       由于timesten是内存数据库,所以本身存放的数据有限,因此需要定期进行清理。因此采取的办法是停止应用,在oracle中使用存储过程
把oracle中的T1的部分数据归档到T1_HIS表中,然后删除oracle中的部分T1的数据。这时候oracle中的T1数据和timesten中T1数据已经不同步了.
当使用load的方法再去加载,是无法从oracle中加载的,因为使用主健更新的方法,timesten以为所有的行已经都加载到自己的T1中了.
只能采取把cache group删除了,再重新手动load oracle T1表的所有数据到timesten的T1中.

   影响的几个因素:1,重新加载的oracle T1表的行数。当表中的行数越多,需要重新加载的时间越长.2,加载提交的频率,比如每100,200行提交一
次,单次行数越多事务越少。可以在加载期间采用非持久化提交来加载速度,但是也引入了一定的风险.3,如果是表中数据很大,而每次归档的数据量
不多,可以在归档的时候不删。在timesten上直接删除,然后同步.

阅读(5207) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~