徐井泉 上海鐵路局新長車務段
在生產應用系統運行中經常會遇到數據備份、數據清理及進程重啟等需要定時或不定時人工進行干預這樣的事,如十八點統計分析系統中對數據庫的歸檔日志及現場數據的備份、確報系統中各種字典及車站系統中確報接收進程重啟等等。雖然通過人工也能解決此類問題,但也存在兩方面的不足,一是解決這樣的問題需要掌握一定的系統和數據庫相關知識,而技術維護人員由于分工的不同不可能都掌握相關知識。另一方面此類問題出現時必須有專人負責,但不能保證專門技術維護人員至始至終一直在現場,當遇到此類情況時就會影響到生產應用系統的正常運行。因此,通過定時執行相關的程序使得需要人工執行的動作讓計算機自動執行,這樣不但減輕了技術維護人員的負擔,而且也保證了解決此類問題的正確性和及時性。
目前,此類問題在車務段生產系統中主要集中在十八點統計分析系統和車站確報系統中,這兩種系統中的運行環境和數據庫系統均有所不同,其中車站確報系統為SCO UNIX操作系統,而十八統計分析系統為windows2003操作系統。這涉及到采取何種定時執行程序的問題,因為運行環境不同,運行定時任務的程序也不同。下面分別對這兩種生產應用系統進行闡述。
車站確報系統主要涉及接收確報進程的死機問題,對現場的影響很大。經常出現由于確報接收不正常而導致車站車號員和專業維護技術人員因為此類問題產生矛盾,一是此軟件維護人員不能修改,出現此類問題只能重啟相關進程,但也不知此進程什么時間發生死鎖。二是車站現場車號員由于接收不到確報搞得工作很被動,但車號員也無法對此問題能解決,只有通過聯系技術維護人員來得到此類問題的解決。為了解決此類問題,通過分析確報接收進程的工作過程,提出了以下解決方案。
由于車站確報系統的運行操作系統為SCO UNIX操作系統,所以選擇的定時執行程序為crontab。通過crontab程序調用確報接收進程,定時重啟確報接收進程能完全解決此問題。
確報接收程序的文件名為strqb,其文件的屬性必須改為執行屬性,此文件位于/u/yzyz/bin目錄下,命令為:

命令解釋如下:

顯示啟動確報文件內容

接收通過MQ通道的確報文件,初始確報落地的目錄為工作目錄下qb/original文件夾,并同時將接收確報的動作記入工作目錄下rcvMQ.log日志文件中

執行工作目錄bin文件夾下atis_receive的車號識別接收數據文件,同時將接收車號識別的動作過程記入atis接收日志rcvATIS.log文件中。
正常情況下確報接收進程

1795為確報接收落地程序rcvMQ執行時的進程ID,rcvMQ為確報通過MQ通道接收落地文件。

1797為確報接收入庫程序qb_receive執行的進程ID,qb_receive為將落地的確報數據進行入庫。
命令解釋如下:

將確報接收落地程序rcvMQ進行kill掉,為后面重啟此程序作準備

將確報接收入庫程序進行kill掉,為后面重啟此程序作準備

對確報落地程序rcvMQ和確報入庫程序 qb_receive進行重啟
定時啟動程序crontab規格說明
使用方式 :
crontab是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。
參數:
crontab-e:執行文字編輯器來設定時程表,內定的文字編輯器是 VI
時程表的格式如下 :

其中 f1是表示分鐘,f2表示小時,f3表示一個月份中的第幾日,f4表示月份,f5表示一個星期中的第幾天。program表示要執行的程序。
根據本站的實際情況,現場反映在十六點左右,確報經常容易收不到,所以決定將定時任務設定在每天下午四點左右。

16:50對確報接收進程進行重啟,系統自動通過yzyz用戶執行/u/yzyz/restartqb.sh腳本文件。
車務段十八點統計分析系統是由華方公司組織設計和開發的,此系統基于WINDOWS操作系統,前臺主要是用VB語言開發,而后臺則是用ORACLE數據庫和ORACLE中的PL/SQL語言開發,此系統在實際運行中給現場統計人員帶來了很大的便利,統計的數據不但準確而且統計時間很短,得到了現場統計人員的好評。但在使用中也經常會出現無法登錄到服務器,網頁無法打開的現象。這樣的問題在其它兄弟單位也出現過,但都是通過人工查看磁盤空間的使用情況和占有率。如果出現磁盤空間的占有率達到臨界點時,就人工進行操作手工刪除歸檔日志,騰出有效空間供數據庫運行之用。由于十八點統計分析系統中沒有對此類問題提出有效的解決方案,每次出現此類問題都要人工進行干預。這樣一來就帶來了幾個弊端,一是如果有事耽誤或忘記了就會使數據庫無法正常運行。二是如果出現數據庫無法正常運行,就會給我們技術維護人員和現場統計人員帶來被動,影響正常的生產數據統計工作。
通過對車站確報系統的確報接收進程定時任務的制定得到了啟示,設想通過定時任務的制定將此類工作交給計算機自動執行,一來可以減輕專業維護人員的工作量,二來也可以保證十八點統計分析系統數據庫系統運行正常,不致于影響現場生產數據統計的正常運行。通過摸索找到了解決此類問題的方案,步驟如下:
命令解釋如下:

進入十八點統計分析系統數據庫歸檔日志目錄

刪除前一次備份的歸檔日志

將服務器中數據庫歸檔日志拷貝入歸檔日志備份目錄arclog_bakak中

刪除服務器數據庫歸檔日志
2.2.1 調用服務器中定時任務的過程
開始→程序→附件→系統工具→任務計劃
2.2.2 定時刪除數據庫歸檔日志任務
執行的腳本文件位于d盤目錄arclog_bak下,腳本文件名為arclog.bat.
2.2.3 時間的設定和選擇
定時刪除服務器數據庫歸檔日志的時間選在每周的星期二中午11點。
主要基于兩方面考慮,一方面是中午11點左右十八點統計分析系統比較空閑,因為鐵路上應用十八點統計系統在下午四點以后,所以選此時間可以避開十八點統計分析系統的繁忙時間,第二方面選每周的星期二,是因為每周一剛上班,需要提供許多報表供領導開會交班分析數據之用,這時十八點統計分析系統也顯得比較繁忙。每周星期二執行備份及刪除數據庫歸檔日志,時間段為一個星期,正好符合華方公司保留一個星期歸檔日志的要求。
自從車站確報接收進程定時任務和十八點統計分析系統數據庫歸檔日志定時任務投入使用后,經過一段時間的試用。通過和現場操作人員的溝通得知,以上遇到的問題后來就一直沒有出現過。也就是說,通過對以上問題提出的解決方案達到了初期預想的結果。