唯一约束违反了错误性能

时间:2014-01-09 16:00:56

标签: performance oracle

我在表中插入数百万条记录,这样的操作需要数小时或者一天。 2小时后,通过我的电脑连接断开,所以我想从头开始重复插入 我的问题
哪个更快?截断表并再次重复,创建主键并继续,但是由于在过去2小时内插入的每条记录“违反了唯一约束”,将引发错误。

2 个答案:

答案 0 :(得分:1)

截断表格(如果完全刷新)是最佳选择。如果您使用Oracle的SKIP实用程序,还有SQL*Loader参数。让我解释一下吧!

还尝试使用DIRECT加载选项使用SQL * Loader加载表。这意味着通过加载到数据块而不是传统的INSERT语句来加载表。

通过这种加载,您可以启用UNRECOVERABLE,这意味着没有/更少的重做日志被写入,因此加载速度非常快<70%比传统 {{1} }。

但是,此加载的缺点是,在加载开始之前,此表上的所有索引(INSERT约束除外)将被设置为 UNUSABLE ,并且将加载数据。在 SUCCESSFUL 完成时,NULL尝试通过重建来重新启用索引。因此,如果我的任何原因,加载已中断,错误消息将被正确记录,索引将保留 UNUSABLE

更多详情:请找Here
SQL*Loader / DIRECT正在加载)

此外,使用CONVENTIONAL,您可以使用SQL*Loader加载加载,这意味着Conventional将使用该文件生成INSERT块,并对其进行处理。在这种类型的装载中,所有INDEXES都将保留原样,并且表格保持不受伤害。

如果发生任何错误,SQL*Loader将记录SQL*Loader参数,这意味着,如果您指定该号码,则下次运行时,表格将从文件的该点加载。 / p>

有关SKIP的更多详情:Here

答案 1 :(得分:0)

不确定如何加载表,但这是一个经典的情况,你应该使用Oracle的外部表。