Sqlloader导数据进数据库时间过长或卡住原因探讨及解决办法

起因是每天10点由一个数据库通过sqlplus取出数据生成txt,通过sqlloader导入另一个数据库,平常sqlloader都是很快的,有一天突然就跑不动了,由于sqlloader采用的是直接路径加载(direct=true) ,在加载过程中索引失效了,直到加载结束才会重新维护索引。直接导致了第二天有查询到这张表的存储过程全部卡住了,这张表是一张上亿数据的流水表,结果可想而知。。。。。。。。。
记录图片

原因(待明确)

1.DBA跟我说可能是其它的应用往里读取和写入数据,资源抢占问题造成的,还可以看看是否出现了锁和等待(我感觉DBA就是在划水,自己也不知道,说的和没说一样)
2.上图经过时间是17个小时,而CPU时间却很少,是不是有其他抢占CPU资源导致?

解决办法

1.当时无法确定在需要多少时间才能完成,是上报了DBA杀了所有的等待会话,包括Sqlloader和存储过程,因为是强行结束,索引处于失效状态,还要重建索引,上亿数据的表重建索引是有点耗时的。

2.原来每天直接往一张上亿的流水表sqlloader几十万的数据,而且这表是许多存储过程依赖的源表,风险不是一般的大。现在修改为往一张临时表中sqlloader,临时表数据都是清空在导入,再通过存储过程往目标表每1000条导入一次,这样风险降到最低了。同时对后续数据处理的影响降到最小。

如果上面有错误和不足的地方,请各位大佬不吝赐教。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值