【发布时间】:2012-07-21 08:13:30
【问题描述】:
我有情况!
10 个模块每个处理大约需要将近 2 个小时,包括从外部文件加载数据,运行 20 个小时是不合理的,并且由于其编码方式,它们必须按顺序运行。每个模块都有一组相同的脚本,但处理不同的数据集。
组件:
a) 表:TempTableA、FinalTableA、TempTableB、FinalTableB; 这些表中的每一个都由一个模块键唯一地表示。 模块键默认为“-99” b)外部文件(FileA,FileB)没有模块键,只有数据。 c) 脚本知道该模块的模块密钥。 d) .ctr 文件
每个模块内部的代码或多或少都有以下步骤:
截断表 TempTableA sqlldr $USER/$PASSWRD@$PRD_SID control=ctr/fileA.ctr log=log/fileA.log bad=log/fileA.bad skip=1 rows=10000 silent=FEEDBACK
更新表 TempTableA 设置 moduleKey = $moduleKey where moduleKey = '-99' 插入 FinalTableA 作为 select * from TempTableA;
现在我无法并行运行这些模块,因为这些临时表被截断了。
有没有更好的解决方案?
我知道外部表,但这不是关于使用外部表,而是关于我如何解决使用共享临时表的问题。这也可能与运行并行负载无关。
【问题讨论】:
标签: parallel-processing sql-loader temporary staging