三封報警郵件的分析(r6筆記第95天)
今天收到3封報警郵件,從郵件內容中的報警情況來看,還是比較反常的。需要引起關注,找到原因處理。
這個庫是一個歷史庫,庫中的資料非常龐大,幾十億資料的表還是有好幾個。但是訪問頻率很低,一般到歷史庫中所做的歷史資料分析查詢需求還是要少很多。
報警郵件如下,可以看到DB time的閥值還是很高的。
#郵件1
[DB監控系統][email protected]_報警
ZABBIX-監控系統:
------------------------------------
報警內容: DB time is too high
------------------------------------
報警級別: PROBLEM
------------------------------------
監控專案: DBtime:1403 %
------------------------------------
報警時間:2015.10.21-05:09:35
##郵件2
ZABBIX-監控系統:
------------------------------------
報警內容: DB time is too high
------------------------------------
報警級別: PROBLEM
------------------------------------
監控專案: DBtime:1403 %
------------------------------------
報警時間:2015.10.21-05:19:35
#郵件3
ZABBIX-監控系統:
-------------------------------
監控專案: DBtime_447 %
------------------------------------
主機名稱:[email protected]
------------------------------------
恢復時間:2015.10.21-05:29:38
通過這三封郵件可以看到,問題持續了有近20分鐘,然後恢復正常。
那麼這種抖動通過快照級的資料情況來看,還是可以體現出明顯的浮動。
Current Instance
~~~~~~~~~~~~~~~~
DBID DB_NAME INST_NUM INST_NAME
---------- --------- ---------- ----------------
2534640677 testdb2 1 testdb2
DB_NAME BEGIN_SNAP END_SNAP SNAPDATE LVL DURATION_MINS DBTIME
--------- ---------- ---------- -------------------- ---------- ------------- ----------
testdb2 45336 45337 21 Oct 2015 00:00 1 30 0
45337 45338 21 Oct 2015 00:30 1 30 0
45338 45339 21 Oct 2015 01:00 1 30 0
45339 45340 21 Oct 2015 01:30 1 30 4
45340 45341 21 Oct 2015 02:00 1 30 40
45341 45342 21 Oct 2015 02:31 1 30 30
45342 45343 21 Oct 2015 03:00 1 29 31
45343 45344 21 Oct 2015 03:30 1 30 31
45344 45345 21 Oct 2015 04:00 1 30 31
45345 45346 21 Oct 2015 04:30 1 30 31
45346 45347 21 Oct 2015 05:00 1 30 131
45347 45348 21 Oct 2015 05:30 1 30 0
45348 45349 21 Oct 2015 06:00 1 30 3
通過下面的圖可以看到,在凌晨的時候,不只報警的時間點存在大量的等待時間,主要等待時間為multiblock read,而且持續時間還是幾個小時。
可見還是存在著大量的讀操作,相對來說還是比較高的。
鑑於此,基本可以推斷可以是sql級的原因導致的,先抓取一個報告,看看在問題時間段裡,哪些sql佔用了大量的DB time
ksh showsnapsql.sh 45347
SNAP_ID SQL_ID EXECUTIONS_DELTA ELAPSED_TI PER_TOTAL
---------- ------------- ---------------- ---------- ----------
45347 b6usrg82hwsa3 1 391s 47%
45347 3rz14z1006jbk 18 290s 35%
45347 53yakkh4cbmp9 3 98s 12%
45347 4yf9vjwa2yg5j 6 9s 1%
45347 04m0jsy80udjp 6 0s 0%
從這個圖可以看出,問題還是比較明顯的,sql_id為b6usrg82hwsa3的語句佔用了大量的DB time.
那麼來看看是怎麼樣的一條sql語句,抓取下來看到竟然是一個後臺job.
SQL_FULLTEXT
----------------------------------------------------------------------------------------------------
call dbms_stats.gather_database_stats_job_proc ( )