您的位置:首页 > 数据库 > Oracle

oracle采用sqlldr入库堆积怎么办?

2013-02-18 18:10 323 查看
sqlldr入库是常用方式之一,也是最常见的。

我已经处理类似案例多次了,但是今天这次耗时最长。

分析原因:

1.入库报错(比如:没有分区,入库值的精度不对,列名少了一个等等)。

2.io压力大(索引单块读比较多,db file sequential read)

3.机器内存足够,但是oracle的sga不够,或者说sga_target pga_aggrent_target memry_xxxxx设置不对。

4.sqlldr本身进程多,多数为hang 的进程。

5.查看网络是否完好,SQL*Net more data from client

解决方案:

1.分析awr检查数据库压力,top5看看

Top 5 Timed Foreground Events

EventWaitsTime(s)Avg wait (ms)% DB timeWait Class
db file sequential read1,484,41314,3831051.51User I/O
DB CPU12,47844.69
SQL*Net more data from client5,655,79044401.59Network
cursor: pin S wait on X5,34391170.32Concurrency
enq: CR - block range reuse ckpt8,6417080.25Other

2.看看alert日志,看看是不是因为数据库的参数限制了入库进程。比如我上次遇到process满了,进程不够。

或者报错,导致数据库不可用,所以参数堆积。

3.禁用索引,降低db file sequential read。

4.ethtool 检查是否千兆网卡。

注:逐渐发现问题后,再补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: