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