秦士兵
(重慶市電力公司信息通信分公司 ,重慶 400014)
傳統(tǒng)數(shù)據(jù)庫管理依靠數(shù)據(jù)庫管理員來完成,數(shù)據(jù)庫管理員的職責(zé)如下:
(1)定時對數(shù)據(jù)庫的運行狀態(tài),日志文件,備份情況,數(shù)據(jù)庫空間使用情況,系統(tǒng)資源使用情況進行檢查,發(fā)現(xiàn)并解決問題;(2)每周對數(shù)據(jù)庫對象的空間擴展情況,數(shù)據(jù)增長情況進行監(jiān)控,對數(shù)據(jù)庫做健康檢查,對數(shù)據(jù)庫對象的狀態(tài)做檢查;(3)每月對表、索引、約束、作業(yè)等數(shù)據(jù)庫對象進行分析,檢查表空間碎片,尋找數(shù)據(jù)庫性能調(diào)整的機會,進行數(shù)據(jù)庫性能調(diào)整,提出下一步空間管理計劃。對數(shù)據(jù)庫狀態(tài)進行一次全面檢查。
這樣的管理對數(shù)據(jù)庫明顯存在以下局限性:一是雖然目前各種數(shù)據(jù)庫產(chǎn)品本身提供了大量功能強大的性能監(jiān)控和調(diào)試工具,如0RACLE的OEM、Performance Manager、capacity Planer 等來幫助數(shù)據(jù)庫管理員對數(shù)據(jù)庫性能進行調(diào)整、優(yōu)化,但是精通掌握這些工具并能通過這些工具來有效地分析數(shù)據(jù)庫性能狀態(tài),進而合理地配置數(shù)據(jù)庫以調(diào)整其性能十分困難;二是數(shù)據(jù)庫維護管理被動,數(shù)據(jù)庫管理依賴數(shù)據(jù)庫管理員的責(zé)任心和能力,數(shù)據(jù)庫能否穩(wěn)定運行和健壯性取決于管理員的態(tài)度;三是數(shù)據(jù)庫日常性能、異常診斷不及時。
針對這種情況.本文提出了數(shù)據(jù)庫監(jiān)控系統(tǒng),實現(xiàn)數(shù)據(jù)庫主動監(jiān)控和維護,系統(tǒng)通過對數(shù)據(jù)庫進行日常性能監(jiān)控、每月性能評估、數(shù)據(jù)庫審計、異常診斷及時發(fā)現(xiàn)問題和解決問題。為數(shù)據(jù)庫管理員提供了管理和維護數(shù)據(jù)庫的輔助工具,提高了數(shù)據(jù)庫管理員的工作效率。為數(shù)據(jù)庫每天24小時不間斷運行提供了有力保障。提前預(yù)判斷數(shù)據(jù)庫性能臆患,增強數(shù)據(jù)庫的健壯性,確保業(yè)務(wù)系統(tǒng)持續(xù)不斷地運行。
數(shù)據(jù)庫監(jiān)控系統(tǒng),通過創(chuàng)建遠程數(shù)據(jù)庫鏈的方式與被監(jiān)控的數(shù)據(jù)庫建立連接,通過數(shù)據(jù)庫作業(yè)調(diào)度的方式.定期從被監(jiān)控的數(shù)據(jù)庫中采集各類監(jiān)控指標信息,并存人數(shù)據(jù)庫監(jiān)控服務(wù)器的數(shù)據(jù)庫中。系統(tǒng)結(jié)構(gòu)如圖l所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
(1)建立遠程數(shù)據(jù)庫鏈
數(shù)據(jù)庫監(jiān)控系統(tǒng)與多個被監(jiān)控的數(shù)據(jù)庫建立連接,向被監(jiān)控數(shù)據(jù)庫中寫入測試數(shù)據(jù),從被監(jiān)控數(shù)據(jù)庫中獲取需要的監(jiān)控信息,在數(shù)據(jù)庫監(jiān)控系統(tǒng)中采用建立遠程敦據(jù)庫鏈的方式實現(xiàn)。對于頻繁使用的遠程數(shù)據(jù)庫的連接,建立遠程數(shù)據(jù)庫鏈(database links)指定連接所使用的連接描述器,也可以指定遠程數(shù)據(jù)庫連接的用戶名。當(dāng)遠程數(shù)據(jù)庫鏈被一個SQL語句所指時,它將在遠程數(shù)據(jù)庫中打開一個會話并在那執(zhí)行SQL語句,然后返回數(shù)據(jù)。
(2)采用數(shù)據(jù)庫作業(yè)調(diào)度實現(xiàn)信息采集數(shù)據(jù)庫監(jiān)控系統(tǒng)需要定期從被監(jiān)控數(shù)據(jù)庫中獲取監(jiān)控指標信息,是個周而復(fù)始自動執(zhí)行的循環(huán)過程,在數(shù)據(jù)庫監(jiān)控系統(tǒng)中采用0racle數(shù)據(jù)庫的作業(yè)調(diào)度方式宴現(xiàn)自動執(zhí)行信息采集過程。
作業(yè)指定了要執(zhí)行的動作以及執(zhí)行動作的時間。要執(zhí)行的動作可以是SQL語句PL/SQL代碼塊、PL/SQL存儲過程、JAVA存儲過程、外部過程或者在服務(wù)器文件系統(tǒng)中儲存的任何可執(zhí)行文件(既可以是二進制可執(zhí)行文件。也可以是外殼腳本)。執(zhí)行動作的時間指定了啟動作業(yè)時的時間標記以及用于今后運行的重復(fù)時間間隔。
(3)依據(jù)MPI(Memory Performance Index)內(nèi)存性能評估指數(shù)對數(shù)據(jù)庫內(nèi)存性能進行綜合評估。
系統(tǒng)使用內(nèi)存性能指數(shù)(MPI Memory Performance Index),作為數(shù)據(jù)庫內(nèi)存的使用和分配情況的晴雨表,對數(shù)據(jù)庫的內(nèi)存性能進行綜合評分,根據(jù)綜合評分的高低判斷數(shù)據(jù)庫的運行狀態(tài)。
下表列出了MPI中的各項指數(shù)。
表1 MPI中的各項指數(shù)表
3.1 實現(xiàn)數(shù)據(jù)庫日常監(jiān)控
通過登記數(shù)據(jù)庫鏈創(chuàng)建語句和測試表創(chuàng)建語句。在被監(jiān)控數(shù)據(jù)庫的SYSTEM用戶中,手工創(chuàng)建數(shù)據(jù)庫鏈和測試表,實現(xiàn)記錄被監(jiān)控數(shù)據(jù)庫的基本信息。系統(tǒng)每隔5秒鐘對被監(jiān)控的數(shù)據(jù)庫進行一次寫入測試,通過測試結(jié)果判斷被監(jiān)控的數(shù)據(jù)庫是否正常運行。系統(tǒng)每隔10秒鐘檢測一下表空間的變化情況并計算表空間使用率。建立庫緩存命中率(共享池),存放SQL語句或PL/SQL塊、包、存儲過程對象及執(zhí)行計劃等,避免對SQL語句的重新解析。建立數(shù)據(jù)字典緩沖區(qū)總的命中率(共享池)顯示了對數(shù)據(jù)字典和其他對象的內(nèi)存讀操作的百分比,當(dāng)數(shù)據(jù)字典緩沖區(qū)總的命中率<90%時,就要加大SHARED_POOL_SIZE的值。進行內(nèi)存和磁盤排序(PGA內(nèi)存進程全局區(qū)),用戶的排序可在內(nèi)存中執(zhí)行也可在磁盤上執(zhí)行,用以顯示在內(nèi)存中排序占總排序的百分比。通過查看SGA的分配情況(SGA內(nèi)存系統(tǒng)全局區(qū))其中:Fixed Size :oracle的不同平臺和不同版本下可能不一樣,但對于確定環(huán)境是一個固定值,里面存儲了SGA各部分組件的信息,可以看作引導(dǎo)建立SGA的區(qū)域。
3.2 實現(xiàn)數(shù)據(jù)庫性能評估
首先定義數(shù)據(jù)庫內(nèi)存性能評分標準,根據(jù)數(shù)據(jù)庫內(nèi)存性能評分標準計算數(shù)據(jù)庫性能得分。如果如果評分MPI指數(shù)得分小于100分,表明數(shù)據(jù)庫內(nèi)存性能很差,需要優(yōu)化數(shù)據(jù)庫和調(diào)整數(shù)據(jù)庫參數(shù)。
3.3 數(shù)據(jù)庫審計
實現(xiàn)直觀查看數(shù)據(jù)文件狀態(tài)功能,如果狀態(tài)為AVAILABLE,表示數(shù)據(jù)文件正常。如果狀態(tài)為UNAVAILABLE,表示數(shù)據(jù)文件不正常,數(shù)據(jù)文件不正常將不能對數(shù)據(jù)文件中的數(shù)據(jù)進行增加、刪除、修改和查詢操作,需要查明原因。檢查數(shù)據(jù)庫死鎖情況 ,當(dāng)兩個事務(wù)需要一組有沖突的鎖,而不能將事務(wù)繼續(xù)下去的話,就出現(xiàn)死鎖,需要殺掉長期沒有釋放非正常的鎖。檢查不起作用的約束,如果無效的數(shù)據(jù)庫對象也業(yè)務(wù)系統(tǒng)有關(guān),則要查明原因,否則影響業(yè)務(wù)系統(tǒng)的運行。檢查無效的數(shù)據(jù)庫對象,如果無效的數(shù)據(jù)庫觸發(fā)器也業(yè)務(wù)系統(tǒng)有關(guān),則要查明原因,否則影響業(yè)務(wù)系統(tǒng)運行。查找使用CPU多的用戶會話,當(dāng)數(shù)據(jù)庫性能降低時,需要查看使用CPU多的用戶會話,具體分析哪個客戶端機器的程序影響了數(shù)據(jù)庫服務(wù)器CPU性能。
圖2 數(shù)據(jù)庫寫入統(tǒng)計圖
3.4 統(tǒng)計分析
數(shù)據(jù)庫寫入測試月統(tǒng)計,按月統(tǒng)計寫入測試總次數(shù)、寫入測試正常次數(shù)和寫入測試正常率。根據(jù)寫入測試正常率可以分析數(shù)據(jù)庫的穩(wěn)定性。如圖2所示。表空間增長情況月統(tǒng)計,分析數(shù)據(jù)庫中數(shù)據(jù)量大變化情況,如果表空間在某個月增長很多,需要查明原因。有可能是錄入的業(yè)務(wù)數(shù)據(jù)量比較大,也有可能是數(shù)據(jù)庫異常引起,需要區(qū)別對待。
系統(tǒng)改變了傳統(tǒng)的數(shù)據(jù)庫管理和維護方式,變被動維護為主動維護,通過對數(shù)據(jù)庫進行日常性能監(jiān)控、每月性能評估、數(shù)據(jù)庫審計、異常診斷及時發(fā)現(xiàn)隱患問題和解決問題,將數(shù)據(jù)庫隱患消滅在萌芽狀態(tài)。系統(tǒng)通過運行后,多次提前發(fā)現(xiàn)業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫由于表空間快速增長,系統(tǒng)性能下降等問題,確保了公司業(yè)務(wù)系統(tǒng)持續(xù)不斷地運行。
系統(tǒng)降低了數(shù)據(jù)庫管理員的工作強度,提高了數(shù)據(jù)庫管理員的工作效率,通過數(shù)據(jù)庫監(jiān)控系統(tǒng)可以及時發(fā)現(xiàn)和解決數(shù)據(jù)庫的各種小問題,預(yù)判斷數(shù)據(jù)庫性能隱患,避免數(shù)據(jù)庫發(fā)生災(zāi)害性故障。通過數(shù)據(jù)庫監(jiān)控系統(tǒng)可以增強數(shù)據(jù)庫的健康性,確保業(yè)務(wù)系統(tǒng)持續(xù)不斷地運行。提高工作效率和服務(wù)質(zhì)量。
[1]魏雄俊.數(shù)據(jù)庫技術(shù)在電力系統(tǒng)中的應(yīng)用,2008-05-03.
[2]趙自剛.建立電力系統(tǒng)故障數(shù)據(jù)庫的基本構(gòu)想,2000-05-30.