Oracle中如何插入大数据量记录
Oracle中如何插入大数据量记录?当记录超过1百万时,如果直接用 
          INSERT   INTO   tab1 
          SELECT   *   FROM   tab2;            
          速度相当慢,甚至导致死机,以前好象看过Oracle大数据量插入时要用游标,每插入100条左右则commit,是不是只能这样?请给点代码。
------解决方案--------------------假如tab1表中的没有数据的话   
 考虑这个思路:   
 DROP TABLE TAB1; 
 CREATE TABLE TAB1 AS SELECT * FROM TAB2;   
 然后在创建索引   
 第二中方法:采用HINT 
------解决方案--------------------INSERT /*+Append*/ INTO  tab1 
    SELECT * FROM tab2;
------解决方案--------------------100条提交一次还不如等数据全部插入完再提交。另外利用游标与直接insert ... select 一样需要全表扫描,所以建议直接使用insert ... select ... 形式,关键在于是否写日志及使用append提示减少数据操作的时间。建议方案是先修改表为不写日志: 
 sql> alter table table_name NOLOGGING; 
 然后采用JaneHello()提出的那种形式完成操作。 
 插入完数据后,再修改表写日志: 
 sql> alter table table_name LOGGING;   
 这里的区别就在于如果插入数据的同时又写日志,尤其是大数据量的insert操作,需要耗费较长的时间。
------解决方案--------------------(1)给当前的两个表分别改名 
 alter table tab1 rename to tab11; 
 alter table tab2 rename to tab1; 
 (2)导出改名前的tab2 
 exp user/pwd@... file=... log=... tables=(tab1) 
 (3)把名字改回来 
 alter table tab1 rename to tab2; 
 alter table tab11 rename to tab1; 
 (4)导入数据 
 imp user/pwd@... file=... log=... fromuser=user touser=user tables=(tab1)   
------解决方案--------------------我觉得三种方法可行吧 
 1  INSERT /*+Append*/ INTO  tab1 
     SELECT * FROM tab2;   
    这是直接插入不需处理回滚等一些事务....   
 2 把原表delete 掉 然后create as    
 3 因为你是oracle 所以在进行数据处理时最好使用批动,建议使用动态批处理方式,只要你的内存够大