linux 企业4,Oracle10g。我们有20台产生数据的文件服务器。有4台入库服务器(linux企业4),平均每台入库服务器上挂4台数据服务器,所以台入库服务器上都会起4个入库程序的进程。每个进程会起20-50个sqlldr进程。所以一共就是(20*20) - (20*50) 个sqlldr进程存在(只要sqlldr进程数少于我设置的20或者50,入库程序就会自己补充sqlldr进程)。现在情况是这样的,在入库程序启动20分钟左右,就会发现sqlldr进程阻塞,而且时间特别长,我估计是sqlldr参数设置的问题。请高手帮忙分析一下,一下是我现在sqlldr语句,看看能不能针对我的状况,改进一下,解决sqlldr阻塞的问题。谢谢
sqlldr userid=%s/%s@%s SILENT=HEADER,FEEDBACK direct=true parallel=true" " SKIP_INDEX_MAINTENANCE=true" " control=%s.ctl" " discard=%s.dsc" " bad=%s.bad" " log=%s.log &",............是不是有什么参数可以改进sqlldr的效率。
sqlldr userid=%s/%s@%s SILENT=HEADER,FEEDBACK direct=true parallel=true" " SKIP_INDEX_MAINTENANCE=true" " control=%s.ctl" " discard=%s.dsc" " bad=%s.bad" " log=%s.log &",............是不是有什么参数可以改进sqlldr的效率。
如果大批量数据的话,通过exp/imp试下。
load data
infile 'a1.txt'
infile 'a2.txt'
...
append into t1
...
你可以测试以下
这个项目之前不是我做的,虽然每个数据文件,数据量很少,入库服务器是在不停的起sqlldr的,而且时间是不间隔的,在同一时间,有500的sqlldr进程在并发,是不是太多了,导致了sqlldr进程的阻塞。
入库之前对数据文件分析,条数少用insert,数据量大的用sqlldr,这个方案考虑过了,应为要改的东西太多,所以这是第二步,首先我是想在sqlldr语句参数上优化一下,尽量优化到最佳,我知道sqlldr有很多参数,具体怎么用没有涉及到过。请给个方案