从oracle A数据库服务器 
同步数据 25张表数据 
到 远程 oracle B数据库服务器
其中有6-7张表数据库量 达到千万,总的数据量打到亿级
高手们,可有什么好的办法?目前方法:
新建DBLink:DBL_B
insert into B_a@DBL_B
 select * from A_a;
但是测试发现这样性能不高,a表数据量 2千万,同步要3个小时

解决方案 »

  1.   

    谢谢 xiaobn_cn
    不过 用exp/imp 可能不行
    一、exp导出文件太大
    二、源数据库 系统上,不能产生文件
      

  2.   


    ORACLE有专门的数据库同步软件,不过那东西是收费的,如果费用不是问题可以考虑购买。
      

  3.   

    用exp/imp数据量大,导入不行的。利用工具试一下吧!
      

  4.   

    使用insert /*+ append */ into  B_a@DBL_B  select * from A_a;
      

  5.   

    try 
    impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x
      

  6.   

    需求?每天同步亿级数据?还是一次性,或者周期性亿级数据?
    一次性的话EXPDP,开多个进程,速度很快的,SQL*LOADER也很快
      

  7.   

    oracle的物化视图不知道能不能解决你的问题,但数据量这么大不知道会不会有问题
      

  8.   


    谢谢
    Oracle 收费的同步软件是 什么?
      

  9.   


    谢谢
    Oracle 收费的同步软件是 什么?
      

  10.   


    谢谢
    imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件
      

  11.   


    exp可以产生文件在客户端啊?导入的时候也可以在客户端导入啊?
    和源端有什么关系???  expdp也可以通过network_link实现
      

  12.   

    楼主看看这个可能会帮到你
     
    http://blog.csdn.net/leamonjxl/article/details/6695486
      

  13.   

    create table B_a as select * from A_a@DBL_B 试试这个。。这是DDL操作,不知道会不会快点
      

  14.   


    这么做是不会产生文件的,详细的东西自己google吧
      

  15.   


    详细名字不记得了,只是听过ORACLE公司的介绍,他们有两个软件,我记得其中一个好象叫做gold gate
      

  16.   

    因为有限制,可以考虑使用第三方工具来做,效率都还可以的。
    比如使用ETL工具(datastage等)、goldengate都不错,缺点是要钱
      

  17.   

    去网上下载个KETTLE,绿色免费的,我现在处理数据使用的这个
      

  18.   

    服务端不能联?不会吧,找个能同时连客户端和服务器的机子,上亿数据,insert 有索引的话 一天也导不完,快得就得用exp,imp 先导数据再建索引,oracle好像有个高级复制,不过也是需要连到服务端的。
      

  19.   


    楼主,这个试了没有,我认为这个可行,只会产生少量undo。insert into B_a@DBL_B
     select * from A_a;
    直接插入会占用大量的undo表空间。
      

  20.   


    谢谢
    我倒是直接: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;
    效果可一样?
      

  21.   

    goldengate
    数据量太大了,如果是每天产生这么数据,估计怎么也不会太快,毕竟数据是要传送过去的.
      

  22.   

    insert /*+parallel(a,4) */ into B_a a@DBL_B
     select * from A_a;
    开并行啊,这样会快点。用
    impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x
    这个更慢的,我以前到过数据。
      

  23.   

    这个是要用专业的软件处理的比如datastage
    或者提供你一些思路,数据是在数据块中的,可以通过数据块的变化来传输,只传输变化了的数据块,这点是不是有点像rman?
      

  24.   

    Oracle Stream 可以实现远程的 replication。