问题:在ODI实际使用过程中,出现多个代理调度执行失败的情况,由于有失败后尝试次数的设置,在多次尝试执行后有可能有一次偶尔成功。查看错误信息出现的情况主要有:create table 对象已存在,drop table 对象正忙等。
原因分析:查看错误信息中详细信息,发现创建的表名主要是自动生成,例如:根据FILTER组件生成的类似C_$0FILTER。而在我的多个映射中,每个都使用了多个FILTER组件,且均为默认名称。不同映射中的FILTER存在重名的情况。
这样在多个映射在同一时间调度或者调度时间重合的情况的下,映射之间删除创建临时表的时候就会冲突,会出现等待、失败的情况。
问题解决:将所有用到的组件,全部采用有意义的不重复的命名方式,这样关联创建的临时表也不相同,不会再出现冲突。