从oracle A数据库服务器
同步数据 25张表数据
到 远程 oracle B数据库服务器
其中有6-7张表数据库量 达到千万,总的数据量打到亿级
高手们,可有什么好的办法?目前方法:
新建DBLink:DBL_B
insert into B_a@DBL_B
select * from A_a;
但是测试发现这样性能不高,a表数据量 2千万,同步要3个小时
同步数据 25张表数据
到 远程 oracle B数据库服务器
其中有6-7张表数据库量 达到千万,总的数据量打到亿级
高手们,可有什么好的办法?目前方法:
新建DBLink:DBL_B
insert into B_a@DBL_B
select * from A_a;
但是测试发现这样性能不高,a表数据量 2千万,同步要3个小时
不过 用exp/imp 可能不行
一、exp导出文件太大
二、源数据库 系统上,不能产生文件
ORACLE有专门的数据库同步软件,不过那东西是收费的,如果费用不是问题可以考虑购买。
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x
一次性的话EXPDP,开多个进程,速度很快的,SQL*LOADER也很快
谢谢
Oracle 收费的同步软件是 什么?
谢谢
Oracle 收费的同步软件是 什么?
谢谢
imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件
exp可以产生文件在客户端啊?导入的时候也可以在客户端导入啊?
和源端有什么关系??? expdp也可以通过network_link实现
http://blog.csdn.net/leamonjxl/article/details/6695486
这么做是不会产生文件的,详细的东西自己google吧
详细名字不记得了,只是听过ORACLE公司的介绍,他们有两个软件,我记得其中一个好象叫做gold gate
比如使用ETL工具(datastage等)、goldengate都不错,缺点是要钱
楼主,这个试了没有,我认为这个可行,只会产生少量undo。insert into B_a@DBL_B
select * from A_a;
直接插入会占用大量的undo表空间。
谢谢
我倒是直接:insert into B_a@DBL_B select * from A_a;
不过我对每个表 都 alter table B_a nologging; 了
不知道这样和
insert /*+ append */ into B_a@DBL_B select * from A_a;
效果可一样?
数据量太大了,如果是每天产生这么数据,估计怎么也不会太快,毕竟数据是要传送过去的.
select * from A_a;
开并行啊,这样会快点。用
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x
这个更慢的,我以前到过数据。
或者提供你一些思路,数据是在数据块中的,可以通过数据块的变化来传输,只传输变化了的数据块,这点是不是有点像rman?