專利名稱:檢測數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,具體涉及檢測數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的方法及裝置。
背景技術(shù):
Oracle真正應(yīng)用集群(RAC,Real Application Cluster)概念的引入是為了提高系統(tǒng)的高可用性,通過集群軟件加共享存儲的方式實(shí)現(xiàn)容災(zāi)。由于各實(shí)例(instance)公用物理存儲,但各自又有獨(dú)立的內(nèi)存結(jié)構(gòu),因此需要實(shí)時地同步分配一些資源。在某些異常情況下會引起節(jié)點(diǎn)性能惡劣,嚴(yán)重情況下導(dǎo)致數(shù)據(jù)庫掛起(HANG)。在其中某個節(jié)點(diǎn)出現(xiàn)性能耗盡丟失響應(yīng)的情況下,會導(dǎo)致節(jié)點(diǎn)間資源同步掛起,影響整個數(shù)據(jù)庫的正常運(yùn)行,進(jìn)而導(dǎo)致業(yè)務(wù)系統(tǒng)無法提供服務(wù)。此時就需要做出迅速準(zhǔn)確的判斷,對問題節(jié)點(diǎn)實(shí)行緊急關(guān)閉終止(shutdown abort)操作,應(yīng)用程序方面通過配置透明應(yīng)用程序故障轉(zhuǎn)移(TAF,Transparent Application Failover)可以實(shí)現(xiàn)業(yè)務(wù)無縫切換,在數(shù)據(jù)庫單點(diǎn)故障時實(shí)現(xiàn)業(yè)務(wù)零中斷。但目前沒有相應(yīng)成熟的技術(shù)解決方案,通常依賴于人工檢查判斷后再作進(jìn)一步操作。目前常見檢測RAC數(shù)據(jù)庫節(jié)點(diǎn)運(yùn)行狀況的方法有以下幾種一、利用 crs_stat、crsctl check crs、ps_ef、ping、sar 等常規(guī)系統(tǒng)命令,手工逐一排查各個問題疑似點(diǎn)。如果某方面存在異常,則進(jìn)行進(jìn)一步的日志抓取分析。由于常規(guī)系統(tǒng)命令產(chǎn)生結(jié)果較為專業(yè),可讀性不強(qiáng),且各種系統(tǒng)日志分布較為分散,導(dǎo)致實(shí)際操作效率較低。二、利用 v$session_wait、v$sysstat、v$cache_transfer 等系統(tǒng)視圖,結(jié)合 AWRsnapshots、ADDM report來檢查各種性能指標(biāo),并根據(jù)維護(hù)管理人員的個人經(jīng)驗(yàn)進(jìn)行人為判斷。這種方法難以有一個相對合理的標(biāo)準(zhǔn)來作為依據(jù)以供判斷,對問題的定位存在很大的不確定性。三、利用oracle提供的專業(yè)診斷工具,如oradebug、hanganalyze等對數(shù)據(jù)庫內(nèi)存段進(jìn)行轉(zhuǎn)儲(dump),根據(jù)產(chǎn)生的trace文件來進(jìn)行底層分析。這種方法最為低效,需要oracle專業(yè)開發(fā)人員才能分析。綜合以上各種常規(guī)技術(shù)手段,在單節(jié)點(diǎn)數(shù)據(jù)庫性能產(chǎn)生異常狀況時,數(shù)據(jù)庫維護(hù)管理人員只能通過簡單的監(jiān)控點(diǎn)告警捕捉、登陸系統(tǒng)檢查、問題定位分析等流程來進(jìn)行。傳統(tǒng)意義上的解決方法時效性差,從發(fā)現(xiàn)問題到定位解決問題往往需要耗時30分鐘以上,給客戶帶來很差的體驗(yàn)感知。且問題的判斷分析與管理維護(hù)人員的個人主觀能力有很大關(guān)系,無法做到標(biāo)準(zhǔn)化、專業(yè)化。顯然無法滿足電信級在線事務(wù)處理(0LTP,On-LineTransaction Processing)系統(tǒng)的大型業(yè)務(wù)請求。隨著信息化系統(tǒng)發(fā)展的加快以及集群系統(tǒng)的大范圍使用,數(shù)據(jù)庫系統(tǒng)規(guī)模及復(fù)雜程度呈現(xiàn)日益增長的趨勢,特別是對于電信、金融等重要行業(yè)的數(shù)據(jù)中心,其核心業(yè)務(wù)系統(tǒng)的交互響應(yīng)實(shí)時性很高。一旦數(shù)據(jù)庫系統(tǒng)某個節(jié)點(diǎn)出現(xiàn)異常狀況,再根據(jù)傳統(tǒng)的方法進(jìn)行逐項(xiàng)檢查,準(zhǔn)確性和及時性都很難得到保證。
現(xiàn)有的幾種技術(shù),由于其出發(fā)點(diǎn)均是應(yīng)急處理,故其實(shí)現(xiàn)機(jī)理都存在一定的被動性及盲目性。數(shù)據(jù)庫性能惡劣時,數(shù)據(jù)庫管理員(DBA,Database Administrator)通常不是第一時間獲知的,往往都是應(yīng)用維護(hù)人員或是開發(fā)人員發(fā)現(xiàn)業(yè)務(wù)感知或是業(yè)務(wù)處理受到影響報(bào)告給DBA。此時數(shù)據(jù)庫一般已經(jīng)處于停止響應(yīng)或者響應(yīng)極度緩慢或是HANG狀態(tài),造成大面積的業(yè)務(wù)受到影響,而不能有效地快速發(fā)現(xiàn)性能問題,進(jìn)而采取進(jìn)一步的處理措施。因此,原有的幾項(xiàng)技術(shù)要點(diǎn)只是單純地、片面地進(jìn)行一些信息搜集和簡單的性能判斷,對于復(fù)雜的、需要快速響應(yīng)的OLTP大規(guī)模數(shù)據(jù)庫系統(tǒng),顯然已經(jīng)無法滿足。除了一些特定明顯的系統(tǒng)錯誤信息之外,對于其他數(shù)據(jù)庫節(jié)點(diǎn)運(yùn)行健康狀況的評估,很大程度上取決于維護(hù)人員的經(jīng)驗(yàn)判斷,無法做到標(biāo)準(zhǔn)化實(shí)施。
發(fā)明內(nèi)容
本發(fā)明提供檢測數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的方法及裝置,以實(shí)現(xiàn)對oracle RAC數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的自動、實(shí)時檢測。 本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種檢測數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的方法,該方法包括對于任一 oracle真正應(yīng)用集群RAC數(shù)據(jù)庫節(jié)點(diǎn),在每個采樣周期內(nèi),抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的活躍會話狀態(tài),根據(jù)該活躍會話狀態(tài)計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比;判斷所述異常等待會話占比是否大于預(yù)設(shè)第一閾值,若是,判斷該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話,若存在,判定該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)為不健康節(jié)點(diǎn),繼續(xù)判斷該數(shù)據(jù)庫節(jié)點(diǎn)是否已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn),若是,對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作。所述計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比包括統(tǒng)計(jì)該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)正常執(zhí)行的活躍會話數(shù)En、空閑等待的活躍會話數(shù)Iw、異常等待的活躍會話數(shù)Wt ;計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比P(Wt)
權(quán)利要求
1.一種檢測數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的方法,其特征在于,該方法包括 對于任一 oracle真正應(yīng)用集群RAC數(shù)據(jù)庫節(jié)點(diǎn),在每個采樣周期內(nèi),抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的活躍會話狀態(tài),根據(jù)該活躍會話狀態(tài)計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比; 判斷所述異常等待會話占比是否大于預(yù)設(shè)第一閾值,若是,判斷該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話,若存在,判定該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)為不健康節(jié)點(diǎn),繼續(xù)判斷該數(shù)據(jù)庫節(jié)點(diǎn)是否已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn),若是,對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比包括 統(tǒng)計(jì)該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)正常執(zhí)行的活躍會話數(shù)En、空閑等待的活躍會話數(shù)Iw、異常等待的活躍會話數(shù)Wt; 計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比P(Wt)WtP(Wt)=-* 100%。
En + Iw + Wt
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,當(dāng)所述數(shù)據(jù)庫節(jié)點(diǎn)屬于高并發(fā)在線事務(wù)處理OLTP系統(tǒng)時,所述第一閾值的取值為90% ; 當(dāng)所述數(shù)據(jù)庫節(jié)點(diǎn)屬于數(shù)據(jù)分析決策支持系統(tǒng)DSS時,所述第一閾值的取值為85%。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述當(dāng)判定所述異常等待會話占比大于預(yù)設(shè)第一閾值后,進(jìn)一步包括 計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的最嚴(yán)重等待會話的每秒平均數(shù)A(Ms)A(Ms) =Msn/第一時長,其中,Msn為該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的最嚴(yán)重等待會話數(shù); 判斷A(Ms) >13是否成立,若是,執(zhí)行所述判斷該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話的動作,其中,b為預(yù)設(shè)第二閾值。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述在每個采樣周期內(nèi),抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的活躍會話狀態(tài)進(jìn)一步包括抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的全局隊(duì)列等待數(shù)GEwn ; 計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的全局隊(duì)列等待占比P(GEw) p (GEw)=GEwn/GEn,其中,GEn為該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的全局隊(duì)列總數(shù); 且,當(dāng)判定所述異常等待會話占比大于預(yù)設(shè)第一閾值后,進(jìn)一步包括 判斷P(GEw) > c是否成立,若是,執(zhí)行所述判斷該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話的動作,其中,c為預(yù)設(shè)第三閾值。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述在每個采樣周期內(nèi),抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的活躍會話狀態(tài)進(jìn)一步包括抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的全局緩存交互等待量GCwn ; 計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的全局緩存交互等待占比P(GCw) p (GCw)=GCwn/A (GC), 其中,A(GC)為該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的全局緩存交互平均值,A(GC)=第二時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的全局緩存交互量/第二時長; 且,當(dāng)判定所述異常等待會話占比大于預(yù)設(shè)第一閾值后,進(jìn)一步包括 判斷P (GCw) > d是否成立,若是,執(zhí)行所述判斷該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話的動作,其中,d為預(yù)設(shè)第四閾值。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述當(dāng)判定該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)存在最嚴(yán)重等待會話后,進(jìn)一步包括 計(jì)算當(dāng)前塊延遲BRL,判斷BRL > e是否成立,若是,執(zhí)行所述判斷該數(shù)據(jù)庫節(jié)點(diǎn)是否已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn)的動作,其中,e為預(yù)設(shè)第五閾值。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,當(dāng)所述數(shù)據(jù)庫為OLTP系統(tǒng)時,所述e的取值為5ms。
9.根據(jù)權(quán)利要求I所述的方法,其特征在于,當(dāng)判定該數(shù)據(jù)庫節(jié)點(diǎn)已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn)后,進(jìn)一步包括 判斷該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話是否已經(jīng)自我恢復(fù),若否,執(zhí)行所述對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作的動作;否則,不執(zhí)行所述對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作的動作。
10.一種檢測數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的裝置,其特征在于,該裝置包括 活躍會話狀態(tài)檢測模塊在每個采樣周期內(nèi),抓取最近第一時長內(nèi)本oracle RAC數(shù)據(jù)庫節(jié)點(diǎn)的活躍會話狀態(tài),將該活躍會話狀態(tài)發(fā)送給異常會話分析模塊; 異常會話分析模塊接收所述活躍會話狀態(tài),根據(jù)該活躍會話狀態(tài)計(jì)算當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比,將該異常等待會話占比和當(dāng)前采樣周期內(nèi)是否存在最嚴(yán)重等待會話信息發(fā)送給健康檢測模塊; 健康檢測模塊接收所述異常等待會話占比和是否存在最嚴(yán)重等待會話信息,判斷該異常等待會話占比是否大于預(yù)設(shè)第一閾值,若是,判斷所述是否存在最嚴(yán)重會話信息是否指示當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)存在最嚴(yán)重等待會話,若存在,判定當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)為不健康節(jié)點(diǎn),繼續(xù)判斷該數(shù)據(jù)庫節(jié)點(diǎn)是否已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn),若是,對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述異常會話分析模塊進(jìn)一步用于,計(jì)算當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的最嚴(yán)重等待會話的每秒平均數(shù)A(Ms),將A(Ms)發(fā)送給健康檢測模塊; 所述健康檢測模塊進(jìn)一步用于,在判定異常等待會話占比大于預(yù)設(shè)第一閾值后,判斷所述A(Ms) >13是否成立,若是,執(zhí)行所述判斷當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話的動作,其中,b為預(yù)設(shè)第二閾值。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置進(jìn)一步包括全局隊(duì)列監(jiān)控模塊,用于在每個采樣周期內(nèi),抓取最近第一時長內(nèi)本oracleRAC數(shù)據(jù)庫節(jié)點(diǎn)的的全局隊(duì)列等待數(shù)GEwn,計(jì)算當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的全局隊(duì)列等待占比p(GEw),將P (GEw)發(fā)送給健康檢測模塊; 且,所述健康檢測模塊進(jìn)一步用于,當(dāng)判定所述異常等待會話占比大于預(yù)設(shè)第一閾值后,判斷P(GEw) > (是否成立,若是,執(zhí)行所述判斷當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話的動作,其中,c為預(yù)設(shè)第三閾值。
13.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置進(jìn)一步包括全局緩存監(jiān)控模塊,用于在每個采樣周期內(nèi),抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的全局緩存交互等待量GCwn,計(jì)算當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前實(shí)例的全局緩存交互等待占比p(GCw),將P (GCw)發(fā)送給健康檢測模塊; 且,所述健康檢測模塊進(jìn)一步用于,當(dāng)判定所述異常等待會話占比大于預(yù)設(shè)第一閾值后,判斷P(GCw) > d是否成立,若是,執(zhí)行所述判斷當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話的動作,其中,d為預(yù)設(shè)第四閾值。
14.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置進(jìn)一步包括BRL檢測模塊,用于計(jì)算BRL,將BRL發(fā)送給健康檢測模塊; 且,所述健康檢測模塊進(jìn)一步用于,當(dāng)判定當(dāng)前采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)存在最嚴(yán)重 等待會話后,判斷BRL > e是否成立,若是,執(zhí)行所述判斷該數(shù)據(jù)庫節(jié)點(diǎn)是否已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn)的動作,其中,e為預(yù)設(shè)第五閾值。
15.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述健康檢測模塊進(jìn)一步用于,當(dāng)判定該數(shù)據(jù)庫節(jié)點(diǎn)已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn)后,判斷該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話是否已經(jīng)自我恢復(fù),若否,執(zhí)行所述對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作的動作;否則,不執(zhí)行所述對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作的動作。
全文摘要
本發(fā)明公開了檢測數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的方法及裝置。方法包括對于任一oracle RAC數(shù)據(jù)庫節(jié)點(diǎn),在每個采樣周期內(nèi),抓取最近第一時長內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的活躍會話狀態(tài),根據(jù)該活躍會話狀態(tài)計(jì)算該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)的異常等待會話占比;判斷所述異常等待會話占比是否大于預(yù)設(shè)第一閾值,若是,判斷該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)是否存在最嚴(yán)重等待會話,若存在,判定該采樣周期內(nèi)該數(shù)據(jù)庫節(jié)點(diǎn)為不健康節(jié)點(diǎn),繼續(xù)判斷該數(shù)據(jù)庫節(jié)點(diǎn)是否已連續(xù)預(yù)設(shè)數(shù)目個采樣周期被判定為不健康節(jié)點(diǎn),若是,對該數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行關(guān)閉終止操作。本發(fā)明實(shí)現(xiàn)了對oracle RAC數(shù)據(jù)庫節(jié)點(diǎn)健康狀況的自動實(shí)時檢測。
文檔編號G06F17/30GK102982037SQ20111026084
公開日2013年3月20日 申請日期2011年9月5日 優(yōu)先權(quán)日2011年9月5日
發(fā)明者王曉征, 肖愛元 申請人:中國移動通信集團(tuán)浙江有限公司