各位高人,本人有个业务需要。需要将一个oracle数据库1中的一个大表的数据按照其中的某个字段同步到另一个数据库2的上万个小表中去。目前的方案是通过dblink结合游标,对数据库1中的该表的记录行循环执行insert into select * from @dblink where field = 条件 操作。但是这样的操作效率奇低。请问各位高手有木有别的方案来更加高效的实现?要求两个数据库都是open的。谢谢....

解决方案 »

  1.   

    建立一个配置码表tab
    字段有:sql语句,目标表。写个过程,扫描tab表,将数据插入到目标表中。这个主要工作是要把这个tab建立出来。
      

  2.   

    上万个???
    没接触过oracle数据仓库
      

  3.   

    增大回滚段?临时表空间?
    数据库1索引有没有建好?
    是select慢还是insert慢,还是?
      

  4.   

    insert /*+ append */ into 
    这样会快些,但是要注意一些细节,具体参考:

    Insert /*+append */ statement 
      

  5.   

    个人觉得不管是你的db1还是db2,都应该建立分区表......
      

  6.   

    1:优化,
    2:适用ORACLE的STRAM,GODELGATE进行同步
    3:建议适用触发器
      

  7.   

    如果一列数据要插入多个表,可以使用
    insert first 
     when into tab1 values(''') 
     when into tab2 values(''') 
    select * from 大表@dblink_数据库1;
      

  8.   

    考虑过这样实现,但是感觉效率上还是没有大的提高。我可以通过copy将数据先转移到数据库2上,然后再在数据库2上进行这样的操作是不是更快一些?减少了dblink的时间。