oracle10 数据库单表如何进行同步到另外一个oracle10数据库中? 10
源数据库中单表数据量写入非常频繁每秒上百条同步实时性要求不高半天一天都可以接受主要是不能遗漏采用什么方式同步比较好呢?原始表只有插入操作没有更新和删除操作,不接受触发器方...
源数据库中单表数据量写入非常频繁 每秒上百条 同步实时性要求不高 半天一天都可以接受 主要是不能遗漏 采用什么方式同步比较好呢? 原始表只有插入操作 没有更新和删除操作,不接受触发器方式。
展开
2个回答
展开全部
源表中有没有一个自然增长的、与写入顺序相关的字段,比如ID、写入时间?如果有,就做一个定时运行的JOB,如每小时或每6小时,间隔根据你的需要而定;再建一个同步记录表,记录每次同步时已经同步的数据,比如ID、时间,下次JOB运行时,从上次同步过的记录往后继续追加到新库。
如果是唯一的ID,可以在JOB启动时读取源表当前最大的ID,然后追加上次同步的ID+1到最大ID范围的数据到新库,成功后在同步记录里记录当前最大的ID,作为下次同步的起始依据。
如果有时间,那就根据你的JOB运行间隔,每次只追加在时间间隔内写入的数据,比如12:00:00.000到12:00:00.999时间范围内的数据,然后下次追加13:00:00.000到13:00:00.999。
如果啥都没有,那就只好定时全表刷新,先TRUNCATE目标表,然后源表整个复制过来,不过这样做随着时间推移数据激增,效率是相当可怕的。
如果是唯一的ID,可以在JOB启动时读取源表当前最大的ID,然后追加上次同步的ID+1到最大ID范围的数据到新库,成功后在同步记录里记录当前最大的ID,作为下次同步的起始依据。
如果有时间,那就根据你的JOB运行间隔,每次只追加在时间间隔内写入的数据,比如12:00:00.000到12:00:00.999时间范围内的数据,然后下次追加13:00:00.000到13:00:00.999。
如果啥都没有,那就只好定时全表刷新,先TRUNCATE目标表,然后源表整个复制过来,不过这样做随着时间推移数据激增,效率是相当可怕的。
展开全部
那就创建个DBLink,然后写个存储过程,定时调用吧。你的数据应该是有时间戳的吧?没有的话加个字段表示时间戳,或者加个记录编号。然后写个很简单的存储,定时调用同步应该就可以了。
追问
能给出这样一个存储过程么 我可以尝试创建一个sequence 就是不知道每秒200条记录下 性能会降低多少 如果有了这样一个唯一的记录编号 你能给出一个存储过程我来尝试一下么 dblink什么的都没有问题 都能搞定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询