从字面上看,解释如下: 
 COMMIT       commit array insert (N)
 最近做一个项目的时候,看它实施脚本中 imp 选项里加了个commit=y,说是这样一来就可以避免快照过旧的问题,
 有熟悉的朋友能回答下commit=y的原理吗?
 

解决方案 »

  1.   

    意思就是 IMP的时候他会变导数据边COMMIT;如果不加的话。他只有导完结束才COMMIT;大数据量建议加COMMIT=Y。不然可能会锁表i
      

  2.   

    不懂,查了下参数解释,也只是说“提交数组插入”,纯字面翻译而已。不过我猜一下哦。
    可能在IMP的过程中会发生很多DML操作么,如果这些DML都在IMP的过程中不提交,而是在结束时一起提交的话,就会占用大量的UNDO空间,这样就有可能把以前存在的一些UNDO数据覆盖点,而恰恰这些被覆盖的UNDO可能是需要用到的。而如果在过程中对这些DML COMMIT的话,也许就可以通过什么方式来覆盖这些DML的UNDO,而不会去覆盖以前存在的那些需要的UNDO。乱说的哦,等高人解答,呵呵。
      

  3.   

    想下就知道,如果不写COMMIT=Y。数据量很大。比如上百万数据的插入。但你又没提交。一直堆积在那,占了 很大的 UNDO空间,导致表反映慢,索表。如果加了COMMIT=Y,他会自动插满一定量的数据提交。释放空间。
      

  4.   


    基本上是这个道理,commit=y的话,会在imp的过程中按照一定的方式经常进行提交。从而防止事务过长,undo段的压力降低,同时及时提交的话,不需要担心undo空间里的数据被冲掉了,也就从而减低了snapshot is old的发生的可能性。