摘 要:本文針對(duì)民航氣象數(shù)據(jù)的數(shù)據(jù)量大,實(shí)時(shí)性要求高,數(shù)據(jù)類型復(fù)雜的特點(diǎn),從性能管理、空間管理和應(yīng)用優(yōu)化三個(gè)方面闡述了Oracle數(shù)據(jù)庫的管理管理與維護(hù)的優(yōu)化建議與實(shí)施方法。做好的數(shù)據(jù)庫管理與維護(hù)工作,可以有效提高整個(gè)系統(tǒng)運(yùn)行的穩(wěn)定性與可靠性,同時(shí)可以改善系統(tǒng)性能和負(fù)載均衡狀況。
關(guān)鍵詞:數(shù)據(jù)庫;性能管理;空間管理;應(yīng)用優(yōu)化
中圖分類號(hào):TP311.13
建立在Oracle數(shù)據(jù)庫上的民航氣象業(yè)務(wù)系統(tǒng),是當(dāng)今民航氣象數(shù)據(jù)的主流應(yīng)用。隨著我國民航氣象事業(yè)的迅猛發(fā)展,民航氣象研究領(lǐng)域不斷拓寬,氣象數(shù)據(jù)服務(wù)手段和處理能力不足日益凸顯,如何改善民航氣象數(shù)據(jù)庫性能和可用性,是包括系統(tǒng)設(shè)計(jì)、維護(hù)和管理人員的最大挑戰(zhàn)。為了更好地維護(hù)民航氣象系統(tǒng)數(shù)據(jù)庫,必須隨時(shí)了解系統(tǒng)和數(shù)據(jù)庫的運(yùn)行狀況。但由于民航氣象數(shù)據(jù)庫維護(hù)具有一定的復(fù)雜性,增加了維護(hù)工作的難度。數(shù)據(jù)庫管理人員借助相應(yīng)的工具可以迅速、方便的監(jiān)控?cái)?shù)據(jù)庫系統(tǒng)的運(yùn)行。
對(duì)于Oracle數(shù)據(jù)庫的管理,主要包括三方面的內(nèi)容:(1)性能管理,了解當(dāng)前運(yùn)行的Oracle數(shù)據(jù)庫的狀態(tài),發(fā)現(xiàn)數(shù)據(jù)庫性能瓶頸;(2)空間管理,即數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)的調(diào)優(yōu),包括定期檢查數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu),發(fā)現(xiàn)Oracle數(shù)據(jù)庫存儲(chǔ)中的主要問題(如數(shù)據(jù)庫碎片),進(jìn)行碎片重組和數(shù)據(jù)分布以及容量規(guī)劃等;(3)應(yīng)用優(yōu)化,分析對(duì)系統(tǒng)性能影響比較大的SQL語句,調(diào)整SQL語句的執(zhí)行效率。使SQL存取盡可能少的數(shù)據(jù)塊。
1 Oracle數(shù)據(jù)庫的性能管理
Oracle性能管理可以分為兩種類型,主動(dòng)式和被動(dòng)式性能管理。主動(dòng)式性能管理涉及到特定系統(tǒng)實(shí)施初期的設(shè)計(jì)和開發(fā),包括硬件選擇、性能及容量規(guī)劃,海量存儲(chǔ)系統(tǒng)的選擇,I-O子系統(tǒng)配置及優(yōu)化,以及如何對(duì)不同組件進(jìn)行定制,以滿足Oracle數(shù)據(jù)庫和應(yīng)用系統(tǒng)的復(fù)雜要求。
被動(dòng)式性能管理涉及到現(xiàn)有環(huán)境中不同組件的性能評(píng)估、故障排除和Oracle環(huán)境的優(yōu)化。筆者提出了如何進(jìn)行被動(dòng)式性能調(diào)優(yōu)一種方法,以便為Oracle性能優(yōu)化提供必要的指導(dǎo),避免僅通過反復(fù)嘗試的方法進(jìn)行性能優(yōu)化,提高Oracle數(shù)據(jù)庫性能管理效率。
下面列出了Oracle數(shù)據(jù)庫被動(dòng)式性能優(yōu)化工作的一些有效的方法:(1)確定合理的性能優(yōu)化目標(biāo);(2)測(cè)試并記錄當(dāng)前的性能指標(biāo);(3)確定當(dāng)前存在的Oracle數(shù)據(jù)庫性能瓶頸;(4)確定當(dāng)前的操作系統(tǒng)瓶頸;(5)優(yōu)化相關(guān)的組件(應(yīng)用、數(shù)據(jù)庫、I/O、連接OS及其它);(6)跟蹤并實(shí)施變化管理制度;(7)測(cè)試并記錄目前的性能指標(biāo);(8)重復(fù)第3到第7步直至達(dá)到既定的優(yōu)化目標(biāo)。
2 Oracle數(shù)據(jù)庫的空間管理
空間管理是影響數(shù)據(jù)庫性能和穩(wěn)定性的重要因素之一。它主要包括以下四方面的內(nèi)容:(1)定期更新數(shù)據(jù)對(duì)象的空間使用信息。Oracle優(yōu)化器需要利用數(shù)據(jù)字典中的數(shù)據(jù)對(duì)象存儲(chǔ)信息優(yōu)化SQL,因此需要定期更新數(shù)據(jù)對(duì)象的空間使用信息,Oracle在執(zhí)行SQL之前利用優(yōu)化器選擇最優(yōu)的SQL執(zhí)行路徑。Oracle7以后缺省采用基于代價(jià)的優(yōu)化方法,這種方法需要根據(jù)SQL中引用對(duì)象的存儲(chǔ)特性作出優(yōu)化判斷。Oracle為此提供了ANALYZE命令,以分析各種數(shù)據(jù)對(duì)象的空間使用特性;(2)發(fā)現(xiàn)數(shù)據(jù)庫碎片并進(jìn)行碎片重組。一般的數(shù)據(jù)庫在運(yùn)行一段時(shí)間之后,由于數(shù)據(jù)的增、刪、改操作,總會(huì)存在或多或少的碎片,碎片一般包括如下類型:段級(jí)(SEGMENT)碎片:在創(chuàng)建表或索引時(shí),存儲(chǔ)參數(shù)定義的不合理。隨著數(shù)據(jù)的增加,表和索引不得不分配過多的擴(kuò)展塊(EXTENT),結(jié)果導(dǎo)致數(shù)據(jù)對(duì)象存儲(chǔ)的不連續(xù)。塊級(jí)(BLOCK)碎片:數(shù)據(jù)塊內(nèi)的數(shù)據(jù)被刪除或更改,導(dǎo)致數(shù)據(jù)存儲(chǔ)不連續(xù),浪費(fèi)存儲(chǔ)空間和影響存取性能。行遷移:由于數(shù)據(jù)塊內(nèi)沒有足夠的空間存儲(chǔ)塊內(nèi)被修改的數(shù)據(jù),這些數(shù)據(jù)不得不遷移到其他數(shù)據(jù)塊存儲(chǔ),導(dǎo)致數(shù)據(jù)存儲(chǔ)不連續(xù)。索引樹失衡:一段時(shí)間的增、刪、改操作后,B*TREE索引樹葉子深度不一,導(dǎo)致索引不能提供最佳存取路徑;(3)數(shù)據(jù)分布。數(shù)據(jù)分布將需要同時(shí)存取的數(shù)據(jù),如表及其索引,分別存放在不同的磁盤上,可以讓多個(gè)磁盤共同分擔(dān)總的I/O,提高系統(tǒng)的性能。數(shù)據(jù)分布可以很好地減少磁盤I/O總的等待時(shí)間。但很多應(yīng)用信息系統(tǒng)在建立時(shí)疏忽了這樣的要求,結(jié)果大量的數(shù)據(jù)被放在同一個(gè)磁盤上,導(dǎo)致磁盤I/O不平衡。隨著數(shù)據(jù)量的逐漸增加,影響將逐漸增大。而此時(shí)完成數(shù)據(jù)分布的難度很大;(4)空間使用管理和容量規(guī)劃。Oracle數(shù)據(jù)庫空間管理的一個(gè)重要課題是如何避免數(shù)據(jù)增長引起的數(shù)據(jù)庫穩(wěn)定性問題。例如,當(dāng)一個(gè)表所分配的所有空間被占滿后,Oracle需要為這個(gè)表分配新區(qū)域(Extent),但如果這個(gè)表所在的表空間剩余空間不夠,或由于表空間碎片太多而沒有連續(xù)自由空間時(shí),會(huì)出現(xiàn)穩(wěn)定性問題??臻g管理可以減少對(duì)系統(tǒng)性能和可靠性的影響,減少數(shù)據(jù)庫管理員的工作負(fù)荷,并保證獲得最新的統(tǒng)計(jì)數(shù)據(jù)。用戶還可以通過空間管理產(chǎn)生的報(bào)告了解數(shù)據(jù)庫統(tǒng)計(jì)分析的狀態(tài)。
3 Oracle數(shù)據(jù)庫的應(yīng)用優(yōu)化
從統(tǒng)計(jì)的角度看,80%的Oracle系統(tǒng)性能問題可以通過SQL代碼優(yōu)化來解決。任何應(yīng)用優(yōu)化的過程,不外乎是索引優(yōu)化、全表掃描、并行機(jī)制改進(jìn)和選擇正確數(shù)據(jù)組合方法的過程。這正是要達(dá)到最佳應(yīng)用性能所必須考慮的因素。沒有SQL的優(yōu)化,就無法實(shí)現(xiàn)高性能的應(yīng)用。良好的SQL語句可以減少CPU資源的消耗,提高響應(yīng)速度。同時(shí),優(yōu)化后的SQL語句還可以提高應(yīng)用的可擴(kuò)展性。
以下是一些已知與例程優(yōu)化關(guān)系最密切的一些核心Oracle初始化參數(shù)。它們都會(huì)影響Oracle及SGA區(qū)的活動(dòng)。任何對(duì)這些參數(shù)的改動(dòng),在實(shí)施到生產(chǎn)環(huán)境之前,都必須進(jìn)行測(cè)試。一旦改變了生產(chǎn)環(huán)境的參數(shù),就必須對(duì)相關(guān)的Oracle動(dòng)態(tài)性能指標(biāo)和操作系統(tǒng)的性能進(jìn)行監(jiān)測(cè)。(1)DB_BLOCK_SIZE。該參數(shù)在數(shù)據(jù)庫建立前設(shè)定,決定了數(shù)據(jù)庫中每個(gè)數(shù)據(jù)塊的大小。只有重新建立數(shù)據(jù)庫,才有可能改變?cè)搮?shù)。調(diào)整該參數(shù)值可以確保Oracle獲得最佳I/O性能,同時(shí)不會(huì)由于冗余或不必要的I/O,給I/O子系統(tǒng)帶來壓力;(2)DB_BLOCK_BUFFERS。該參數(shù)決定了SGA區(qū)數(shù)據(jù)庫緩沖區(qū)中的塊數(shù)量。由于這是Oracle讀取和寫入的區(qū)域,它的不正確配置會(huì)引起嚴(yán)重的I/O性能問題。這一參數(shù)設(shè)置過大,也會(huì)引起整個(gè)系統(tǒng)的內(nèi)存不足,引起操作系統(tǒng)過多的讀寫操作;(3)SHARED_POOL_SIZE。該參數(shù)按字節(jié)數(shù)設(shè)定,定義了SGA中共享區(qū)的大小。該組件的大小嚴(yán)重依賴于應(yīng)用的類型(即該應(yīng)用是重用SQL,還是生成動(dòng)態(tài)SQL,等等)。同時(shí)它也取決于同步用戶的數(shù)量,以及實(shí)例是否被配置成支持多線程服務(wù)器(MTS)。如果該應(yīng)用采用了MTS配置,則共享區(qū)應(yīng)該明顯增加,因?yàn)楣鈽?biāo)狀態(tài)和用戶進(jìn)程數(shù)據(jù)等程序全局區(qū)域(PGA)都被置入了共享區(qū)。
4 結(jié)束語
數(shù)據(jù)庫管理員肩負(fù)保證數(shù)據(jù)庫數(shù)據(jù)資源完整的責(zé)任,要根據(jù)業(yè)務(wù)需求,建立、維護(hù)和管理相關(guān)的數(shù)據(jù)備份。民航氣象數(shù)據(jù)庫是一個(gè)功能完善、可擴(kuò)展和靈活的航空氣象服務(wù)綜合系統(tǒng),良好的管理可以提高民航氣象業(yè)務(wù)服務(wù)效率,改進(jìn)航空氣象服務(wù)質(zhì)量,靈活應(yīng)對(duì)日益變化的航空氣象服務(wù)要求,提高航空氣象服務(wù)的安全保障能力。
參考文獻(xiàn):
[1]韓金濤.機(jī)場(chǎng)跑道視程自動(dòng)觀測(cè)系統(tǒng)的維護(hù)[A].首屆氣象儀器與觀測(cè)技術(shù)交流和研討會(huì)學(xué)術(shù)論文集[C],2001.
[2]羅瑞明.Oracle數(shù)據(jù)庫的性能優(yōu)化方法研究[J].信息安全與技術(shù),2012(05).
作者簡介:劉鈺(1982-),女,山東蓬萊人,助理工程師,計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)士學(xué)位,研究方向:民航氣象設(shè)備的管理與維護(hù)。
作者單位:民航東北地區(qū)空中交通管理局氣象中心,沈陽 110043