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