ITPub博客

首页 > Linux操作系统 > Linux操作系统 > imp commit,buffer 参数

imp commit,buffer 参数

原创 Linux操作系统 作者:season0891 时间:2012-06-29 09:44:32 0 删除 编辑

imp commit,buffer 参数

imp user/password fromuser=user touser=user file=E:\11.dump tables= table_name buffer= 209715200 commit =yes feedback=100000 indexes=no ignore=yes

default COMMIT=N
COMMIT=Y 的优点在于可以避免大数据量导入的时候,对回滚段造成的压力。

在Oracle中频繁的COMMIT数据不但不会带来性能的提升,反而会降低COMMIT的性能。通过IMP导入时,如果设置了COMMIT=Y,性能明显会比不设置COMMIT=Y要差。
COMMIT=Y不会针对每条记录去COMMIT的,而是针对BUFFER中容纳的所有数据。可以通过加大BUFFER的方式来避免COMMIT=Y带来的性能影响。但是这个观点有一个前提。那就是表中不能包含LONG、LOB、REF、ROWID和UROWID列。如果包含了这些列,那么数组绑定插入将失效,每条记录的插入之后都会执行COMMIT操作。所以,设置了COMMIT=Y后,包含这些列的表的导入性能会严重下降。最后简单说一句,Oracle的文档中除了上面的这些列,还提到了DATE列,但是根据我的测试发现,DATE列似乎采用的就是数组插入的方式,怀疑文档这里有误。

导入时设置COMMIT=Y不仅会带来性能方面的影响,更重要的时,设置了这个参数有可能导致数据的一致性出现问题,尤其是配合IGNORE=Y参数一起使用的时候。如果设置了COMMIT=Y,那么导入过程会在一条数据或buffer中所有的数据插入后,进行提交。这意味着导入操作不再是一个事务。因此,当导入过程中途失败,Oracle回滚的只是最后一次插入的事务,而前面插入的数据都以及提交了。这可能意味着用户将很难恢复到导入开始的时刻,而且也很难继续导入未完的数据。当然,两种情况可以避免出现这种问题。第一种情况就是导入的表本身不存在,或者是空的。这样可以简单的DROP TABLE或TRUNCATE TABLE清除所有已经导入的数据。第二种情况是表本身有主键、唯一约束或唯一索引。这种情况虽然不是很容易恢复到导入之前的状态,但是利用主键等唯一约束,再次执行导入时,所有以及插入的数据在重新导入时都会报错,而上次未导入的数据则可以顺利导入。这种情况的问题是,由于导入操作会导致唯一性冲突错误,IMP时会报大量的错误,导入性能严重下降。导入的效率可能下降将近10倍。

所以在对以及存在数据的表执行IMP的时候,应该尽量的避免设置COMMIT=Y参数。

Default: n
Specifies whether Import should commit after each array insert. By default, Import commits only after loading each table, and Import performs a rollback when an error occurs, before continuing with the next object.
If a table has nested table columns or attributes, the contents of the nested tables are imported as separate tables. Therefore, the contents of the nested tables are always committed in a transaction distinct from the transaction used to commit the outer table.
If COMMIT=n and a table is partitioned, each partition and subpartition in the Export file is imported in a separate transaction.
For tables containing LOBs, LONG, BFILE, REF, ROWID, or UROWID columns, array inserts are not done. If COMMIT=y, Import commits these tables after each row.

come from:http://space.itpub.net/673608/viewspace-626821

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/90618/viewspace-734109/,如需转载,请注明出处,否则将追究法律责任。

下一篇: mysql 行转列
请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    790
  • 访问量
    1920828