杜 巍
(中國(guó)鐵路信息技術(shù)中心 信息工程部,北京 100844)
鐵路中央主機(jī)系統(tǒng)遷移總體方案
杜 巍
(中國(guó)鐵路信息技術(shù)中心 信息工程部,北京 100844)
通過(guò)對(duì)鐵路主機(jī)系統(tǒng)現(xiàn)狀分析,對(duì)開(kāi)放平臺(tái)的架構(gòu)設(shè)計(jì)、系統(tǒng)邏輯設(shè)計(jì)、應(yīng)用移植技術(shù)、數(shù)據(jù)庫(kù)調(diào)優(yōu)和系統(tǒng)實(shí)施運(yùn)行等方面的研究,提出了系統(tǒng)遷移的總體方案。實(shí)現(xiàn)對(duì)鐵路中央主機(jī)系統(tǒng)的平臺(tái)架構(gòu)、數(shù)據(jù)庫(kù)、數(shù)據(jù)和應(yīng)用程序的完整、高效、安全的遷移。
遷移;主機(jī);開(kāi)放平臺(tái);Oracle;數(shù)據(jù)遷移;并行
鐵路中央主機(jī)系統(tǒng)是TMIS的核心設(shè)備,運(yùn)行著十多個(gè)重要的應(yīng)用,保存了全路完整的貨票、確報(bào)、車(chē)號(hào)和集裝箱等主要信息。系統(tǒng)由3臺(tái)IBM大型機(jī)構(gòu)成均為早年采購(gòu),至今已運(yùn)行多年。IBM S/390系列主機(jī)為IBM第2代產(chǎn)品,早在2000年就退出銷(xiāo)售市場(chǎng),在 2005年廠家就停止了市場(chǎng)保修服務(wù)。隨著時(shí)間的推移,主機(jī)系統(tǒng)日益老化,系統(tǒng)軟件已不能升級(jí),設(shè)備備件沒(méi)有保障。整個(gè)主機(jī)系統(tǒng)的可靠性已經(jīng)不能滿足當(dāng)前運(yùn)輸生產(chǎn)對(duì)信息保障需求,存在嚴(yán)重的安全生產(chǎn)隱患。為確保鐵路信息系統(tǒng)安全穩(wěn)定運(yùn)行,更好地為運(yùn)輸生產(chǎn)經(jīng)營(yíng)服務(wù),提高鐵路信息系統(tǒng)的可用性,對(duì)不能滿足應(yīng)用需求的中央主機(jī)系統(tǒng)進(jìn)行更新改造勢(shì)在必行。
1.1 現(xiàn)狀分析
鐵路中央主機(jī)系統(tǒng)環(huán)境由主處理機(jī)、前置處理機(jī)、Web服務(wù)器等組成:主處理機(jī)負(fù)責(zé)運(yùn)行數(shù)據(jù)庫(kù)、進(jìn)行信息處理并為各種查詢請(qǐng)求提供服務(wù);前置系統(tǒng)負(fù)責(zé)對(duì)來(lái)自全路各基層站段的各種運(yùn)輸信息進(jìn)行校驗(yàn)和預(yù)處理,然后轉(zhuǎn)主機(jī)系統(tǒng)入庫(kù)處理,同時(shí)負(fù)責(zé)單項(xiàng)業(yè)務(wù)信息的收集、預(yù)處理和轉(zhuǎn)發(fā);Web服務(wù)器接收來(lái)自終端用戶的各種業(yè)務(wù)查詢請(qǐng)求。
主處理機(jī)全部運(yùn)行OS/390操作系統(tǒng)。系統(tǒng)應(yīng)用全部基于DB2數(shù)據(jù)庫(kù)、C語(yǔ)言開(kāi)發(fā),主機(jī)上的應(yīng)用程序?qū)?shù)據(jù)庫(kù)訪問(wèn)基本上都是通過(guò)嵌入式C語(yǔ)言編程,存在少量的存儲(chǔ)過(guò)程;鐵路局到鐵路總公司中央系統(tǒng)、中央主機(jī)和前置系統(tǒng)之間的數(shù)據(jù)傳輸采用MQ中間件;B/S、C/S模式的應(yīng)用,均通過(guò)DB2客戶端直連方式訪問(wèn)數(shù)據(jù)庫(kù);應(yīng)用前置處理的開(kāi)發(fā)主要基于C語(yǔ)言進(jìn)行編程,Web應(yīng)用有Java、ASP、.NET等編程語(yǔ)言實(shí)現(xiàn)。
1.2 遷移目標(biāo)范圍
1.2.1 數(shù)據(jù)遷移
歷史數(shù)據(jù)遷移:主機(jī)歷史數(shù)據(jù)以文本文件形式保存在主機(jī)系統(tǒng)的虛擬磁帶庫(kù)中,實(shí)現(xiàn)指定數(shù)據(jù)從主機(jī)DB2到UNIX平臺(tái)Oracle數(shù)據(jù)庫(kù)的遷移。
聯(lián)機(jī)數(shù)據(jù)遷移:根據(jù)用戶要求,實(shí)現(xiàn)指定數(shù)據(jù)從主機(jī)DB2到UNIX平臺(tái)Oracle數(shù)據(jù)庫(kù)的無(wú)損遷移。根據(jù)Oracle數(shù)據(jù)庫(kù)特性,實(shí)現(xiàn)DB2到Oracle的數(shù)據(jù)類(lèi)型轉(zhuǎn)換。
對(duì)遷移后的數(shù)據(jù)進(jìn)行驗(yàn)證,確保數(shù)據(jù)的一致性和完整性。
1.2.2 應(yīng)用移植
完成目前運(yùn)行于中央主機(jī)上基于DB2數(shù)據(jù)庫(kù)C語(yǔ)言研發(fā)的多個(gè)應(yīng)用到UNIX平臺(tái)基于Oracle的C語(yǔ)言應(yīng)用完整移植。
完成所有中央主機(jī)DB2數(shù)據(jù)庫(kù)客戶端應(yīng)用(B/S、C/S)向Oracle的移植。
在確保應(yīng)用功能一致的前提下,優(yōu)化應(yīng)用結(jié)構(gòu),提高應(yīng)用性能。
2.1 開(kāi)放平臺(tái)架構(gòu)
中央主機(jī)系統(tǒng)更新改造后,系統(tǒng)應(yīng)采用4層模式(客戶端+Web服務(wù)器+應(yīng)用處理層+數(shù)據(jù)庫(kù)層)。系統(tǒng)資源劃分為4個(gè)不同的層次,如圖1所示。
圖1 開(kāi)放平臺(tái)架構(gòu)圖
(1)數(shù)據(jù)庫(kù)層:保證應(yīng)用數(shù)據(jù)庫(kù)的可靠性和可恢復(fù)性,保證為其用戶提供準(zhǔn)確、唯一的數(shù)據(jù)和快速的數(shù)據(jù)訪問(wèn)。(2)應(yīng)用服務(wù)層:根據(jù)業(yè)務(wù)的需要建立相應(yīng)的應(yīng)用程序,處理業(yè)務(wù)邏輯和更改數(shù)據(jù)庫(kù)的數(shù)據(jù)。(3)接入訪問(wèn)層:提供用戶接入和數(shù)據(jù)瀏覽的接口,客戶通過(guò)接入訪問(wèn)層可以方便輕松的獲得其所需的信息。(4)客戶端:是客戶的數(shù)據(jù)操作層,該層主要是提供業(yè)務(wù)系統(tǒng)和使用者之間的接口。
2.2 系統(tǒng)邏輯架構(gòu)
系統(tǒng)邏輯結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)邏輯結(jié)構(gòu)圖
(1)Web服務(wù)器群:利用多個(gè)刀片服務(wù)器作為應(yīng)用前端Web服務(wù)器使用,根據(jù)性能和并發(fā)用戶聯(lián)接的需求,建立負(fù)載均衡服務(wù)器集群機(jī)制,保障性能和可靠性。 (2)應(yīng)用服務(wù)器群:采用UNIX服務(wù)器作為應(yīng)用和MQ通信服務(wù)器,每臺(tái)服務(wù)器建議配置32核CPU和128 GB內(nèi)存,在每臺(tái)服務(wù)器上劃分多個(gè)分區(qū),提供給貨票、確報(bào)、車(chē)號(hào)、集裝箱等系統(tǒng)的后端應(yīng)用和MQ通信使用,通過(guò)HA集群技術(shù)實(shí)現(xiàn)高可用性,保障性能和可靠性。 (3)數(shù)據(jù)庫(kù)服務(wù)器群:采用2臺(tái)高端UNIX服務(wù)器作為數(shù)據(jù)庫(kù)服務(wù)器,每臺(tái)物理服務(wù)器建議配置64核CPU和512 GB內(nèi)存,每臺(tái)物理服務(wù)器可劃分為多個(gè)分區(qū)。服務(wù)器通過(guò)2臺(tái)萬(wàn)兆網(wǎng)絡(luò)交換機(jī)建立數(shù)據(jù)庫(kù)專(zhuān)用高速網(wǎng)絡(luò),實(shí)現(xiàn)數(shù)據(jù)庫(kù)服務(wù)器之間的內(nèi)部數(shù)據(jù)高速交換。分區(qū)服務(wù)器構(gòu)成多節(jié)點(diǎn)的RAC,建立負(fù)載均衡服務(wù)器集群機(jī)制,提供高效、不間斷的數(shù)據(jù)庫(kù)服務(wù)。(4)存儲(chǔ)系統(tǒng):配置2臺(tái)128口光纖交換機(jī)、2臺(tái)高端磁盤(pán)陣列、1臺(tái)虛擬磁帶庫(kù),1臺(tái)高速磁帶庫(kù),構(gòu)建存儲(chǔ)網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)據(jù)的高速訪問(wèn)、可靠存儲(chǔ)。
2.3 移植技術(shù)分析
2.3.1 前期分析和計(jì)劃
分析需要移植的系統(tǒng)應(yīng)用包括外部連接方式、內(nèi)部所有模塊的功能、模塊間的關(guān)聯(lián)關(guān)系、模塊之間的數(shù)據(jù)流向和各模塊采取的技術(shù)實(shí)現(xiàn)方式;明確整個(gè)系統(tǒng)中采用的軟件及其版本信息,確定每個(gè)子系統(tǒng)(模塊)的規(guī)模、開(kāi)發(fā)方式等。
基于上述調(diào)研分析后,制定移植計(jì)劃,明確相關(guān)參與人員和具體工作內(nèi)容,各個(gè)階段的里程碑。
2.3.2 移植方法過(guò)程
(1)確認(rèn)移植工作范圍和計(jì)劃,明確開(kāi)發(fā)/移植規(guī)范,包括編程規(guī)范和版本管理等,明確各相關(guān)部門(mén)負(fù)責(zé)人/接口人;(2)準(zhǔn)備移植環(huán)境,包括軟件和編譯環(huán)境的安裝,對(duì)數(shù)據(jù)庫(kù)需要建立好庫(kù)表結(jié)構(gòu),開(kāi)發(fā)用戶的建立,待移植的源代碼準(zhǔn)備就緒;(3)修改源代碼,創(chuàng)建編譯源代碼的makefile文件;(4)編譯源代碼,并修改編譯錯(cuò)誤或警告的代碼;(5)對(duì)編譯后的代碼單元測(cè)試; (6)模塊測(cè)試和集成測(cè)試。
2.4 系統(tǒng)遷移測(cè)試
為了保證新舊系統(tǒng)切換的成功和業(yè)務(wù)的過(guò)渡,有必要對(duì)所要切換的系統(tǒng)及其關(guān)聯(lián)系統(tǒng)進(jìn)行充分的測(cè)試,測(cè)試是保證切換后業(yè)務(wù)系統(tǒng)能夠正常運(yùn)行的重要手段。其目的如下:(1)從業(yè)務(wù)目標(biāo)的角度評(píng)估IT集成架構(gòu)合理性;(2)從業(yè)務(wù)需求的角度對(duì)新系統(tǒng)的功能特性進(jìn)行充分的驗(yàn)證;(3)從業(yè)務(wù)運(yùn)維的角度對(duì)新系統(tǒng)非功能特性(性能、壓力)得到充分的驗(yàn)證。
通過(guò)測(cè)試,對(duì)新系統(tǒng)可能存在的缺陷、性能瓶頸進(jìn)行及時(shí)發(fā)現(xiàn)和建議。遷移測(cè)試主要包含業(yè)務(wù)功能測(cè)試、性能和可用性保證測(cè)試。
2.5 系統(tǒng)試運(yùn)行
數(shù)據(jù)和應(yīng)用遷移完成以后,新舊兩套系統(tǒng)應(yīng)并行運(yùn)行,各鐵路局所有發(fā)往舊系統(tǒng)的數(shù)據(jù)同時(shí)發(fā)往新系統(tǒng),新舊系統(tǒng)的數(shù)據(jù)接收以及分解入庫(kù)的程序同時(shí)工作。
用戶接入新系統(tǒng),使用新系統(tǒng)的功能。并行一段時(shí)間后,如果通過(guò)檢驗(yàn)發(fā)現(xiàn)新系統(tǒng)中所有的業(yè)務(wù)系統(tǒng)的運(yùn)行良好,則表明切換成功,系統(tǒng)進(jìn)入試運(yùn)行階段。
3.1 系統(tǒng)軟硬件配置
3.1.1 系統(tǒng)硬件配置
(1)數(shù)據(jù)庫(kù)服務(wù)器。中央主機(jī)系統(tǒng)遷移工程的數(shù)據(jù)庫(kù)服務(wù)器,負(fù)責(zé)原中央主機(jī)系統(tǒng)上所有應(yīng)用的數(shù)據(jù)存取和訪問(wèn)控制。數(shù)據(jù)庫(kù)服務(wù)器提供數(shù)據(jù)管理服務(wù)和數(shù)據(jù)集成分析服務(wù),存放所有應(yīng)用的靜態(tài)和動(dòng)態(tài)數(shù)據(jù)信息。數(shù)據(jù)庫(kù)服務(wù)器采用2臺(tái)高性能小型機(jī)。每臺(tái)服務(wù)器配置不低于:64核CPU,512 GB內(nèi)存,24×300 GB內(nèi)置硬盤(pán),24個(gè)千兆雙口網(wǎng)卡,24個(gè)萬(wàn)兆光口網(wǎng)卡,24個(gè)HBA光纖通道卡。劃分11個(gè)服務(wù)器分區(qū),部署Oracle數(shù)據(jù)庫(kù)、MQ傳輸、NBU備份等應(yīng)用,以及預(yù)留分區(qū)。2臺(tái)小型機(jī)數(shù)據(jù)庫(kù)服務(wù)器上相應(yīng)的服務(wù)器分區(qū)以集群方式工作,以保證系統(tǒng)高可靠性。
(2)應(yīng)用服務(wù)器。中央主機(jī)系統(tǒng)遷移工程的應(yīng)用服務(wù)器,負(fù)責(zé)原中央主機(jī)系統(tǒng)上所有應(yīng)用的后臺(tái)邏輯處理功能。應(yīng)用服務(wù)器采用2臺(tái)高性能小型機(jī)。每臺(tái)服務(wù)器配置不低于:48 CPU,256 GB內(nèi)存,24×300 GB內(nèi)置硬盤(pán),24個(gè)千兆雙口網(wǎng)卡,16個(gè)萬(wàn)兆光口網(wǎng)卡,24個(gè)HBA光纖通道卡。劃分6個(gè)服務(wù)器分區(qū),分別部署后臺(tái)應(yīng)用程序,以及預(yù)留分區(qū)。2臺(tái)應(yīng)用服務(wù)器上相應(yīng)的服務(wù)器分區(qū)以集群方式工作,以保證系統(tǒng)高可靠性。
(3)存儲(chǔ)及備份設(shè)備。中央主機(jī)系統(tǒng)遷移工程的存儲(chǔ)及備份設(shè)備,負(fù)責(zé)所有應(yīng)用當(dāng)前和歷史數(shù)據(jù)的存儲(chǔ)。存儲(chǔ)系統(tǒng)采用2臺(tái)高端磁盤(pán)陣列。每臺(tái)磁盤(pán)陣列配置不低于:40 TB有效容量, 512 GB Cache。磁帶庫(kù)采用1臺(tái)高端的虛擬磁帶庫(kù),配置不低于:48 TB容量,4個(gè)8 GB FC接口,2個(gè)萬(wàn)兆光口,2個(gè)千兆電口。
3.1.2 系統(tǒng)軟件配置
數(shù)據(jù)庫(kù)軟件:采用Oracle RAC,部署在2臺(tái)高性能的數(shù)據(jù)庫(kù)服務(wù)器上,用于提供應(yīng)用數(shù)據(jù)的存取及訪問(wèn)控制。
應(yīng)用中間件:采用Oracle Weblogic,主要部署在UNIX刀片服務(wù)器上,用于提供應(yīng)用程序的部署及訪問(wèn)。
磁盤(pán)鏡像軟件:采用Symantec Storage Foundation,部署在所有UNIX服務(wù)器上。該軟件主要實(shí)現(xiàn)備份恢復(fù)功能。
備份恢復(fù)軟件:采用Symantec NBU,服務(wù)器端部署在一臺(tái)獨(dú)立的NBU Server上,客戶端部署在每臺(tái)要做備份的服務(wù)器上。
3.2 遷移組織和計(jì)劃
3.2.1 組織結(jié)構(gòu)
系統(tǒng)遷移和實(shí)施按照質(zhì)量管理體系的相關(guān)流程,采用項(xiàng)目制管理方式。組織結(jié)構(gòu)由公司領(lǐng)導(dǎo)統(tǒng)一指揮,組建各相關(guān)部門(mén)、集成供應(yīng)商、應(yīng)用負(fù)責(zé)人和技術(shù)人員共同參與的項(xiàng)目團(tuán)隊(duì),制定全面的技術(shù)方案以及風(fēng)險(xiǎn)應(yīng)對(duì)措施,并按應(yīng)用制定詳細(xì)執(zhí)行計(jì)劃。
遷移實(shí)施過(guò)程中,實(shí)行應(yīng)用與維護(hù)等技術(shù)人員值守制度,保證24 h實(shí)時(shí)監(jiān)控,出現(xiàn)問(wèn)題及時(shí)解決,并對(duì)運(yùn)行性能進(jìn)行實(shí)時(shí)監(jiān)測(cè)和優(yōu)化調(diào)整,應(yīng)用通過(guò)新老環(huán)境的并行運(yùn)行實(shí)現(xiàn)過(guò)渡。組織架構(gòu)如圖3所示。
圖3 組織架構(gòu)
3.2.2 遷移計(jì)劃
遷移計(jì)劃內(nèi)容見(jiàn)表1。
3.3 系統(tǒng)遷移關(guān)鍵技術(shù)要點(diǎn)
3.3.1 數(shù)據(jù)遷移的技術(shù)要點(diǎn)
(1)數(shù)據(jù)結(jié)構(gòu)的移植。主機(jī)數(shù)據(jù)庫(kù)對(duì)象定義移植;View,Triggers等在數(shù)據(jù)遷移好之后針對(duì)應(yīng)用需求和SQL執(zhí)行性能要求添加;遷移重點(diǎn)在Table級(jí)別,重新規(guī)劃TABLESPACE的空間和結(jié)構(gòu);考慮業(yè)務(wù)需求及新系統(tǒng)的變化,修改數(shù)據(jù)結(jié)構(gòu);存儲(chǔ)的規(guī)劃和重新部署。
DB2和Oracle在某些數(shù)據(jù)類(lèi)型的定義上有一定差異性,要考慮各種數(shù)據(jù)類(lèi)型的匹配關(guān)系。例如:DB2日期類(lèi)型為DATE和TIME兩種分別存放日期和時(shí)間,Oracle中日期類(lèi)型為DATE統(tǒng)一存放日期和時(shí)間,可將日期和時(shí)間字段合并遷移。DB2中數(shù)值類(lèi)型可統(tǒng)一轉(zhuǎn)換為Oracle中NUMBER類(lèi)型,DB2中CHAR類(lèi)型可統(tǒng)一轉(zhuǎn)換為Oracle中VARCHAR2類(lèi)型等。
表1 遷移計(jì)劃內(nèi)容表
(2)數(shù)據(jù)的移植方法。SQL*Loader將文本數(shù)據(jù)裝入Oracle數(shù)據(jù)庫(kù)中;Oracle Transparent Gateway for DB2在DB2數(shù)據(jù)庫(kù)和Oracle 數(shù)據(jù)庫(kù)之間建立連接,通過(guò)Oracle的數(shù)據(jù)庫(kù)鏈接(Database Link)技術(shù)將DB2數(shù)據(jù)Copy到Oracle數(shù)據(jù)庫(kù)中;用C編程方式簡(jiǎn)單地實(shí)現(xiàn)動(dòng)態(tài)轉(zhuǎn)換。
(3)系統(tǒng)并行的數(shù)據(jù)遷移要點(diǎn)。需要對(duì)數(shù)據(jù)庫(kù)的表進(jìn)行全面分析,盡量?jī)?yōu)化遷移方案,減少遷移時(shí)間和所需的停機(jī)時(shí)間;需要規(guī)劃出合理的遷移時(shí)間窗口和遷移時(shí)間點(diǎn),同時(shí)規(guī)劃系統(tǒng)遷移所需的應(yīng)用停機(jī)時(shí)間和相應(yīng)的數(shù)據(jù)保留方案;數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)量很大且7×24 h服務(wù),無(wú)法進(jìn)行長(zhǎng)時(shí)間停機(jī)來(lái)進(jìn)行數(shù)據(jù)遷移,只能在業(yè)務(wù)運(yùn)行過(guò)程中根據(jù)應(yīng)用修改數(shù)據(jù)庫(kù)的情況進(jìn)行數(shù)據(jù)遷移。
3.3.2 數(shù)據(jù)遷移策略
假設(shè)2014.07.01系統(tǒng)遷移開(kāi)始試運(yùn)行。
3.3.2.1 表結(jié)構(gòu)遷移和應(yīng)用部署
(1)在07.01前完成所有的DB2數(shù)據(jù)庫(kù)結(jié)構(gòu)到Oracle數(shù)據(jù)庫(kù)的遷移。(2)完成開(kāi)放系統(tǒng)數(shù)據(jù)庫(kù)和應(yīng)用的部署,應(yīng)用功能與原主機(jī)生產(chǎn)系統(tǒng)完全一致,但開(kāi)放系統(tǒng)暫不接收任何生產(chǎn)數(shù)據(jù)。
3.3.2.2 數(shù)據(jù)遷移
(1)將07.01前有時(shí)間戳以及沒(méi)有數(shù)據(jù)修改的表中的數(shù)據(jù)卸載,遷移到Oracle開(kāi)放系統(tǒng)。假如歷時(shí)15天。(2)07.16某時(shí)間點(diǎn)停止現(xiàn)主機(jī)系統(tǒng)應(yīng)用和數(shù)據(jù)傳輸,保證現(xiàn)系統(tǒng)不再進(jìn)入新數(shù)據(jù),將07.01以來(lái)15天有時(shí)間戳的數(shù)據(jù)卸載并遷移到Oracle開(kāi)放系統(tǒng)(保證1天完成)。(3)啟動(dòng)現(xiàn)主機(jī)系統(tǒng)的應(yīng)用和遷移后開(kāi)放系統(tǒng)的應(yīng)用,MQ分別將數(shù)據(jù)發(fā)往新、舊系統(tǒng),開(kāi)始同步更新數(shù)據(jù)。
由于應(yīng)用訪問(wèn)的數(shù)據(jù)暫時(shí)用不到歷史,可以在系統(tǒng)正式切換后,根據(jù)一定的策略,逐步遷移到開(kāi)放系統(tǒng)中。
3.3.3 應(yīng)用移植技術(shù)要點(diǎn)
(1)應(yīng)用分析過(guò)程:分析總結(jié)內(nèi)部所有模塊的功能、模塊間的關(guān)聯(lián)關(guān)系、模塊之間的數(shù)據(jù)流向、各模塊采取的技術(shù)實(shí)現(xiàn)方式、明確整個(gè)系統(tǒng)中采用的軟件及版本信息、確定每個(gè)子模塊的規(guī)模和開(kāi)發(fā)方式、明確相關(guān)人員負(fù)責(zé)的具體內(nèi)容。(2)應(yīng)用移植過(guò)程:明確開(kāi)發(fā)/移植規(guī)范(編程規(guī)范和版本管理等)、明確各應(yīng)用程序負(fù)責(zé)人和接口方式、準(zhǔn)備移植環(huán)境(軟件和編譯環(huán)境的安裝,建立數(shù)據(jù)庫(kù)表結(jié)構(gòu),測(cè)試數(shù)據(jù))、開(kāi)發(fā)用戶建立、修改源代碼、做好單元測(cè)試和模塊功能測(cè)試。
3.3.4 應(yīng)用移植技術(shù)方法
DB2 CLI程序的遷移:DB2為 CLI (Call Level Interface),Oracle中為OCI,可以將這些C程序中的CLI調(diào)用直接轉(zhuǎn)換成Oracle的OCI函數(shù)調(diào)用,在改動(dòng)源碼最少的情況下達(dá)到移植目的。
DB2 C語(yǔ)言的遷移:可改成Oracle 的PRO*C實(shí)現(xiàn),過(guò)程化語(yǔ)言中Oracle的函數(shù)是DB2函數(shù)的超集。DB2中絕大部分的函數(shù)在Oracle中都是支持的,只有少量需要做一些修改。特別注意對(duì)DB2和Oracle中SQLCODE異常處理結(jié)果的轉(zhuǎn)換,注意DB2和Oracle中日期字段的變量定義、格式轉(zhuǎn)換和編程技巧的區(qū)別。
DB2 存儲(chǔ)過(guò)程的遷移:可將這些存儲(chǔ)過(guò)程改成相應(yīng)的Oracle PL/SQL存儲(chǔ)過(guò)程,這樣對(duì)前臺(tái)的應(yīng)用的改動(dòng)影響最少。
Oracle數(shù)據(jù)庫(kù)和DB2中很多數(shù)據(jù)類(lèi)型的匹配、SQL語(yǔ)句的寫(xiě)法等有一定差異,需要熟悉掌握相關(guān)編程技術(shù)。
3.3.5 性能優(yōu)化技術(shù)要點(diǎn)
Oracle表空間的合理規(guī)劃和重新劃分;關(guān)鍵表和大數(shù)據(jù)量表建成各類(lèi)分區(qū)表,在移植前Oracle數(shù)據(jù)庫(kù)的建立、表空間的劃分、具體數(shù)據(jù)的“落腳點(diǎn)”(如將關(guān)聯(lián)性大的表和Index等隔離在不同的存儲(chǔ)空間中),對(duì)關(guān)鍵性大表建成Partitioning方式,移植過(guò)程中的SQL優(yōu)化和移植后的數(shù)據(jù)庫(kù)內(nèi)存,參數(shù)調(diào)整等方面提前進(jìn)行規(guī)劃,設(shè)計(jì)性能調(diào)優(yōu)步驟,更好地發(fā)揮系統(tǒng)硬軟件的潛力;鑒于系統(tǒng)的壓力和數(shù)據(jù)的處理計(jì)算量非常大,建議對(duì)于一些大的數(shù)據(jù)表采取Oracle的Partitioning方式將其分成若干個(gè)小表,并盡量分布在不同的I/O通道上,以期達(dá)到I/O均衡和較少查詢量。在移植過(guò)程中,可改良相關(guān)的SQL寫(xiě)法,如盡量減少全表掃描、盡量減少大表的Join操作等。對(duì)于一些View中有很多的Join操作,并訪問(wèn)非常頻繁,不妨建成Oracle的物化視圖方式Materialize View,以存儲(chǔ)空間來(lái)保證查詢性能。
3.3.6 系統(tǒng)試運(yùn)行和并行的策略
(1)試運(yùn)行:應(yīng)用移植在測(cè)試環(huán)境下完成后,逐步向生產(chǎn)環(huán)境中遷移。在生產(chǎn)環(huán)境下進(jìn)行系統(tǒng)測(cè)試、負(fù)載測(cè)試、性能優(yōu)化工作。主要數(shù)據(jù)接收處理應(yīng)用在新舊兩套系統(tǒng)中同時(shí)傳輸,應(yīng)用同時(shí)處理。(2)并行運(yùn)行:數(shù)據(jù)和應(yīng)用遷移完成以后,新舊兩套系統(tǒng)并行運(yùn)行,所有發(fā)往中央系統(tǒng)的數(shù)據(jù)在新舊系統(tǒng)中同時(shí)接收,分解入庫(kù)程序、數(shù)據(jù)處理程序等同時(shí)工作。用戶接入新系統(tǒng),使用新系統(tǒng)的功能。如果通過(guò)檢驗(yàn)發(fā)現(xiàn)新系統(tǒng)中所有的業(yè)務(wù)系統(tǒng)的運(yùn)行良好,經(jīng)過(guò)一段時(shí)間的考驗(yàn),可認(rèn)為切換成功。(3)并行中應(yīng)急回退策略:新老系統(tǒng)需并行,直到新的系統(tǒng)完全穩(wěn)定為止,一旦發(fā)現(xiàn)新系統(tǒng)運(yùn)行問(wèn)題,馬上切換回老的系統(tǒng)。制定應(yīng)急預(yù)案,預(yù)先規(guī)定應(yīng)急回退的條件,一旦上線過(guò)程中達(dá)到應(yīng)急回退的條件,馬上回退。將回退的工作編寫(xiě)成完整腳本,并規(guī)定回退腳本的執(zhí)行順序。進(jìn)行回退演練,需要回退時(shí),按照預(yù)先演練好的順序執(zhí)行相關(guān)修改,盡可能縮短應(yīng)急回退的時(shí)間。
在領(lǐng)導(dǎo)小組的高度重視和大力支持下,各工作組全力配合,密切協(xié)作,鐵路中央主機(jī)系統(tǒng)已完整、安全、高效地遷移到開(kāi)房平臺(tái)中,系統(tǒng)數(shù)據(jù)完整同步、應(yīng)用功能一致運(yùn)行平穩(wěn),受到了鐵路總公司業(yè)務(wù)部門(mén)的充分肯定??偨Y(jié)如下:
(1)開(kāi)放平臺(tái)架構(gòu)設(shè)計(jì)是主機(jī)系統(tǒng)遷移到開(kāi)放平臺(tái)的前提條件,對(duì)遷移后的開(kāi)放平臺(tái)硬件、軟件資源和系統(tǒng)架構(gòu)進(jìn)行總體的規(guī)劃設(shè)計(jì),為系統(tǒng)遷移提供穩(wěn)定、高效的系統(tǒng)軟、硬件平臺(tái)。(2)對(duì)系統(tǒng)遷移組織架構(gòu)、職責(zé)、人員和計(jì)劃流程進(jìn)行全面的規(guī)劃,組建由各相關(guān)部門(mén)、集成供應(yīng)商、應(yīng)用負(fù)責(zé)人和技術(shù)人員共同參與的項(xiàng)目團(tuán)隊(duì),為遷移工作順利進(jìn)行提供了強(qiáng)大的組織保障。(3)分析數(shù)據(jù)和應(yīng)用遷移的技術(shù)方法,遷移工作的核心是數(shù)據(jù)遷移和應(yīng)用代碼遷移,重點(diǎn)研究數(shù)據(jù)遷移技術(shù)、方法和策略,應(yīng)用代碼移植的方法和技術(shù),對(duì)DB2和Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)、應(yīng)用程序移植等技術(shù)進(jìn)行深入的分析和研究,為系統(tǒng)遷移提供了切實(shí)可行的技術(shù)支撐。
[1]谷曉明,劉衛(wèi)國(guó).鐵路信息系統(tǒng)建設(shè)和應(yīng)用有關(guān)問(wèn)題研究[J].鐵路計(jì)算機(jī)應(yīng)用,2010,19(4):1-3.
[2]趙 靜,史天運(yùn),李 平.鐵路信息共享平臺(tái)中共享數(shù)據(jù)庫(kù)結(jié)構(gòu)和關(guān)鍵技術(shù)研究[J].鐵路計(jì)算機(jī)應(yīng)用,2010,19(9).[3]戴國(guó)華,董寶田,李明輝,等.鐵路數(shù)據(jù)資源整合的分析與設(shè)計(jì)[J].鐵路計(jì)算機(jī)應(yīng)用,2009,18(11):7-10.
[4]孫遠(yuǎn)運(yùn).TMIS總體架構(gòu)設(shè)計(jì)研究[J].鐵路計(jì)算機(jī)應(yīng)用,2005,16(7):11-14.
[5]李伏欣.鐵路信息共享平臺(tái)技術(shù)初探[J].中國(guó)鐵道科學(xué),2002(5):31-38.
[6]阿 杳.大機(jī)來(lái)襲—IBM推出面向中小企業(yè)的z9新品[J].微電腦世界,2006(7):151.
[7]朱蔚恒,周 偉,龍 舜.開(kāi)放平臺(tái)解決方案及其安全策略研究[J].計(jì)算機(jī)工程,2012(6):12.
[8]樊新華.關(guān)系數(shù)據(jù)庫(kù)的查詢優(yōu)化技術(shù)[J].計(jì)算機(jī)與數(shù)字工程,2009(12):188-192.
[9]謝 鵬.DB2通用數(shù)據(jù)庫(kù)的訪問(wèn)技術(shù)[J].微機(jī)發(fā)展, 2004(2):55-56.
[10]史曉磊.DB2數(shù)據(jù)庫(kù)在軟件中的應(yīng)用技巧[J].電腦與電信,2008(11):72-73.
[11]王 雷,曾蘊(yùn)波,王 璐.Oracle數(shù)據(jù)庫(kù)的性能調(diào)整與優(yōu)化方法探析[J].航天器工程,2008(6):129-133.
[12]鐘文龍,陳 磊.DB2與Oracle的數(shù)據(jù)倉(cāng)庫(kù)技術(shù)關(guān)鍵能力對(duì)比研究[J].電腦知識(shí)與技術(shù), 2005(26):9-11.
[13]張幸亞,張遵連.Pro*C開(kāi)發(fā)的幾點(diǎn)經(jīng)驗(yàn)[J].電腦知識(shí)與技術(shù),2005(12):6-8.
[14]肖 偉,趙嵩正.異構(gòu)環(huán)境下Oracle數(shù)據(jù)移植問(wèn)題研究[J].微型電腦應(yīng)用,2004(2):63-64.
[15]段衛(wèi)國(guó),李俊春 Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)遷移技術(shù)研究[J].信息技術(shù) ,2015(8):35-39.
[16]李永良.數(shù)據(jù)遷移在新舊系統(tǒng)中切換[J].中國(guó)計(jì)算機(jī)用戶,2003(Z2):45-46.
責(zé)任編輯 徐侃春
Migrating plan for Railway Central System
DU Wei
( Department of Information Engineering,China Railway Information Technology Center, Beijing 100844,China)
This article analyzed the current status of Railway Central System,studied on the open platform,design of logical architecture,technology of application transplantation,database optimization,system implementation and operation,etc.,proposed the migrating plan of the System.The migration for platform architecture,database,data and applications program of the System was implemented safely,effciently and perfectly.
migrating;Central System;open platform;Oracle;data migrating; parallel
U29∶TP39
A
1005-8451(2016)02-0027-06
2015-06-11
杜 巍,工程師。