STMS传输队列中的请求状态一直是Running不能结束

通过STMS传输请求时,遇到了如下问题:

STMS传输请求,不论等多久的时间,请求状态一直是running,不能结束。但检查传输的内容时,发现CHANGE REQUEST包含的内容已经传输到目标Client。

查询了很多资料,终于解决了问题,总结如下。

1、CHANGE REQUEST包含的内容已经传输到目标Client,排除了RFC出错的可能性。并且也检查了RFC,没有发现存在问题。

2、分析与STMS传输任务相关的TABLE(ECC 6已经没有TMSTLOCK表):TMSTLOCK*、TRJOB、TRBAT。

查看TMSTLOCKNR Table,发现里有与处于running状态的CHANGE REQUEST相同数量的锁;

查看TRJOB Table,TRJOB里也有相同数量的任务在运行。

3、将处于锁定状态下的任务解锁,解锁的方法就是将相关表TMSTLOCK*里的记录清除(delete),delete的前提条件是确保所有delete的任务都已经传输到目标Client。将TMSTLOCKNR里的记录delete完成后,进入STMS查看请求传输的状态,这时传输的状态已全部为完成。

4、查看TRJOB Table,此时TRJOB已经没有记录。

5、查看TRBAT Table,发现TRBAT里仍有两条记录,从时间戳所标识的时间来看,这两条记录已过去很长时间了,且自此时间后所有的请求传输都不能结束,可以断定是由于此传输任务未结束导致后续请求无法传输,因此将这两条记录清除(delete)。在删除记录时,提示记录不能被删除,分析原因是由于后台tp进程正在使用表TRBAT。

解决办法:进入应用服务器查看tp进程:ps -ef | grep tp,将tp进程全部kill或者通过SM37结束tp进程,然后再删除。

6、产生一条新的CHANGE REQUEST做传输测试,传输可以正常结束。

注意:

Kill进程的时候要注意ssh到对应的应用服务器实例,不然ps是看不到tp进程的,然后千万不要kill错进程号,kill完进程后刷新stms队列就可以了。

发表评论