使用TERADATA自带的ETL工具ETL AUTOMATION一直有个很头疼的问题,就是进程假死,所有任务都是pending状态,不会变成running,经常早上上班发现一片pending,重启一下服务就正常调度了,一直找不出原因,没办法治根,只好想了个治标的办法:写perl脚本每天设定时间短常驻后台,读取进程状态表,发现runing进程数小于限定个数,并且有pending进程,说明调度不正常,十分钟扫描一次,连续两次都是这种情况,基本排除巧合遇到调度间隙,开始自动重启服务,重启部分如下:
system("net stop ETLAGT");
system("net start ETLAGT");
system("net stop ETLCLN");
system("net start ETLCLN");
system("net stop ETLGETALL");
system("net start ETLGETALL");
system("net stop ETLMAS");
system("net start ETLMAS");
system("net stop ETLMSG");
system("net start ETLMSG");
system("net stop ETLRCV");
system("net start ETLRCV");
system("net stop ETLSCH");
system("net start ETLSCH");
system("net stop ETLWDG");
system("net start ETLWDG");
print "服务重启完毕! \n";