最近某客戶現場一套12C的RAC在一天內出現多次librarycache lock,cursor:pinSwait on X,enq:TX-rowlock contention異常等待事件,通過介入針對數據庫會話進行kill后,數據庫等待事件恢復正常。
詳細分析過程如下:
一、通過查看故障時間點awr報告存在sql頻繁解析失敗,導致大量硬解析
節(jié)點2,15:00-16:00,awr報告sql解析和硬解析占用大量db_time 節(jié)點2,18:00-19:00,awr報告sql解析和硬解析占用大量db_time 節(jié)點2,22:00-22:53,awr報告sql解析和硬解析占用大量db_time 故障時間點ash報告中存在未執(zhí)行成功sql 節(jié)點2,22:15-22:20存在未執(zhí)行成功sql |
二、通過檢查節(jié)點1,2都發(fā)生過sharepool抖動,另外從故障時間點(22:00-22:53)采集節(jié)點2的ADDM報告可以看出主要集中在SharedPool Latches的競爭。
節(jié)點1:share pool自動調整 節(jié)點2:share pool自動調整 另外從故障時間點(22:00-22:53)采集節(jié)點2的ADDM報告可以看出主要集中在Shared Pool Latches的競爭。 |
三、在故障發(fā)生過程中,發(fā)現系統(tǒng)存在自動任務調起的情況(自動統(tǒng)計信息收集,自動分段顧問),因為自動統(tǒng)計信息收集發(fā)起導致cursor失效,sql需要重新解析,這也是故障原因之一。
檢查發(fā)現目前數據庫已開啟如下自動任務如下: 任務說明: 1、自動優(yōu)化器統(tǒng)計收集:為所有方案對象收集陳舊的或缺少的統(tǒng)計數據,所收集的統(tǒng)計信息將被用來提高SQL的執(zhí)行的性能,任務名是"autooptimizer stats collection" 2、自動分段顧問:標識數據庫中的段是否有可以回收的空間,并以此信息統(tǒng)計為基礎做出怎樣整理段的碎片以節(jié)約空間。也可以手動的執(zhí)行此job來獲取最新的建議信息,或者獲取自動段advisor 不檢測的但又可以回收的段的信息,任務名是"auto space advisor" 3、自動SQL調整顧問:自動標識并嘗試調整高負載的SQL,任務名是"sqltuning advisor"。 4、ORACLE_OCM用戶主要是用于Oracle配置管理器,當發(fā)出SR請求時,它和數據庫實例配置相聯系,把配置信息發(fā)送給Oracle供分析。 通過檢查故障時間點前后范圍ash報告,在故障前22:05:00-22:15:00,(故障發(fā)生時間為22:16分),自動優(yōu)化器統(tǒng)計收集和自動分段顧問都自動調度起來。 |
數據庫在開啟10035后發(fā)現后臺有未執(zhí)行成功的SQL。
啟用10035事件
Altersystem set events 10035 trace name context forever,level 1;
關閉10035事件
Altersystem set events 10035 trace name context off;
注:
開啟10035事件抓取解析失敗sql不能作為日常項來開展,此類sql均是因為sql語法錯誤,訪問對象不存在或字段缺失等原因導致,
應用應該上線前應該做好評審把控,做好功能測試(這類報錯往往功能測試都是通不過的),將此類問題sql控制在源頭,扎好上線的口袋;
長期開啟10035事件有以下兩點不利因素:
1、數據庫開啟10035并不是一種日常維護手段。
2、10035事件會將解析失敗的語句信息寫入數據庫alert,易造成錯誤信息刷屏,增加了數據庫目錄撐爆的風險,以及日常巡檢維護難度。
總結:
首先是應用發(fā)起的SQL解析失敗及硬解析導致cursor。然后統(tǒng)計信息收集導致部分cursor失效,從而加重了SQL解析壓力。sharedpool本來剩余空間就有點不足了,所以壓力一來就會grow,但是在dbcache空間不能及時釋放出來的,sharedpool grow失敗的情況下,更加加重了sharedpool閂鎖的競爭。
建議如下:
1、協(xié)助應用整改未執(zhí)行成功sql。
2、目前數據庫兩個節(jié)點sharepool頻繁調整,將sharepool size 從10G調整至15G。
alter system set shared_pool_size=15G scope=spfile; |
3、關閉autospace advisor,sqltuningadvisor(已關閉理賠庫該參數)和oracle_ocm相關job及調整autooptimizerstats collection調度時間。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/130061.html
Oracle數據庫4031故障分析 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; m...
摘要:命令行方式獲取顯示當前的用戶操作。類似于的可以監(jiān)控所有慢的以及不慢的查詢。以及其他第三方鏈接性能調優(yōu)場景現實的首頁我們希望現實最近發(fā)布的條。自動刪除舊文檔為了給新文檔創(chuàng)建空間,在集合中自動刪除老舊的文檔,不需要執(zhí)行額外的腳本和操作。 轉載請注明出處 http://www.paraller.com 原文排版地址 http://www.paraller.com/2016/10/22/m...
摘要:清楚了以上流程,我們直接來看函數主要用作初始化應用監(jiān)聽端口以及啟動。其中就是保存聊天室所有聊天消息的結構。關于的解讀我會放到閱讀源碼時講。然后把消息加到緩存里,如果緩存大于限制則取最新的條消息。 tornado 源碼自帶了豐富的 demo ,這篇文章主要分析 demo 中的聊天室應用: chatdemo 首先看 chatdemo 的目錄結構: ├── chatdemo.py ├── ...
閱讀 1493·2023-01-11 13:20
閱讀 1851·2023-01-11 13:20
閱讀 1289·2023-01-11 13:20
閱讀 2041·2023-01-11 13:20
閱讀 4242·2023-01-11 13:20
閱讀 2948·2023-01-11 13:20
閱讀 1581·2023-01-11 13:20
閱讀 3853·2023-01-11 13:20