如何实现oracle数据库大数据增量操作

我现在有一个(多个)oracle数据库服务器在外地(不同的地方)...现在要把通过系统把各个地方的数据收集到集中的一台oracle数据库服务器上.每个月要收集一次..第一次收集还比较容易..第二个月、第三个月后面的数据有变化.我想实现第二个月以后的数据只更改原来修改、新增、删除过的数据。数据表大概有400多张、数据量比较。数据量大的一个数据库一张表有接近1000万的数据.要考虑效率..有没有高手做过这方面的?大家帮我想想办法..坐等回复。

源表和目标表 直接哈希分区 64个
目标表在关联字段建本地分区索引 ,分区键和索引键一样
目标表的分区最好分到多个表空间上
写个存储过程按分区扫源表,操作目标表(更新或插入)
开多个session调存储过程传分区为参数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-15
由于数据量较大,在数据库里进行判断比较耗时,建议插入数据的时候加个日期。后续也增量插入数据,然后剔除相同,日期靠前的数据。追问

就是数据量比较大..最开始我想通过过程写sql来比较..然后再操作..数据量太大了..耗时太久..还有没有其他办法?

追答

首先不知道给的数据是文本的,还是直接从数据库抽过来的。如果单纯只能在数据库里进行操作,这么大数据量,是不现实的。只能按照先插入,再剔重的方法了。

追问

直接连接 远程数据库从数据库里把所有表数据抽取过来..

追答

那应该会用DBLINK的方式抽吧。你这么多数据,全表抽,每个表几百万的数据,400多张表,没个1,2天抽不完啊。更不用说再加个判断了。

追问

我现在想到的只有用dblink的方式抽,你没有其它效率高一点的办法可以抽..1、2天时间..第一次抽取时间上还能接受..第二次、第三次以后的抽取..比较麻烦..

追答

如果是送文件的话,处理起来比较快。后面的你本地数据库数据越来越大,处理起来越来越麻烦了。

第2个回答  2013-08-15
使用GUID来判断数据的唯一性,根据这个来判断是否同一条数据,先处理新增和删除的,最后处理修改的,修改的要对比,可否还需要最后更新日期,耗时会久一点追问

guid是 什么?是每条数据都有这么一个属性么?每条数据都判断一下...1000万的数据效率会不会很低。

追答

可以使用 not in (select ...) 这种批量添加
如果是 更新,使用最新日期判断,有更新日期的不管内容是否改变,都更新一次

第3个回答  2013-08-15
可以使用Oracle复制, 用物化视图做. 采用快速刷新的方式自动会把更新的数据更新到总数据库
相似回答