我是靠谱客的博主 危机小兔子,最近开发中收集的这篇文章主要介绍小议IMP操作参数COMMIT=Y(三),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前一段时间在论坛上看到imp的COMMIT参数问题,于是打算简单总结一下。

这篇文章讨论COMMIT=Y对数据完整性的影响。

小议IMP操作参数COMMIT=Y(一):http://yangtingkun.itpub.net/post/468/254854

小议IMP操作参数COMMIT=Y(二):http://yangtingkun.itpub.net/post/468/255388


导入时设置COMMIT=Y不仅会带来性能方面的影响,更重要的时,设置了这个参数有可能导致数据的一致性出现问题,尤其是配合IGNORE=Y参数一起使用的时候。

如果设置了COMMIT=Y,那么导入过程会在一条数据或buffer中所有的数据插入后,进行提交。这意味着导入操作不再是一个事务。因此,当导入过程中途失败,Oracle回滚的只是最后一次插入的事务,而前面插入的数据都以及提交了。这可能意味着用户将很难恢复到导入开始的时刻,而且也很难继续导入未完的数据。

当然,两种情况可以避免出现这种问题。第一种情况就是导入的表本身不存在,或者是空的。这样可以简单的DROP TABLE或TRUNCATE TABLE清除所有已经导入的数据。

第二种情况是表本身有主键、唯一约束或唯一索引。这种情况虽然不是很容易恢复到导入之前的状态,但是利用主键等唯一约束,再次执行导入时,所有以及插入的数据在重新导入时都会报错,而上次未导入的数据则可以顺利导入。这种情况的问题是,由于导入操作会导致唯一性冲突错误,IMP时会报大量的错误,导入性能严重下降。导入的效率可能下降将近10倍。

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

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

转载于:http://blog.itpub.net/4227/viewspace-69152/

最后

以上就是危机小兔子为你收集整理的小议IMP操作参数COMMIT=Y(三)的全部内容,希望文章能够帮你解决小议IMP操作参数COMMIT=Y(三)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部