+ -
当前位置:首页 → 问答吧 → oracle两台服务器数据复制问题

oracle两台服务器数据复制问题

时间:2011-12-20

来源:互联网

在一个系统集成项目中,需要将一台数据库服务器上的数据完整复制到另外一台数据库服务器上,没有网闸,现在使用的是insert into 表名 from select .... 的方式,以存储过程的方式定期执行进行数据复制的。具体过程是先判断数据有无差异性,无差异则丢弃,有差异即写入新库。需要支持7000万条数据的复制。但实际效率太低,每一次执行都要大半天时间。哪位大侠有没有更好的操作方法,最好能考虑到在数据导入过程中,服务器的IO能力问题?

作者: tih_w   发布时间: 2011-12-20

1、做触发器直接触发到目标服务表里。
2、做一个中间服务专门负责实时数据传输,把A服务器上的所有表写触发器,触发到一张表里,然后通过服务扫描这张表,发现有同步的信息就连接目标数据库把数据I,U,D过就可以了!

作者: nm_wyh   发布时间: 2011-12-20

因为源数据库是其他厂家来维护的,不允许我们用触发器的方法来抽数据,也就是说,用户不允许触发器的方式复制数据。

作者: tih_w   发布时间: 2011-12-20

引用楼主 tih_w 的回复:
先判断数据有无差异性,无差异则丢弃,有差异即写入新库。

1.第一次全量7000W数据复制可以用 insert into .....
2.之后的增量数据写入新库,可以在存储过程中写:
select .. from A
minus
select .. form B 
取出数据放入游标,再insert into 新表。这样只会导入有差异的几K或几W条数据了。

作者: sss008800sss   发布时间: 2011-12-20