informatica Session Load 无响应修复记录
前因
开发工作流完成,开发环境验证后上线测试环境验证,然而测试人员告知,测试环境中工作流运行到某一个Session后便开始长时间保持running状态,并且日志没有后续更新,甚至手动停止都需要反应一段时间才会停下任务。
根据在开发环境和测试环境的参数对比确认informatica服务无异常因素,然后确认数据库连接情况,该Session之前连接同一数据库同一schema的任务执行成功,也可以判断并非此问题。
思路
根据以往的排错思路会先从日志判断,日志中存在ERROR的情况比较好判断具体错误,但如果没有ERROR一切正常则开始考虑外部因素影响。
查看Session对应的日志,任务很快就完成了初期的自定义参数加载和数据获取阶段(WRITE阶段),然后开始进行LOAD阶段将数据写入目标表,而这一阶段开始日志出现停滞,后续无法更新。
首先考虑是否是服务器上资源吃紧线程阻塞,联系服务器对应的运维同事确认资源情况,得到的结果是资源充足,排除这一方面的情况。
然后考虑是否是数据量过大情况,之前曾存在有工作流涉及的千万条数据插入耗时3小时的先例,检查了测试环境对应的数据量以及表结构,甚至Session的相关属性设置,在开发环境复刻后运行无异常,排除这方面的可能。
最后考虑是否可能是锁,表被锁后无法响应Session的LOAD操作,这里使用了oracle数据库的表锁查询语句。
--确认表锁
select
b.owner,
b.object_name,
a.session_id,
a.locked_mode
from
v$locked_object a,
dba_objects b
where
b.object_id = a.object_id;
最后发现目标表被锁,联系DBA释放锁后Session运行正常,快速执行完成。