日期:2014-05-17  浏览次数:21169 次

Oracle用SQL*LOADER并行导入有索引的表优化
本帖最后由 g394594141 于 2011-09-26 13:37:54 编辑
我现在遇见一个问题。问题描述描述如下:
数据库环境: 可能有多个机器往一台数据服务器上导入数据,导入数据的表都是一样的。
我每10分钟要导入一次数据,而导入的表有100多个,导入的量很大,需要在10分钟里导入完。
问题:为了提高导入速度,我使用了direct=y的参数。但是direct=y在多个机器同时往一个表里导入数据时,只有一个为导入成功,其他的都报 
SQL*Loader-951:  调用一次/加载初始化错误
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 。
于是在网上我查到可以用parallel=true来设置同时导入。但不幸的事情又发生了,因为我表里有索引,不能使用parallel=true。
如果每次导入我都删除索引,再重建索引,我觉得是否也会很慢,因为有好些表的数据都以千万计。

现在我不知道如果既能导入速度快,又不报错,小弟是半路出家,对oracle了解不深,希望各位大大能帮我解决这个问题,谢谢

------解决方案--------------------
我觉得不太现实,你说千万级的数据要求在10分钟内完成....
禁用索引确实能够提高速度!