一條報警資訊的快速處理和分析
下午的時候收到這麼一條報警。
如果透過AWR來定位很可能捕捉不到這個抖動,而且把AWR快照的收集頻度降低本身也不能完全解決問題,所以這個時候就需要藉助ASH了。
對於ASH生成報告而言,我對於裡面需要設定的時間格式深惡痛絕,所以在很早之前就做了簡單定製,手工輸入兩個時間戳,還可以靈活調整範圍,很快就定位到了一條語句。
可以看到在時間範圍內的SQL基本都是從Orabbix端觸發的,而這裡有一條語句引起了我的注意。
其它的語句都是查詢資料字典的資訊,而藍色部分標示的這條語句一看就是應用層面的。檢視執行計劃,馬上就明白了原委。
這條語句做了全表掃描,因為資料量巨大,所以執行效率低下,而且同時啟用了並行,所以相對來看執行效率還可以,但是由此可見系統層面的資源消耗會非常大。
所以問題又來了,為什麼全表掃描,啟用了並行,怎麼會有66個並行會話。看這個語句似乎也沒有什麼Hint的痕跡。
那麼這個問題的原因就更加容易定位了。
SQL> select degree,table_name from dba_tables where table_name='TEST_VIP_NEW' and owner='TEST’;
DEGREE TABLE_NAME
-------------------- ------------------------------
32 TEST_VIP_NEW
可以透過這個配置看出並行度為32,所以問題的原因就馬上可以定位出來了。
現在的問題是這個語句存在效能問題,一方面會導致大量的資源耗費,二來執行時間也相對比較長,為什麼這個大的表執行效率會如此差呢,問題的方向應該在於索引,排除了其它的因素,發現這個表的資料千萬級,存在幾個索引,但是唯獨這個語句where條件中的欄位不存在相關的索引,而這個問題可以進一步分析和檢視,其實就是根據rank=0,grade=0來得到結果集,從執行計劃可以看出這個結果集非常大,其實就算是得到了對應CN列值,本身處理起來也是一個很龐大的工程。所以這個語句從應用層面來看也是存在問題。而另外一個就是並行度,這個表的並行度有些太高,可以適當做一個調整,同時結合起來和開發同學做進一步的確認。我想這個問題在監控體系之內應該是不會報警了。
ZABBIX-監控系統:
------------------------------------
報警內容: Too many parallel sessions on xxxxx_xx機房_xxxxx
------------------------------------
報警級別: PROBLEM
------------------------------------
監控專案: parallel_session_cnt:66
------------------------------------
報警時間:2016.08.22-17:27:54
這個報警的意思是並行會話數達到了66個。已經遠超出了閾值。
如果透過AWR來定位很可能捕捉不到這個抖動,而且把AWR快照的收集頻度降低本身也不能完全解決問題,所以這個時候就需要藉助ASH了。
對於ASH生成報告而言,我對於裡面需要設定的時間格式深惡痛絕,所以在很早之前就做了簡單定製,手工輸入兩個時間戳,還可以靈活調整範圍,很快就定位到了一條語句。
可以看到在時間範圍內的SQL基本都是從Orabbix端觸發的,而這裡有一條語句引起了我的注意。
其它的語句都是查詢資料字典的資訊,而藍色部分標示的這條語句一看就是應用層面的。檢視執行計劃,馬上就明白了原委。
這條語句做了全表掃描,因為資料量巨大,所以執行效率低下,而且同時啟用了並行,所以相對來看執行效率還可以,但是由此可見系統層面的資源消耗會非常大。
所以問題又來了,為什麼全表掃描,啟用了並行,怎麼會有66個並行會話。看這個語句似乎也沒有什麼Hint的痕跡。
那麼這個問題的原因就更加容易定位了。
SQL> select degree,table_name from dba_tables where table_name='TEST_VIP_NEW' and owner='TEST’;
DEGREE TABLE_NAME
-------------------- ------------------------------
32 TEST_VIP_NEW
可以透過這個配置看出並行度為32,所以問題的原因就馬上可以定位出來了。
現在的問題是這個語句存在效能問題,一方面會導致大量的資源耗費,二來執行時間也相對比較長,為什麼這個大的表執行效率會如此差呢,問題的方向應該在於索引,排除了其它的因素,發現這個表的資料千萬級,存在幾個索引,但是唯獨這個語句where條件中的欄位不存在相關的索引,而這個問題可以進一步分析和檢視,其實就是根據rank=0,grade=0來得到結果集,從執行計劃可以看出這個結果集非常大,其實就算是得到了對應CN列值,本身處理起來也是一個很龐大的工程。所以這個語句從應用層面來看也是存在問題。而另外一個就是並行度,這個表的並行度有些太高,可以適當做一個調整,同時結合起來和開發同學做進一步的確認。我想這個問題在監控體系之內應該是不會報警了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2123826/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一條細小的報警簡訊的處理
- 兩條報警資訊的分析(第一篇)
- 一條簡單的報警資訊發現的oracle bugOracle
- 一條看似平常的報警郵件所做的分析
- 一條關於swap爭用的報警郵件分析(一)
- 一個慢查詢報警的簡單處理
- 一條關於swap爭用的報警郵件分析
- 基於報警處理的補充
- 一次歸檔報錯的處理和分析
- 一條關於swap爭用的報警郵件分析(二)
- 富士變頻器OC報警故障的維修處理方法
- oracle 中 alert 報警日誌過大的處理方法Oracle
- 備庫報警郵件的分析案例(一)
- 多對一處理 和一對多處理的處理
- 一封備庫報警郵件的分析
- CSAPP =2= 資訊的表示和處理APP
- WEB安全漏洞掃描與處理(下)——安全報告分析和漏洞處理Web
- 三封報警郵件的分析
- 第二章:資訊的表示和處理
- 運輸計劃和處理的前提條件
- alert日誌中的一條ora警告資訊的分析
- doxygen 宏定義/宏編譯/條件編譯/預處理/預編譯 不處理、忽略條件、分析所有條件、滿足所有條件的方法編譯
- 備庫報警郵件的分析案例(二)
- 備庫報警郵件的分析案例(三)
- Dart函式、類和運算子-處理資訊Dart函式
- 印表機列印出現橫條紋怎麼處理 印表機出現一條一條的橫紋
- DG報錯的處理
- 道路千萬條,安全第一條——一次伺服器被入侵的處理經過伺服器
- 資訊的表示和處理 及 CS:APP 15213 datalabAPP
- 一則備庫CPU報警的思考
- 如何快速處理線上故障
- 處理鎖住的統計資訊
- 快速和慢速的 if 語句:現代處理器的分支預測
- pinpoint-docker開啟郵件報警和整合釘釘報警推送Docker
- rails gem報錯的處理AI
- C語言的本質(20)——預處理之二:條件預處理和包含標頭檔案C語言
- 分析索引快速獲取索引資訊索引
- 處理VM的一種特殊方法和思路