Control-M作业配置手册.doc
系统Control-M作业配置手册Control-M 作业配置手册目 录1.概述41.1关于本手册41.2官方参考资料42.CONTROL-M概览52.1Control-M/EM和Control-M/Server52.2作业定义库和AJF63.作业概览83.1什么是作业83.2作业的组织方式83.3作业的生命周期84.作业定义工具94.1Control-M/Desktop94.2登录EM/Desktop:105.定义表和作业125.1定义SMART Table125.2定义Sub Table165.3定义Job216.实例276.1例一276.1.1登录Control-M/Desktop,参照4.2276.1.2新建SMART Tables05_sms276.1.3新建Jobs05_sms_start296.1.4新建Jobs05smsLastDateStatus,s05smsFileCopy,s05CKKHsmsFileCopy336.1.5新建Jobs05_sms_end376.1.6保存整个批量作业,点击File>Save426.2例二426.2.1登录Control-M/Desktop,参照4.2436.2.2新建SMART Tables14_Manual,参照6.1.2436.2.3新建Jobs14_Manual_start,参照6.1.3436.2.4新建Sub Tables14_Manual_ECTIP436.2.5新建Jobs14_Manual_ECTIP476.2.6新建Jobs14_Manual_end,参照6.1.5516.2.7保存整个批量作业,点击File>Save516.3例三516.3.1登录Control-M/Desktop,参照4.2526.3.2新建SMART Tables14_Tesq,参照6.1.2526.3.3新建JobTesqToFile_job526.3.4保存整个批量作业,点击File>Save566.4例四566.4.1登录Control-M/Desktop,参照4.2576.4.2新建SMART Tables08_asyntask,参照6.1.2576.4.3新建Jobs08_calltask_pf576.4.4保存整个批量作业,点击File>Save616.5例五616.5.1登录Control-M/Desktop,参照4.2626.5.2新建SMART Tables05_cx626.5.3新建Jobs05p0_cx_custInfo646.5.4保存整个批量作业,点击File>Save696.6例六696.6.1登录Control-M/Desktop,参照4.2706.6.2新建SMART Tables20,参照6.1.2706.6.3新建Jobs20_getdata706.6.4新建Jobs20_getdatadummy756.6.5保存整个批量作业,点击File>Save81 系统Control-M作业配置手册1. 概述1.1 关于本手册本文为Control-M (简称CTM)作业定义指南,详细介绍CTM中作业的运行方式和定义方式,并根据实际经验介绍在作业定义过程中需要考虑的因素和知识点。本文针对初次接触CTM的用户,同时也可作为有经验用户的参考资料。1.2 官方参考资料更详细的解释可以参考CTM官方文档,以下罗列了和本文所述内容相关的官方参考文档:n CONTROL-M/Enterprise Manager User Guide:EM使用指南,其中详细描述了作业定义的方式,本文基于此官方文档,配合实际项目经验,进行更有针对性的阐述。n CONTROL-M/Enterprise Manager Utility Guide:EM工具指南,介绍CTM提供的命令行工具,其中涵盖EM管理、作业定义、作业控制等工具。本文引用了此文档中关于作业定义的相关命令行工具。n CONTROL-M Job Parameter and Variable Reference Guide:作业所有的参数解释,本文中关于作业定义中涉及的参数都基于此文档,更详细的解释,请参考此文档。2. Control-M概览2.1 Control-M/EM和Control-M/Servern Control-M/EM: Enterprise Manager(简称EM) 提供一个集中化方式来定义和控制你的批处理作业环境,用户通过EM来定义作业、监控作业以及管理CTM整个架构环境。一个EM可以连接和管理多个Control-M/Server。n Control-M/Server: (简称Server)CTM核心部件,包含一个强大的作业排程引擎,用于排程作业、调起作业、管理作业流、更新作业状态等等n Control-M/Agent: 用于执行具体的作业调起动作,接受Control-M/Server的命令,安装于实体批处理作业所在系统中,具有超级用户权限。2.2 作业定义库和AJF上图描述了Write, upload, load, and download 操作的关系,这里只讲解和作业定义相关的几个概念。关于Write, upload, load, and download请参考CTM作业上线手册n 数据库:EM和Server分别拥有自己的数据库,分别记录各自的管理信息、作业定义、AJF(Active Jobs File)n AJF:Active Jobs File,活动作业环境,维护一个工作日内准备运行的所有作业。CTM Server每天(New Day)根据作业运行周期更新AJF,去除头天执行完成的作业,放入当天新的作业,清理之前的日志数据,最后将新的AJF同步到EM中。同时,作业执行状态改变和作业的手动干预也会更新AJF。将作业从定义库放入AJF库的过程叫Order或者Force,如下图:AJF生成、同步后,由Control-M/Server根据AJF中作业的定义开始这一天的作业调度。3. 作业概览3.1 什么是作业作业(Job)是Control-M中最基本的控制单元,用户通过定义和调起不同的作业来达到自动批处理的能力。在Control-M中作业的类型有四种:Command、Job、Detached、Dummy,常用的方式是Command,用户通过定义Command类型的作业可以在目标机执行指定的命令行或者指定路径脚本,类似crontab方式。因此我们可以将作业理解为一个具体的脚本,同时包含此脚本的调起计划、执行状态控制方式、执行后处理方式等属性。3.2 作业的组织方式作业在CTM中有两种组织方式:数据组织方式和逻辑组织方式n 数据组织方式:数据组织方式是CTM中作业的数据存储形式,可理解为物理组织方式,其结构是: Control-M/ServeràTablesàjobsCTM中的作业都定义与不同的表(Scheduling Table)中,对应到数据库中的表,一般将相关的作业放到一张表中。¨ 关于Scheduling Table有两种类型:Scheduling Table和Group Scheduling Table,其中后者是具有排程计划功能的Scheduling Table。n 逻辑组织方式:作业的展现方式,采用三层展现,便于作业的管理和监控,其组织结构是:Control-M/ServeràApplicationàGroupàjobs3.3 作业的生命周期第二章中讲到AJF是当天活动作业的调度环境,将作业放入AJF的动作叫order或者force,作业的生命周期起始于order/force,结束于完成后期处理(ENDED-OKàpost-process),CTM在newday时将完成生命周期的作业清理掉,进入新的一天,关于newday更详细的介绍请参考6.1 。注意:此处所讲生命周期是指作业被CTM自动调度的周期,不包含人为手动干预过程。4. 作业定义工具CTM提供图形化界面和命令行方式定义作业。一般使用图形化界面定义,命令行方式作为图形化的备用方案,在图形化不可用时可以采用命令行的方式定义作业。同时 XXX项目组提供了自有方案将EXCEL文件定义的作业导入CTM,具体使用方式请参考第7章。本文着重描述图形化界面定义作业的方法。4.1 Control-M/Desktop第2章概览中讲到CTM的两个大组件EM和Server,其中EM提供集中作业控制和CTM管理等功能,而图形化作业定义是通过EM中的工具Desktop来完成。EM图形化界面工具:n EM/GUI:作业运行监控和控制界面。n EM/Alerts:告警监控界面,从EM/GUI进入。n EM/Desktop:作业定义图形化工具。n EM/CCM:CTM组件管理工具,用于管理各个Server、agent等组件。n 下图展示了EM的架构,其中表示了EM客户端和EM架构的关系:n4.2 登录EM/Desktop:1 点击“Control-M Desktop”启动程序进入2 输入CTM用户名和密码,点击“Login”登录User Name:用户名Password:密码Server:连接服务器机器名3 进入Desktop界面:5. 定义表和作业5.1 定义SMART Table1 定义SMART Table,首先需要登录Control-M/Desktop(简称Desktop),参照4.22 新建SMART Table3 TabGeneralCONTROL-M:执行SMART表的Control-M/ServerTable:SMART表名字User Daily:用于每日order批量作业,与Application保持一致即可Application:应用名Group:组名,与Table保持一致Author:SMART表定义用户名,CTM中的用户4 TabSchedulingRBC Name:RBC名称,一般与SMART Table名称一致即可Days:表所执行的日期列表Months:表所执行的月份列表5 TabExecutionSubmit:设定SMART表开始执行的时间,>表示无限延长6 TabConditionIN Condition:设定SMART表执行的前置条件列表,如没有可以为空OUT Condition:设定SMART表执行完成后生产的后置条件列表,如没有可以为空7 TabPostProc设定SMART表执行完成所需要做的处理最常用的情况是当该SMART表执行完成后将删除前置条件删除或者生成后置条件下图表示SMART表执行成功后,删除前置条件IN-Condition,并生成后置条件OUT-Condition5.2 定义Sub Table1 Sub Table需要定义在一个SMART Table或者一个Sub Table中2 新建Sub Table,在SMART Table中右键,点击Add Sub-table3 TabGeneralCONTROL-M:执行子表的Control-M/ServerName:子表名字Parent:子表所属的父表Application:应用名,与所属SMART Table保持一致Group:组名,与所属SMART Table保持一致Author:子表定义用户名,CTM中的用户4 TabScheduling选择默认All即可5 TabExecutionSubmit:设定Sub表开始执行的时间,>表示无限延长,如果没有可以为空6 TabConditionIN Condition:设定Sub表执行的前置条件列表,如没有可以为空OUT Condition:设定Sub表执行完成后生产的后置条件列表,如没有可以为空7 TabPostProc设定Sub表执行完成所需要做的处理5.3 定义Job1 Job需要定义在一个SMART Table或者一个Sub Table中2 新建Job,在SMART Table中右键,点击Add Job3 TabGeneralCONTROL-M:执行作业的Control-M/ServerJob Name:作业名字Task Type:作业类型Command:脚本路径,或者命令Parent:作业所属表名Application:应用名,与所属SMART Table保持一致Group:组名,与所属SMART Table保持一致Owner:脚本执行用户名,实际执行系统用户Author:作业定义用户名,CTM中的用户4 TabSchedulingDays:作业所执行的日期列表Months:作业所执行的月份列表5 TabExecutionNode ID/Group:批处理服务器机器名Submit:设定作业开始执行的时间,>表示无限延长,如果没有可以为空6 TabConditionIN Condition:设定作业执行的前置条件列表,如没有可以为空OUT Condition:设定作业执行完成后生产的后置条件列表,如没有可以为空7 TabSteps设定作业执行完成所需要做的处理6. 实例6.1 例一定义一个由五个job顺序执行的批量作业,一个起始作业,一个结束作业,其他三个并列执行。起始作业执行成功后,三个并列作业开始执行,而结束作业是在他们三个作业全部执行成功后开始执行。作业9点30开始起批,且全年天天都执行,参考s05_sms1234566.16.1.1 登录Control-M/Desktop,参照4.26.1.2 新建SMART Tables05_sms1. SMART Table.TabGeneralTable:s05_smsUser Daily:s05_smsAppliacation:s05_smsGroup:s05_smsAuthor:emuser2. SMART Table.TabSchedulingRBC Name:s05_smsDays:点击All,全选Months:点击All,全选3. SMART Table.TabExecutionSubmit:设定s05_sms的起批时间为9:30,且如果超时也可以起批4. 点击“Save & Close”按钮,保存退出6.1.3 新建Jobs05_sms_start1. 在SMART Table s05_sms中右键,点击Add Job,新建一个Job作业s05_sms_start2. Job.TabGeneralJob Name:s05_sms_startTask Type:CommandCommand:/bin/sh Parent:s05_smsApplication:s05_smsGroup:s05_smsOwner:ctm(注意,因为sh中调用了ctm命令,所以执行sh脚本的用户是ctm)Author:emuser3. Job.TabSchedulingDays:点击All,全选Months:点击All,全选4. Job.TabExecutionNode ID/Group:T219N2V35. Job.TabConditions因为第一个作业执行后,有三个作业依赖于它,所以生成三个OUT Condition:s05_sms_start-END01036. 点击“Save & Close”按钮,保存退出6.1.4 新建Jobs05smsLastDateStatus,s05smsFileCopy,s05CKKHsmsFileCopy1. Job.TabGeneralJob Name:s05smsLastDateStatusTask Type:CommandCommand:/bin/sh Parent:s05_smsApplication:s05_smsGroup:s05_smsOwner:autosysAuthor:emuser2. Job.TabSchedulingDays:点击All,全选Months:点击All,全选3. Job.TabExecutionNode ID/Group:T219N2V34. Job.TabConditions设置前置和后置条件5. Job.TabSteps设置作业处理完成后的操作,这里需要在作业执行成功后删除前置条件,以后有前置条件的作业都需要作此操作6. 点击“Save & Close”按钮,保存退出6.1.5 新建Jobs05_sms_end1. Job.TabGeneralJob Name:s05_sms_endTask Type:CommandCommand:/bin/sh Parent:s05_smsApplication:s05_smsGroup:s05_smsOwner:autosysAuthor:emuser2. Job.TabSchedulingDays:点击All,全选Months:点击All,全选3. Job.TabExecutionNode ID/Group:T219N2V34. Job.TabConditions设置前置条件,以为这个结束作业所以后置条件为空5. Job.TabSteps设置作业处理完成后的操作,同一个条件ON可以执行多个操作DO6. 点击“Save & Close”按钮,保存退出6.1.6 保存整个批量作业,点击File>Save6.2 例二定义一个包含Sub Table的批量作业。一个起始作业,一个结束作业,一个Sub Table包含三个并列执行的作业。起始作业执行成功后,启动Sub Table包执行,而结束作业是在Sub Table执行成功后开始执行。作业9点30开始起批,且全年天天都执行,参考s14_Manual6.16.26.2.1 登录Control-M/Desktop,参照4.26.2.2 新建SMART Tables14_Manual,参照6.1.26.2.3 新建Jobs14_Manual_start,参照6.1.36.2.4 新建Sub Tables14_Manual_ECTIP1. 在SMART Table s14_Manual中右键,点击Add Sub-table,新建一个子表s14_Manual_ECTIP2. Sub-Table.TabGeneralName:s14_Manual_ECTIPParent:s14_ManualApplication:s14_ManualGroup:s14_ManualAuthor:emuser3. Sub-Table.TabCondeitions设置子表的前置和后置条件4. Sub-Table.TabPostProc设置作业处理完成后的操作,删除前置条件5. 点击“Save & Close”按钮,保存退出6.2.5 新建Jobs14_Manual_ECTIP1. 在Sub Tables14_Manual_ECTIP中右键,点击Add Job,在子表中新建三个并列执行的作业s14_BATCHINIT_FKYX,s14_BATCHINIT_HDYX,s14_BATCHINIT_SQTE2. Job.TabGeneralJob Name:s14_BATCHINIT_FKYXTask Type:CommandCommand:/bin/sh Parent:s14_Manual/s14_Manual_ECTIP 注意此处的结构体系Application:s14_ManualGroup:s14_ManualOwner:autosysAuthor:emuser3. Job.TabSchedulingDays:点击All,全选Months:点击All,全选4. Job.TabExecutionNode ID/Group:T219N2V35. Job.TabConditionsSub table启动后自动调用子表中的第一行的作业,所以可以不用设置前置条件6. 点击“Save & Close”按钮,保存退出6.2.6 新建Jobs14_Manual_end,参照6.1.56.2.7 保存整个批量作业,点击File>Save6.3 例三定义一个的批量作业。要求作业每15分钟运行一次,有效时间为从09:2822:00,参考s14_Tesq6.36.3.1 登录Control-M/Desktop,参照4.26.3.2 新建SMART Tables14_Tesq,参照6.1.26.3.3 新建JobTesqToFile_job1. 在SMART Table s14_Tesq中右键,点击Add Job,新建一个Job作业TesqToFile_job2. Job.TabGeneralJob Name:TesqToFile_jobTask Type:CommandCommand:/bin/sh Parent:s14_TesqApplication:s14_TesqGroup:s14_TesqOwner:autosysAuthor:emuser3. Job.TabSchedulingDays:点击All,全选Months:点击All,全选4. Job.TabExecutionNode ID/Group:T219N2V3Submit:09282200设置循环执行n 勾选Cyclic Jobn 设置Maximum为0,表示不限制循环次数n 点击Set按钮Rerun every:15Minutes,All intervalues are from jobs Start:表示每隔15分钟作业运行一次5. 点击“Save & Close”按钮,保存退出6.3.4 保存整个批量作业,点击File>Save6.4 例四定义一个的批量作业。要求作业每天运行4次,分别在00:05、05:05、10:05、15:05启动,参考s08_asyntask6.46.4.1 登录Control-M/Desktop,参照4.26.4.2 新建SMART Tables08_asyntask,参照6.1.26.4.3 新建Jobs08_calltask_pf1. 在SMART Table s08_asyntask中右键,点击Add Job,新建一个Job作业s08_calltask_pf2. Job.TabGeneralJob Name:s08_calltask_pfTask Type:CommandCommand:/bin/sh Parent:s08_asyntaskApplication:s08_asyntaskGroup:s08_asyntaskOwner:autosysAuthor:emuser3. Job.TabSchedulingDays:点击All,全选Months:点击All,全选4. Job.TabExecutionNode ID/Group:T219N2V3Submit:00012300设置循环执行n 勾选Cyclic Jobn 设置Maximum为4,表示作业最多循环四次n 点击Set按钮Rerun at:00:05 05:05 10:05 15:05,Tolerance(Minutes): 10表示作业分别在00:05 05:05 10:05 15:05启动,如果此时作业尚在运行则等待10分钟后启动5. 点击“Save & Close”按钮,保存退出6.4.4 保存整个批量作业,点击File>Save6.5 例五定义一个的批量作业。要求整个作业包仅在每月的10号,20号,30号跑批,其余时间不跑批,参考s05_ckkh6.56.5.1 登录Control-M/Desktop,参照4.26.5.2 新建SMART Tables05_cx1. SMART Table.TabGeneralTable:s05_cxUser Daily:s05_ckkhAppliacation:s05_ckkhGroup:s05_cxAuthor:emuser2. SMART Table.TabSchedulingRBC Name:s05_cxDays:选择10,20,30,这样批量作业包仅在这三天运行Months:点击All,全选3. SMART Table.TabExecutionSubmit:设定s05_cx的起批时间为7:30,且如果超时也可以起批4. 点击“Save & Close”按钮,保存退出6.5.3 新建Jobs05p0_cx_custInfo1. 在SMART Table s05_cx中右键,点击Add Job,新建一个Job作业s05p0_cx_custInfo2. Job.TabGeneralJob Name:s05p0_cx_custInfoTask Type:CommandCommand:/bin/sh Parent:s08_cxApplication:s08_ckkhGroup:s08_cxOwner:autosysAuthor:emuser3. Job.TabSchedulingDays:点击All,全选Months:点击All,全选注意,因为Job所在的SMATR Table已经设定了执行的日期,所以无需再在Job中设置,SMATR Table中的所有Job以及Sub Table都只在10,20,30这三天才会执行。4. Job.TabExecutionNode ID/Group:T219N2V35. 点击“Save & Close”按钮,保存退出6.5.4 保存整个批量作业,点击File>Save6.6 例六定义一个的批量作业。要求作业包含3个顺序执行的Job,其中仅中间的Job在每月的1号执行,其余两个每天都执行。因为作业执行有IN/OUT Conditions产生,所以不能像例五一样设置,否则第三个作业就无法在1号以外的日期正常运行了。解决方案是将中间的Job设置成1号执行,同时在新建一个dummy作业,在1号以外的日期执行,两个作业的IN/OUT Conditions是相同的。6.66.6.1 登录Control-M/Desktop,参照4.26.6.2 新建SMART Tables20,参照6.1.26.6.3 新建Jobs20_getdata此作业是一个中间作业,且仅1号执行1. 在SMART Table s20中右键,点击Add Job,新建一个Job作业s20_getdata2. Job.TabGeneralJob Name:s20_getdataTask Type:CommandCommand:Parent:s20Application:s20Group:s20Owner:administratorAuthor:emuser3. Job.TabSchedulingDays:选择1,这样批量作业仅在每月1号执行Months:点击All,全选4. Job.TabExecutionNode ID/Group:cisslet045. Job.TabConditions设置前置和后置条件6. Job.TabSteps设置作业处理完成后的操作,这里需要在作业执行成功后删除前置条件,以后有前置条件的作业都需要作此操作7. 点击“Save & Close”按钮,保存退出6.6.4 新建Jobs20_getdatadummy此作业是dummy类型,起作用仅仅是在s20_getdata作业不执行的情况下,仍然能够生成OUT Conditions,并且处理删除IN Conditions,保证下面的作业正常运行1. 在SMART Table s20中右键,点击Add Job,新建一个Job作业s20_getdatadummy2. Job.TabGeneralJob Name:s20_ getdatadummyTask Type:DummyParent:s20Application:s20Group:s20Owner:autosysAuthor:emuser3. Job.TabSchedulingDays:选择除了1以外的所有日期Months:点击All,全选4. Job.TabExecutionNode ID/Group:T219N2V35. Job.TabConditions设置前置和后置条件,与Job作业s20_getdata保持一致6. Job.TabSteps设置前置和后置条件,与Job作业s20_getdata保持一致7. 点击“Save & Close”按钮,保存退出6.6.5 保存整个批量作业,点击File>Save第 83 页