有两个表数据量都在千万级,甚至亿级,需要把一个表中的数据存入到另外一个表中,
同时这两个表会有很多人同时访问,请问你会怎么操作?
比如:表结构怎么设计,如何把数据插入到另外一个表中等?尽量发挥.

解决方案 »

  1.   

    仅仅是插入的话,对于Oracle来说是很快的,如果你要批量插入,那速度会更快,至少比一条条插入快。至于多人访问你不用考虑,刚插入的数据再提交前是看不到的,所以也谈不上锁定的问题。
      

  2.   

    不需要时时的话,直接dmp导快。
      

  3.   

    1.导入法:通过到处A表成dmp文件,然后再导入B表中;2.插入法: insert /*+append*/ into A select * from B ;直接插入到表的最后,可以提高速度.
      

  4.   

    1、用hint语法
    INSERT /*+ APPEND NOLOGGING */ INTO tb
    SELECT /*+ PARALLEL(MRDataTemp) */ * from ta2、如果有索引,可以考虑先删除索引,插入后,再重新创建索引3、不需要考虑并发性,插入时不影响查询的
      

  5.   


    1.如果是两个表结构不相同的话应该不能使用dmp/imp
    2.使用insert into tab_a select columnA,columnB from tab_b 也不合适,因为数据量大的话提交和回滚会占用大量资源  建议使用游标和管道函数解决