楊國(guó)良,董 京,唐如意,劉金亮,李 雄,趙 佩
(1.國(guó)網(wǎng)河北省電力公司滄州供電分公司,河北 滄州 061000;2.國(guó)網(wǎng)河北省電力公司,石家莊 050000; 3.國(guó)電南瑞科技股份有限公司用電分公司,南京 210000)
基于用電信息采集系統(tǒng)的Oracle GoldenGate性能優(yōu)化方法
楊國(guó)良1,董 京1,唐如意2,劉金亮1,李 雄3,趙 佩2
(1.國(guó)網(wǎng)河北省電力公司滄州供電分公司,河北 滄州 061000;2.國(guó)網(wǎng)河北省電力公司,石家莊 050000; 3.國(guó)電南瑞科技股份有限公司用電分公司,南京 210000)
針對(duì)用電信息采集系統(tǒng)中,Oracler Golden Gate源端數(shù)據(jù)不能及時(shí)同步到目標(biāo)端,導(dǎo)致數(shù)據(jù)延遲的問(wèn)題,從抽取進(jìn)程、傳輸進(jìn)程、復(fù)制進(jìn)程等方面介紹Oracler GoldenGate的性能優(yōu)化方法,認(rèn)為必須深入分析業(yè)務(wù)系統(tǒng)的數(shù)據(jù)特性,合理的拆分進(jìn)程,才能真正解決Oracler GoldenGate的數(shù)據(jù)同步性能問(wèn)題。
用電信息采集系統(tǒng);Oracle Golden Gate;性能優(yōu)化;同步延遲
用電信息采集系統(tǒng)通常部署2套Oracle數(shù)據(jù)庫(kù),將遠(yuǎn)程采集到的基本數(shù)據(jù)寫入生產(chǎn)數(shù)據(jù)庫(kù),生產(chǎn)庫(kù)通過(guò)Golden Gate軟件將數(shù)據(jù)實(shí)時(shí)同步到查詢庫(kù),查詢庫(kù)面向用戶提供業(yè)務(wù)查詢和功能使用。Golden Gate是用電信息采集系統(tǒng)能否向最終用戶提供正常業(yè)務(wù)功能的關(guān)鍵環(huán)節(jié)。Oracler Golden Gate軟件(簡(jiǎn)稱“OGG”)的理論同步速度是亞秒級(jí),但由于現(xiàn)場(chǎng)各種復(fù)雜原因,其性能經(jīng)常受到影響,導(dǎo)致源端的數(shù)據(jù)不能及時(shí)同步到目標(biāo)端,甚至延遲會(huì)達(dá)到數(shù)小時(shí)之久,嚴(yán)重影響正常的業(yè)務(wù)應(yīng)用。影響OGG同步性能的因素涉及主機(jī)CPU、內(nèi)存、磁盤的I/O、網(wǎng)絡(luò)等多種因素,以下結(jié)合用電信息采集系統(tǒng)的OGG運(yùn)維經(jīng)驗(yàn)分別從抽取進(jìn)程、傳輸進(jìn)程、復(fù)制進(jìn)程三方面討論OGG的性能優(yōu)化方法。
1.1 正確設(shè)置OGG抽取進(jìn)程參數(shù)
OGG的抽取機(jī)制為首先讀取聯(lián)機(jī)日志,當(dāng)聯(lián)機(jī)日志不能滿足讀取要求時(shí)讀取歸檔日志尋找數(shù)據(jù)。如果OGG參數(shù)設(shè)置不合理,會(huì)使OGG讀取機(jī)制出現(xiàn)錯(cuò)誤。
例如,錯(cuò)誤配置了TRANLOGOPTIONS參數(shù),致使OGG的抽取端出現(xiàn)30 min至數(shù)小時(shí)的延遲。此案例抽取端數(shù)據(jù)庫(kù)服務(wù)器使用的是AIX操作系統(tǒng)的裸設(shè)備,而OGG在配置時(shí)使用了TRANLOGOPTIONS RAWDEVICEOFFSET 0,此參數(shù)的意義為設(shè)置OGG進(jìn)程從磁盤頭0位置開(kāi)始讀聯(lián)機(jī)日志,這與AIX的訪問(wèn)磁盤的方式不同(AIX默認(rèn)訪問(wèn)磁盤方式是從第4 096字節(jié)開(kāi)始訪問(wèn)),導(dǎo)致OGG在讀取聯(lián)機(jī)日志時(shí)無(wú)法識(shí)別文件,只能從歸檔日志進(jìn)行讀取,進(jìn)而出現(xiàn)巨大延遲。因此在配置OGG時(shí)必須保證所設(shè)參數(shù)跟所處平臺(tái)的特性相一致。
1.2 確保磁盤有較高的I/O性能
數(shù)據(jù)更新量越大,對(duì)聯(lián)機(jī)日志的磁盤I/O的要求越高,在規(guī)劃數(shù)據(jù)庫(kù)系統(tǒng)時(shí)對(duì)存儲(chǔ)聯(lián)機(jī)日志的磁盤和存儲(chǔ)數(shù)據(jù)文件的磁盤要區(qū)別對(duì)待,若有條件,聯(lián)機(jī)日志所使用的磁盤要考慮選擇raid0+1方案。
1.3 合理規(guī)劃抽取進(jìn)程
如果所要抽取同步的數(shù)據(jù)很大,需要對(duì)所抽取的數(shù)據(jù)特性進(jìn)行分析,規(guī)劃合理的OGG抽取進(jìn)程。OGG抽取進(jìn)程一般需要遵循以下規(guī)則:對(duì)于更新量很少的table應(yīng)該歸為一類,單獨(dú)構(gòu)建ogg進(jìn)程;將更新頻繁的table歸為另一類,這類table應(yīng)該構(gòu)建專有的進(jìn)程。
1.4 減少OGG抽取的TABLE數(shù)量
為了減少OGG的掃描工作量,應(yīng)對(duì)OGG進(jìn)程所抽取的TABLE數(shù)量進(jìn)行限制,對(duì)于無(wú)意義的數(shù)據(jù)表不要加入OGG進(jìn)程中,避免諸如TABLE SCHEMA.*的寫法。
1.5 使用多個(gè)進(jìn)程并行抽取
OGG抽取進(jìn)程效率較高,對(duì)于小業(yè)務(wù)系統(tǒng)一般僅使用一個(gè)抽取進(jìn)程即可,對(duì)于業(yè)務(wù)非常繁忙的系統(tǒng)則需考慮構(gòu)建多個(gè)抽取進(jìn)程,一般抽取進(jìn)程一旦出現(xiàn)延遲則需盡快考慮對(duì)此進(jìn)程進(jìn)行拆分[1]。
傳輸進(jìn)程出現(xiàn)延遲情況,則問(wèn)題一般集中在網(wǎng)絡(luò)帶寬性能方面。針對(duì)網(wǎng)絡(luò)帶寬性能問(wèn)題,可以采取以下辦法:
a.合理設(shè)計(jì)需要抽取同步的數(shù)據(jù)表,例如,數(shù)據(jù)表合理設(shè)置主鍵、唯一鍵或唯一索引,這樣可以減小隊(duì)列文件的大小,以減輕網(wǎng)絡(luò)傳輸壓力。
b.在傳輸進(jìn)程中的參數(shù)文件使用壓縮(添加compress參數(shù)),減小經(jīng)網(wǎng)絡(luò)傳輸隊(duì)列文件的大小。
c.另外,如果業(yè)務(wù)系統(tǒng)之間的數(shù)據(jù)同步無(wú)需進(jìn)行過(guò)濾或轉(zhuǎn)換,則需要在傳輸進(jìn)程的參數(shù)文件中添加PASSTHRU參數(shù)。
3.1 拆分進(jìn)程
OGG的同步延遲較多出現(xiàn)在復(fù)制進(jìn)程上,因?yàn)閺?fù)制進(jìn)程在同步數(shù)據(jù)時(shí)依次執(zhí)行相關(guān)邏輯SQL,且復(fù)制進(jìn)程的寫操作較抽取進(jìn)程的讀操作資源消耗高,故單個(gè)OGG復(fù)制進(jìn)程的效率較低。對(duì)復(fù)制進(jìn)程的延遲,多數(shù)可考慮拆分進(jìn)程的辦法解決。
由于每個(gè)復(fù)制進(jìn)程可以單獨(dú)處理一個(gè)SCHEMA,也可以處理某幾張表的集合,也可以處理某一張表的某一個(gè)范圍,要根據(jù)業(yè)務(wù)的特點(diǎn)選擇合適的拆分粒度。
3.2 盡量避免全表掃描
如果要同步的數(shù)據(jù)表沒(méi)有主鍵、唯一鍵和唯一索引,這樣在做OGG同步時(shí)會(huì)進(jìn)行全表掃描。為了盡可能降低OGG的同步工作量,可以添加KEYCOLS參數(shù)。
KEYCOLS參數(shù)的使用示例如下:
TABLE hr.emp,KEYCOLS(FIRST_ NAME,LAST_NAME,DOB,ID_NO);
MAP hr.emp,TARGET hr.emp2,KEYCOLS (FIRST_NAME,LAST_NAME,DOB,ID_NO)。
3.3 合并小事物
如果業(yè)務(wù)系統(tǒng)的操作類型有大量的小事物,則可以考慮使用GROUPTRANSOPS參數(shù),此參數(shù)可以把多個(gè)小事物合并成一個(gè)大事物進(jìn)行提交,提高REPLICAT進(jìn)程的性能。ROUPTRANSOPS參數(shù)的原理如圖1所示。

圖1 GROUPTRANSOPS參數(shù)的原理
3.4 使用BATCHSQL進(jìn)行批量提交
如果OGG對(duì)實(shí)時(shí)性要求不高,可以考慮使用BATCHSQL參數(shù)進(jìn)行批量同步,從而提高OGG的性能。BATCHSQL這個(gè)參數(shù)是把相同的語(yǔ)句做為一個(gè)批處理,而不是像普通的處理方式,每行語(yǔ)句單獨(dú)提交。
BATCHSQL有2個(gè)主要的參數(shù),定義了多少條語(yǔ)句作為一個(gè)語(yǔ)句提交,格式如下:
batchsql opsperqueue 30000,opsperbatch 30000。
結(jié)合OGG在用電信息采集系統(tǒng)的實(shí)際運(yùn)行情況以及相關(guān)的運(yùn)維、調(diào)優(yōu)、測(cè)試經(jīng)驗(yàn),分別從抽取進(jìn)程、傳輸進(jìn)程、復(fù)制進(jìn)程對(duì)OGG的性能優(yōu)化方法進(jìn)行了整理匯總,得出以下結(jié)論。
a.需要對(duì)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)特性做深入分析,同時(shí)對(duì)數(shù)據(jù)系統(tǒng)的相關(guān)硬件環(huán)境做細(xì)致調(diào)研,以此為基礎(chǔ)對(duì)OGG參數(shù)和進(jìn)程的部署做合理規(guī)劃。
b.合理的拆分進(jìn)程是解決OGG性能問(wèn)題的主要方法,此外要對(duì)OGG進(jìn)程的同步速度和相關(guān)日志做好監(jiān)控和分析,緊密結(jié)合數(shù)據(jù)特性使用合適的參數(shù)來(lái)解決OGG的同步性能問(wèn)題。
[1] 戴冠平.叱咤風(fēng)云:GoldenGate企業(yè)級(jí)運(yùn)維實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2012.
本文責(zé)任編輯:齊勝濤
Oracle Golden Gate Performance Optimization Methods Based on Electric Energy Data Acquire System
Yang Guoliang1,Dong Jing1,Tang Ruyi2,Liu Jinliang1,Li Xiong3,Zhao Pei2
(1.State Grid Hebei Electric Power Corporation Cangzhou Power Supply Branch,Cangzhou 061000,China; 2.State Grid Hebei Electric Power Corporation,Shijiazhuang 050021,China; 3.NARI Technology Development Co.,Ltd.Electrical Branch,Nanjing 210000,China)
With the constant improvement of the informatization and automation degree of the electric power industry,the efficiency of the data synchronization,copy and distribution among different business systems becomes the problem which practitioners have to face.The Oracle GoldenGate software plays a key role in data synchronization of electric energy data acquire system which has large amount of data and many external business interfaces,and undertakes the obligation of the bottom data acquisition and statistical tasks in power industry.This paper combines the practical operation and maintenance experience of Oracle GoldenGate software,and summarized the performance optimization methods of Oracle GoldenGate.
electric energy data acquire system;Oracle Golden Gate;performance optimization;the synchronization delay
TM76;TP274.2
B
10019898(2017)02 0022 02
20161205
楊國(guó)良(1981-),男,工程師,主要從事用電信息采集系統(tǒng)管理工作。