定时任务在生产应用中的实现
2012-06-19徐井泉上海铁路局新长车务段
徐井泉 上海铁路局新长车务段
在生产应用系统运行中经常会遇到数据备份、数据清理及进程重启等需要定时或不定时人工进行干预这样的事,如十八点统计分析系统中对数据库的归档日志及现场数据的备份、确报系统中各种字典及车站系统中确报接收进程重启等等。虽然通过人工也能解决此类问题,但也存在两方面的不足,一是解决这样的问题需要掌握一定的系统和数据库相关知识,而技术维护人员由于分工的不同不可能都掌握相关知识。另一方面此类问题出现时必须有专人负责,但不能保证专门技术维护人员至始至终一直在现场,当遇到此类情况时就会影响到生产应用系统的正常运行。因此,通过定时执行相关的程序使得需要人工执行的动作让计算机自动执行,这样不但减轻了技术维护人员的负担,而且也保证了解决此类问题的正确性和及时性。
目前,此类问题在车务段生产系统中主要集中在十八点统计分析系统和车站确报系统中,这两种系统中的运行环境和数据库系统均有所不同,其中车站确报系统为SCO UNIX操作系统,而十八统计分析系统为windows2003操作系统。这涉及到采取何种定时执行程序的问题,因为运行环境不同,运行定时任务的程序也不同。下面分别对这两种生产应用系统进行阐述。
1 定时任务在车站确报系统中的应用
车站确报系统主要涉及接收确报进程的死机问题,对现场的影响很大。经常出现由于确报接收不正常而导致车站车号员和专业维护技术人员因为此类问题产生矛盾,一是此软件维护人员不能修改,出现此类问题只能重启相关进程,但也不知此进程什么时间发生死锁。二是车站现场车号员由于接收不到确报搞得工作很被动,但车号员也无法对此问题能解决,只有通过联系技术维护人员来得到此类问题的解决。为了解决此类问题,通过分析确报接收进程的工作过程,提出了以下解决方案。
由于车站确报系统的运行操作系统为SCO UNIX操作系统,所以选择的定时执行程序为crontab。通过crontab程序调用确报接收进程,定时重启确报接收进程能完全解决此问题。
1.1 修改确报接收程序的文件的执行属性
确报接收程序的文件名为strqb,其文件的属性必须改为执行属性,此文件位于/u/yzyz/bin目录下,命令为:
1.2 确报接收程序的脚本内容
命令解释如下:
显示启动确报文件内容
接收通过MQ通道的确报文件,初始确报落地的目录为工作目录下qb/original文件夹,并同时将接收确报的动作记入工作目录下rcvMQ.log日志文件中
执行工作目录bin文件夹下atis_receive的车号识别接收数据文件,同时将接收车号识别的动作过程记入atis接收日志rcvATIS.log文件中。
1.3 正常情况下确报接收进程的识别
正常情况下确报接收进程
1795为确报接收落地程序rcvMQ执行时的进程ID,rcvMQ为确报通过MQ通道接收落地文件。
1797为确报接收入库程序qb_receive执行的进程ID,qb_receive为将落地的确报数据进行入库。
1.4 对确报定时接收进程进行定制
命令解释如下:
将确报接收落地程序rcvMQ进行kill掉,为后面重启此程序作准备
将确报接收入库程序进行kill掉,为后面重启此程序作准备
对确报落地程序rcvMQ和确报入库程序 qb_receive进行重启
1.5 定时启动确报接收进程任务的制定
定时启动程序crontab规格说明
使用方式 :
crontab是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
参数:
crontab-e:执行文字编辑器来设定时程表,内定的文字编辑器是 VI
时程表的格式如下 :
其中 f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program表示要执行的程序。
1.6 定时启动确报接收进程制定
根据本站的实际情况,现场反映在十六点左右,确报经常容易收不到,所以决定将定时任务设定在每天下午四点左右。
16:50对确报接收进程进行重启,系统自动通过yzyz用户执行/u/yzyz/restartqb.sh脚本文件。
2 定时任务在十八点统计分析系统中的应用
车务段十八点统计分析系统是由华方公司组织设计和开发的,此系统基于WINDOWS操作系统,前台主要是用VB语言开发,而后台则是用ORACLE数据库和ORACLE中的PL/SQL语言开发,此系统在实际运行中给现场统计人员带来了很大的便利,统计的数据不但准确而且统计时间很短,得到了现场统计人员的好评。但在使用中也经常会出现无法登录到服务器,网页无法打开的现象。这样的问题在其它兄弟单位也出现过,但都是通过人工查看磁盘空间的使用情况和占有率。如果出现磁盘空间的占有率达到临界点时,就人工进行操作手工删除归档日志,腾出有效空间供数据库运行之用。由于十八点统计分析系统中没有对此类问题提出有效的解决方案,每次出现此类问题都要人工进行干预。这样一来就带来了几个弊端,一是如果有事耽误或忘记了就会使数据库无法正常运行。二是如果出现数据库无法正常运行,就会给我们技术维护人员和现场统计人员带来被动,影响正常的生产数据统计工作。
通过对车站确报系统的确报接收进程定时任务的制定得到了启示,设想通过定时任务的制定将此类工作交给计算机自动执行,一来可以减轻专业维护人员的工作量,二来也可以保证十八点统计分析系统数据库系统运行正常,不致于影响现场生产数据统计的正常运行。通过摸索找到了解决此类问题的方案,步骤如下:
2.1 定时任务脚本的定制
命令解释如下:
进入十八点统计分析系统数据库归档日志目录
删除前一次备份的归档日志
将服务器中数据库归档日志拷贝入归档日志备份目录arclog_bakak中
删除服务器数据库归档日志
2.2 定时删除数据库归档日志任务建立
2.2.1 调用服务器中定时任务的过程
开始→程序→附件→系统工具→任务计划
2.2.2 定时删除数据库归档日志任务
执行的脚本文件位于d盘目录arclog_bak下,脚本文件名为arclog.bat.
2.2.3 时间的设定和选择
定时删除服务器数据库归档日志的时间选在每周的星期二中午11点。
主要基于两方面考虑,一方面是中午11点左右十八点统计分析系统比较空闲,因为铁路上应用十八点统计系统在下午四点以后,所以选此时间可以避开十八点统计分析系统的繁忙时间,第二方面选每周的星期二,是因为每周一刚上班,需要提供许多报表供领导开会交班分析数据之用,这时十八点统计分析系统也显得比较繁忙。每周星期二执行备份及删除数据库归档日志,时间段为一个星期,正好符合华方公司保留一个星期归档日志的要求。
3 结束语
自从车站确报接收进程定时任务和十八点统计分析系统数据库归档日志定时任务投入使用后,经过一段时间的试用。通过和现场操作人员的沟通得知,以上遇到的问题后来就一直没有出现过。也就是说,通过对以上问题提出的解决方案达到了初期预想的结果。