程魯明,肖菊香,郭 麗,陳 源
(成都飛機工業(yè)(集團)有限責任公司流程與信息化部,成都 610092)
PDM系統(tǒng)是用來管理所有與產品相關信息(包括零件信息、配置、文檔、CAD文件、結構、權限信息等)和所有與產品相關過程(包括過程定義和管理)的信息化管理系統(tǒng)。通過實施PDM,可以提高生產效率,有利于對產品的全生命周期進行管理,加強對文檔、圖紙、數據的高效利用,使工作流程規(guī)范化。因此,針對一個制造型企業(yè)而言,PDM系統(tǒng)是企業(yè)的生產管理和調度管理的關鍵信息化系統(tǒng)之一,其架構的完整與完善、系統(tǒng)的高效、穩(wěn)定運行則是保證企業(yè)PDM相關業(yè)務的關鍵。PDM系統(tǒng)是一個巨大的整體,包括應用、網絡、存儲、主機、數據庫等方面,PDM系統(tǒng)作為企業(yè)的核心應用,它的高效穩(wěn)定運行,是保障企業(yè)科研生產正常運轉的重要保障之一。而PDM數據庫架構仍然是傳統(tǒng)的Oracle單機運行模式,不足以支持分布式應用架構所承載的業(yè)務量,這將導致整個業(yè)務系統(tǒng)的瓶頸最終出現在數據庫層面,最終將使應用從傳統(tǒng)架構改造為分布式架構失去意義。如何對PDM數據庫進行優(yōu)化改造、采用何種架構才能最大程度地解決數據庫自身帶來的性能瓶頸以及后期維護等是有待解決的問題。
為了提高PDM系統(tǒng)的可靠性、可維護性,為用戶提供穩(wěn)定的系統(tǒng)保障服務,提高運行效率,對應用架構進行分布式改造,其整個系統(tǒng)性能得到極大提升,并發(fā)量增大,擴展性增強。
將PDM應用從傳統(tǒng)的單機環(huán)境改造為能夠支持高并發(fā)、具備高擴展性和高安全性的分布式架構,是從整體應用架構上達到預期效果的最好辦法,如圖1所示。

圖1 應用分布式改造
當業(yè)務系統(tǒng)架構從傳統(tǒng)單機改造為分布式之后,整個業(yè)務系統(tǒng)的運行支持能力得到極大提高,應用處理并發(fā)將從800提升到2000以上,即提升2倍以上,如圖2所示。

圖 2 應用分布式改造并發(fā)量對比

圖3 PDM 應用分布式改造后瓶頸
當應用架構通過改造得到巨大提升后,PDM數據庫的Oracle單機運行模式不足以支持分布式應用架構所承載的業(yè)務量,這將導致整個業(yè)務系統(tǒng)的瓶頸最終出現在數據庫層面,導致PDM應用從傳統(tǒng)架構改造為分布式架構的做法失去意義,如圖3所示。因此,如何解決在分布式應用改造后,整個PDM數據庫的性能保證及數據庫高并發(fā)、高可用是需要考慮的關鍵。由于IBM小型機是一個比較封閉的運行環(huán)境,如果進行單純的擴容和雙機改造,不僅方案實施難度大,而且需要消耗的硬件成本、軟件成本以及維護成本極大。此外,封閉式的小型機環(huán)境也為整個系統(tǒng)的高可用及容災帶來極大的困難。故以開放的X86架構對封閉式的小型機單機數據庫架構進行集群化,不僅可以提高數據庫層面的并發(fā)量,同時也可以為整個環(huán)境進行高冗余配置。此外,X86架構的開放性也可以促進整個架構的并發(fā)量,提升容錯率,降低TCO成本。
基于Oracle數據庫的分布式高可用架構,即采用輕量級的X86服務器代替?zhèn)鹘y(tǒng)架構下的小型機,結合當前Oracle數據庫的12C版本,進行數據庫重構,構建分布式的集群數據庫,從而提升數據庫的擴展性與并發(fā)量。此外,整個架構中構建了多個集群,不同的集群之間可以通過Oracle ADG技術進行實時數據同步復制,最終結合Oracle的閃回技術,則能夠實現多角色的數據庫容災集群,該容災集群既可以作為數據同步庫,也可以作為開發(fā)測試環(huán)境,兩者之間可以快速自由切換,如圖4所示。
全球最新的服務器X86將進入14nm工藝時代,這意味著X86架構的服務器將會具備更高的處理性能、更長的穩(wěn)定運行時間以及更低的能耗。下一代20nm工藝的DDR4(第四代雙倍速率同步動態(tài)隨機存儲器Dual Data Rate Synchronous DynamicRandom Access Memory)內存芯片將開始應用于數據中心高端服務器,基于差分信號技術的DDR4內存,其傳輸速率將會達到6.4Gb/s。

圖4 基于 Oracle 的分布式數據庫架構
Oracle 12C引入了CDB與PDB的新特性,在Oracle 12C數據庫引入的多租用戶環(huán)境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB全稱為Container Database,中文翻譯為數據庫容器,PDB 全 稱為Pluggable Database,即可插拔數據庫。在Oracle 12C之前,實例與數據庫是一對一或多對一關系(RAC),即一個實例只能與一個數據庫相關聯(lián),數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入Oracle 12C后,實例與數據庫可以是一對多的關系。
Oracle ADG(Active Data Guard)是管理、監(jiān)控和自動化軟件的基礎架構,它創(chuàng)建、維護和監(jiān)控一個或多個備用數據庫,以保護企業(yè)數據結構不受故障、災難、錯誤和崩潰的影響。Oracle ADG使備用數據庫保持為與生產數據庫在事務上一致的副本。這些備用數據庫可能位于距生產數據中心數千公里的遠程災難恢復站點,或者可能位于同一城市、同一建筑物內。當生產數據庫由于計劃中斷或意外中斷而變得不可用時,OracleADG可以將任意備用數據庫切換到生產角色,從而使與中斷相關的停機時間減到最少,防止數據丟失。作為Oracle數據庫企業(yè)版的一個特性,推出的Oracle ADG能夠與其它的Oracle高可用性(HA)解決方案(如真正應用集群RAC)和恢復管理器(RMAN)結合使用,以提供業(yè)內前所未有的高水平數據保護和數據可用性。Oracle ADG包括一個生產數據庫(也稱為主數據庫)以及一個或多個備用數據庫,這些備用數據庫是與主數據庫在事務上一致的副本。Data Guard利用重做數據保持這種事務一致性。當主數據庫中發(fā)生事務時,則生成重做數據并將其寫入本地重做日志文件中。通過Oracle ADG,還 將重做數據傳輸到備用站點上,并應用到備用數據庫中,從而使備用數據庫與主數據庫保持同步。Oracle ADG允許管理員選擇將重做數據同步還是異步地發(fā)送到備用站點上。備用數據庫的底層技術是Oracle ADG重做應用(物理備用數據庫)。物理備用數據庫在磁盤上擁有和主數據庫逐塊相同的數據庫結構,并且使用Oracle介質恢復進行更新。Oracle ADG簡化了主數據庫和選定的備用數據庫之間的轉換和故障切換,從而減少了由計劃停機和計劃外故障所導致的總停機時間。
為了使Oracle數據庫從任何邏輯誤操作中迅速地恢復,Oracle推出了閃回技術。該技術首先以閃回查詢(Flashback Query)出現在Oracle 9i版本中,后來Oracle在10g中對該技術進行了全面擴展,提供了閃回數據庫、閃回刪除、閃回表、閃回事物及閃回 版本查詢等功能。在12c中,Oracle繼續(xù)對該技術進行改進和增強,增加了閃回數據歸檔功能。
在Oracle 12c中,閃回技術包括以下各項:
(1)閃回數據庫(Flashback Database): 該特性允許用戶通過lf ashback database語句,使數據庫迅速地回滾到以前的某個時間點或者某個SCN(系統(tǒng)更改號)上,而不需要進行時間點的恢復操作。該功能不基于撤銷數據(undo data),而是基于閃回日志。(2)閃回丟棄(Flashback Drop):類似于操作系統(tǒng)的垃圾回收站功能,可以從中恢復被drop的表或者索引。該功能基于撤銷數據(undo data)。(3)閃回版本查詢(Flashback Version Query):通過該功能可以看到特定的表在某個時間段內所進行的任何修改操作,如同 電影回放一樣,表在該時間段內的變化一覽無余。該功能基于撤銷數據(undo data)。(4)閃回事務查詢(Flashback Transaction Query):使用該特性可以在事物級別上檢查數據庫的任何改變,大大方便了對數據庫的性能優(yōu)化、事務審計及錯誤診斷等操作。該功能基于撤銷數據(undo data)。(5)閃回表(Flashback Table):使用該特性可以確保數據庫表能夠被恢復到之前的某一個時間點上。注意,該功能與最早的9i中的Flashback Query不同,Flashback Query僅僅是得到了表在之前某個時間點上的快照而已,并不改變當前表的狀態(tài);而 Flashback Table卻能夠將表及附屬對象一起恢復到以前的某個時間點。該功能基于撤銷數據(undo data)。(6)閃回數據歸檔(Flashback Data Archive):通過 fl ashback data archive可以查詢指定對象的任何時間點(只要滿足保護策略)的數據,而且不需要利用到undo,這在有審計需要的環(huán)境或者是安全性特別重要的高可用數據庫中是一個非常好的特性。缺點就是如果該表變化很頻繁,對空間的要求可能很高。Flashback data archive是針對對象的保護,是 fl ashback database的一個強力補充。
Oracle ADG主要分為兩種模式:一種是物理備庫模式,一種是快照模式。其中,物理備庫即為傳統(tǒng)的數據庫備份模式,主要將redo日志從主庫實時傳輸到備庫中,并由備庫實時執(zhí)行,保持主備數據庫數據的一致性,此時主庫可用于讀寫,備庫為只讀狀態(tài)(該特性可以將主備庫進行分離使用,形成讀寫分離架構)。快照模式即為數據庫ADG的非同步模式,在該模式下,主備庫之間同步的redo日志不會在備庫進行執(zhí)行,兩個庫之間可以保持不一致。此時,備庫也為可讀寫狀態(tài),可作為測試庫使用。當回切為物理備庫模式后,redo日志會在備庫重新執(zhí)行,再次保持備庫與主庫數據一致。
雖然Oracle本身支持ADG多角色切換,但切換過程也需要專業(yè)的數據庫DBA進行相關操作。而通過自動化腳本,一鍵式形成ADG多角色自動化切換工具,則可以將底層切換命令代碼進行封裝,達到方便、快捷的切換目的。
由于原PDM數據庫環(huán)境是以IBM小型機為硬件基礎,以Oracle 11.2.0.4組成的Oracle RDBMS系統(tǒng),整個系統(tǒng)的封閉性較強,且在數據庫分布式高可用架構改造的過程中,除了需要對硬件基礎架構進行調整(調整為X86服務器),還需對數據庫進行大版本升級。因此,整個改造過程必須有標準步驟及測試方式,才能保證整個PDM系統(tǒng)數據庫在改造過程中的數據安全、系統(tǒng)穩(wěn)定。此外,后期也需要對應用開展細節(jié)性能測試,保證系統(tǒng)在改造后高效運行。
根據實際情況,基于Oracle數據庫的分布式高可用架構改造過程分為以下幾步:(1)數據庫服務器操作系統(tǒng)安裝;(2)分布式服務器集群實施;(3)分布式服務器集群高可用和穩(wěn)定性測試;(4)PDM應用數據遷移;(5)PDM應用優(yōu)化測試;(6)PDM備庫ADG配置;(7)PDM備庫自動切換腳本定制。
基于X86環(huán)境的數據庫服務器安裝操作系統(tǒng)版本為RedHat7.2。安裝完后,對操作系統(tǒng)進行用戶安全驗證、操作系統(tǒng)防火墻、操作系統(tǒng)虛擬內存參數、網絡參數等優(yōu)化調整,以滿足整個數據庫集群運行環(huán)境的安全性和穩(wěn)定性,同時滿足PDM分布式應用架構的高效穩(wěn)定運行要求。
根據原PDM系統(tǒng)的實際情況,對存儲空間進行規(guī)劃及劃分。完成后進行Oracle數據庫12.1版本的集群安裝,并根據原PDM配置的實際情況,調整數據庫內存參數、優(yōu)化器參數、新特性參數、審計等,達到最佳優(yōu)化調整效果,以確保數據庫運行的穩(wěn)定性。此外,還需通過安裝數據庫集群補丁集來避免數據庫集群軟件本身的不足。
由于分布式數據庫集群環(huán)境目前無完整的業(yè)務數據,故需要通過模擬壓力測試工具來開展數據庫集群環(huán)境的并發(fā)支撐能力、業(yè)務運行響應時間、IO響應時間等性能測試。其次是通過一系列的模擬網絡、存儲破壞,開展災難性模擬測試,以驗證數據庫集群的高可用及穩(wěn)定性。
PDM應用數據的遷移是整個分布式數據庫架構改造的核心。由于完整的遷移需要在保證業(yè)務停機時間最短的前提下,完成T級別的數據遷移,因此對數據的遷移方法選擇極為重要。根據原有PDM的數據量及跨平臺遷移需求,整個遷移過程采用表空間跨平臺增量傳輸同步技術來進行PDM數據庫數據從單機環(huán)境到集群環(huán)境的遷移升級。而在正式遷移之前,也需要通過多輪的測試驗證,確保整個遷移方案的穩(wěn)定可靠、失敗可回退。
當數據庫集群版本升級后,PDM應用模塊可能會出現部分業(yè)務模塊性能衰減的情況,因此必須根據業(yè)務實際的運行情況進行針對性的優(yōu)化改造,確保后期整個PDM系統(tǒng)的高效性。
當PDM應用架構改造后,整個系統(tǒng)的運行效率大幅提升,數據庫日志量的產生也會越來越大。因此,整個PDM數據庫分布式架構中,必須有響應的集群作為容災環(huán)境。而針對系統(tǒng)的容災環(huán)境,則可通過對Oracle 集群進行數據實時同步復制(ADG實施),可確保一旦生產集群出現故障時,業(yè)務能夠進行快速切換至ADG環(huán)境,保證整個業(yè)務在終端時間低于10分鐘,極大地提升業(yè)務的連續(xù)性和高可靠性。
的自動切換腳本定制開發(fā)在新架構下,根據ADG的特性,容災數據庫同步需要經常轉換成開發(fā)測試環(huán)境,以供開發(fā)功能性測試和壓力測試。一旦測試完畢后,又需要將數據庫轉換成同步庫,以進行數據實時同步,確保整個PDM系統(tǒng)的數據容災。因此,為了實現方便、快捷的轉換,在整個改造中也通過python定制化開發(fā)一鍵式自動化切換工具,以實現數據同步庫能夠自動實現從同步庫到開發(fā)庫、開發(fā)庫到同步庫的角色切換。
PDM系統(tǒng)作為制造企業(yè)的生產數據管理、調度的重要系統(tǒng)之一,其健康、穩(wěn)定、高效的運行是保證企業(yè)生產制造的關鍵。當系統(tǒng)出現故障或問題時,將嚴重影響到企業(yè)整個生產線運行。因此單機環(huán)境下的PDM應用不僅并發(fā)量不足,導致系統(tǒng)性能在高峰期時具有極大的運行壓力,而且單機運行也存在著極大的安全隱患,系統(tǒng)故障時將會造成業(yè)務長時間中斷而不能快速恢復。因此,PDM分布式應用+分布式數據庫的改造使得整個PDM系統(tǒng)的并發(fā)量成倍提升,而X86集群模式的數據庫架構也保證了底層數據的安全性,為PDM系統(tǒng)的安全、高效、高可用提供了最可靠的支撐。