我有情况!
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
update table TempTableA set moduleKey = $moduleKey where moduleKey = '-99' insert into FinalTableA as select * from TempTableA;
现在我不能并行运行这些模块,因为这些临时表被截断了。
有更好的解决方案吗?
我知道外部表,但这不是关于使用外部表,而是关于我如何解决使用共享临时表的问题。这也可能与运行并行负载无关。